/** * @brief macros for debug using opencv macros * @author maeda */ #ifndef DEBUG_H #define DEBUG_H #if defined(_DEBUG) && defined(_CXCORE_TYPES_H_) && defined (_CXCORE_ERROR_H_) #define MY_ASSERT( val, state ) if( val ) state // be careful of multiple define #define CVT2CVMAT( src )\ CvMat *mat##src = (CvMat*)src, stub##src;\ if( !CV_IS_MAT(mat##src) ) mat##src = cvGetMat(mat##src, &(stub##src) ) #define MY_SIZE_CHK( src, w, h )\ {\ CVT2CVMAT( src );\ if( mat##src->cols!=h || mat##src->rows!=w ){\ CV_ERROR(CV_StsBadSize, #src" size must be "#w"x"#h);\ }\ } #define MY_CN_CHK( src, nch )\ {\ CVT2CVMAT( src );\ if( CV_MAT_CN(mat##src->type)!=nch ){\ CV_ERROR(CV_BadNumChannels, #src" channels must be "#nch);\ }\ } #define MY_TYPES_EQ( src, dst )\ {\ CVT2CVMAT( src );\ CVT2CVMAT( dst );\ if( !CV_ARE_TYPES_EQ( mat##src, mat##dst ) ){\ CV_ERROR(CV_StsUnmatchedFormats, "");\ }\ } #define MY_CNS_EQ( src, dst )\ {\ CVT2CVMAT( src );\ CVT2CVMAT( dst );\ if( !CV_ARE_CNS_EQ( mat##src, mat##dst ) ){\ CV_ERROR(CV_BadNumChannels, "");\ }\ } #define MY_DEPTHS_EQ( src, dst )\ {\ CVT2CVMAT( src );\ CVT2CVMAT( dst );\ if( !CV_ARE_DEPTHS_EQ( mat##src, mat##dst ) ){\ CV_ERROR(CV_BadDepth, "");\ }\ } #define MY_SIZES_EQ( src, dst )\ {\ CVT2CVMAT( src );\ CVT2CVMAT( dst );\ if( !CV_ARE_SIZES_EQ( mat##src, mat##dst ) ){\ CV_ERROR(CV_StsUnmatchedSizes, "");\ }\ } #else #define MY_ASSERT( val, state ) #define MY_SIZE_CHK( src, w, h ) #define MY_CH_CHK( src, nch ) #define MY_TYPES_EQ( src, dst ) #define MY_CNS_EQ( src, dst ) #define MY_DEPTHS_EQ( src, dst ) #define MY_SIZES_EQ( src, dst ) #endif #endif