?? mvc.h
字號:
#define Mvc_Cube1BitSharp( CubeR, Cube1, Cube2 )\ (((CubeR)->pData[0]) = ((Cube1)->pData[0] & ~((Cube2)->pData[0])))#define Mvc_Cube2BitSharp( CubeR, Cube1, Cube2 )\ ((((CubeR)->pData[0]) = ((Cube1)->pData[0] & ~((Cube2)->pData[0]))),\ (((CubeR)->pData[1]) = ((Cube1)->pData[1] & ~((Cube2)->pData[1]))))#define Mvc_CubeNBitSharp( CubeR, Cube1, Cube2 )\{\ int _i_;\ for (_i_ = (Cube1)->iLast; _i_ >= 0; _i_--)\ (((CubeR)->pData[_i_]) = ((Cube1)->pData[_i_] & ~(Cube2)->pData[_i_]));\} #define Mvc_Cube1BitEmpty( Res, Cube )\ (Res = ((Cube)->pData[0] == 0))#define Mvc_Cube2BitEmpty( Res, Cube )\ (Res = ((Cube)->pData[0] == 0 && (Cube)->pData[1] == 0))#define Mvc_CubeNBitEmpty( Res, Cube )\{\ int _i_; Res = 1;\ for (_i_ = (Cube)->iLast; _i_ >= 0; _i_--)\ if ( (Cube)->pData[_i_] )\ { Res = 0; break; }\}#define Mvc_Cube1BitEqual( Res, Cube1, Cube2 )\ (Res = (((Cube1)->pData[0]) == ((Cube2)->pData[0])))#define Mvc_Cube2BitEqual( Res, Cube1, Cube2 )\ (Res = ((((Cube1)->pData[0]) == ((Cube2)->pData[0])) &&\ (((Cube1)->pData[1]) == ((Cube2)->pData[1]))))#define Mvc_CubeNBitEqual( Res, Cube1, Cube2 )\{\ int _i_; Res = 1;\ for (_i_ = (Cube1)->iLast; _i_ >= 0; _i_--)\ if (((Cube1)->pData[_i_]) != ((Cube2)->pData[_i_]))\ { Res = 0; break; }\}#define Mvc_Cube1BitLess( Res, Cube1, Cube2 )\ (Res = (((Cube1)->pData[0]) < ((Cube2)->pData[0])))#define Mvc_Cube2BitLess( Res, Cube1, Cube2 )\ (Res = ((((Cube1)->pData[0]) < ((Cube2)->pData[0])) ||\ ((((Cube1)->pData[0]) == ((Cube2)->pData[0])) && (((Cube1)->pData[1]) < ((Cube2)->pData[1])))))#define Mvc_CubeNBitLess( Res, Cube1, Cube2 )\{\ int _i_; Res = 1;\ for (_i_ = (Cube1)->iLast; _i_ >= 0; _i_--)\ if (((Cube1)->pData[_i_]) >= ((Cube2)->pData[_i_]))\ { Res = 0; break; }\} #define Mvc_Cube1BitMore( Res, Cube1, Cube2 )\ (Res = (((Cube1)->pData[0]) > ((Cube2)->pData[0])))#define Mvc_Cube2BitMore( Res, Cube1, Cube2 )\ (Res = ((((Cube1)->pData[0]) > ((Cube2)->pData[0])) ||\ ((((Cube1)->pData[0]) == ((Cube2)->pData[0])) && (((Cube1)->pData[1]) > ((Cube2)->pData[1])))))#define Mvc_CubeNBitMore( Res, Cube1, Cube2 )\{\ int _i_; Res = 1;\ for (_i_ = (Cube1)->iLast; _i_ >= 0; _i_--)\ if (((Cube1)->pData[_i_]) <= ((Cube2)->pData[_i_]))\ { Res = 0; break; }\} #define Mvc_Cube1BitNotImpl( Res, Cube1, Cube2 )\ (Res = (((Cube1)->pData[0]) & ~((Cube2)->pData[0])))#define Mvc_Cube2BitNotImpl( Res, Cube1, Cube2 )\ (Res = ((((Cube1)->pData[0]) & ~((Cube2)->pData[0])) ||\ (((Cube1)->pData[1]) & ~((Cube2)->pData[1]))))#define Mvc_CubeNBitNotImpl( Res, Cube1, Cube2 )\{\ int _i_; Res = 0;\ for (_i_ = (Cube1)->iLast; _i_ >= 0; _i_--)\ if (((Cube1)->pData[_i_]) & ~((Cube2)->pData[_i_]))\ { Res = 1; break; }\} #define Mvc_Cube1BitDisjoint( Res, Cube1, Cube2 )\ (Res = ((((Cube1)->pData[0]) & ((Cube2)->pData[0])) == 0 ))#define Mvc_Cube2BitDisjoint( Res, Cube1, Cube2 )\ (Res = (((((Cube1)->pData[0]) & ((Cube2)->pData[0])) == 0 ) &&\ ((((Cube1)->pData[1]) & ((Cube2)->pData[1])) == 0 )))#define Mvc_CubeNBitDisjoint( Res, Cube1, Cube2 )\{\ int _i_; Res = 1;\ for (_i_ = (Cube1)->iLast; _i_ >= 0; _i_--)\ if (((Cube1)->pData[_i_]) & ((Cube2)->pData[_i_]))\ { Res = 0; break; }\} #define Mvc_Cube1BitEqualUnderMask( Res, Cube1, Cube2, Mask )\ (Res = ((((Cube1)->pData[0]) & ((Mask)->pData[0])) == (((Cube2)->pData[0]) & ((Mask)->pData[0]))))#define Mvc_Cube2BitEqualUnderMask( Res, Cube1, Cube2, Mask )\ (Res = (((((Cube1)->pData[0]) & ((Mask)->pData[0])) == (((Cube2)->pData[0]) & ((Mask)->pData[0]))) &&\ ((((Cube1)->pData[1]) & ((Mask)->pData[1])) == (((Cube2)->pData[1]) & ((Mask)->pData[1])))))#define Mvc_CubeNBitEqualUnderMask( Res, Cube1, Cube2, Mask )\{\ int _i_; Res = 1;\ for (_i_ = (Cube1)->iLast; _i_ >= 0; _i_--)\ if ((((Cube1)->pData[_i_]) & ((Mask)->pData[_i_])) != (((Cube2)->pData[_i_]) & ((Mask)->pData[_i_])))\ { Res = 0; break; }\} #define Mvc_Cube1BitEqualOutsideMask( Res, Cube1, Cube2, Mask )\ (Res = ((((Cube1)->pData[0]) | ((Mask)->pData[0])) == (((Cube2)->pData[0]) | ((Mask)->pData[0]))))#define Mvc_Cube2BitEqualOutsideMask( Res, Cube1, Cube2, Mask )\ (Res = (((((Cube1)->pData[0]) | ((Mask)->pData[0])) == (((Cube2)->pData[0]) | ((Mask)->pData[0]))) &&\ ((((Cube1)->pData[1]) | ((Mask)->pData[1])) == (((Cube2)->pData[1]) | ((Mask)->pData[1])))))#define Mvc_CubeNBitEqualOutsideMask( Res, Cube1, Cube2, Mask )\{\ int _i_; Res = 1;\ for (_i_ = (Cube1)->iLast; _i_ >= 0; _i_--)\ if ((((Cube1)->pData[_i_]) | ((Mask)->pData[_i_])) != (((Cube2)->pData[_i_]) | ((Mask)->pData[_i_])))\ { Res = 0; break; }\} #define Mvc_Cube1BitIntersectUnderMask( Res, Cube1, Cube2, Mask)\ (Res = ((((Cube1)->pData[0]) & ((Cube2)->pData[0]) & ((Mask)->pData[0])) > 0))#define Mvc_Cube2BitIntersectUnderMask( Res, Cube1, Cube2, Mask)\ (Res = (((((Cube1)->pData[0]) & ((Cube2)->pData[0]) & ((Mask)->pData[0])) > 0) ||\ ((((Cube1)->pData[1]) & ((Cube2)->pData[1]) & ((Mask)->pData[1])) > 0)))#define Mvc_CubeNBitIntersectUnderMask( Res, Cube1, Cube2, Mask)\{\ int _i_; Res = 0;\ for (_i_ = (Cube1)->iLast; _i_ >= 0; _i_--)\ if (((Cube1)->pData[_i_]) & ((Cube2)->pData[_i_]) & ((Mask)->pData[_i_]))\ { Res = 1; break; }\} // the following macros make no assumption about the cube's bitset size#define Mvc_CubeBitClean( Cube )\ if ( Mvc_Cube1Words(Cube) ) { Mvc_Cube1BitClean( Cube ); }\ else if ( Mvc_Cube2Words(Cube) ) { Mvc_Cube2BitClean( Cube ); }\ else { Mvc_CubeNBitClean( Cube ); }#define Mvc_CubeBitFill( Cube )\ if ( Mvc_Cube1Words(Cube) ) { Mvc_Cube1BitFill( Cube ); }\ else if ( Mvc_Cube2Words(Cube) ) { Mvc_Cube2BitFill( Cube ); }\ else { Mvc_CubeNBitFill( Cube ); }#define Mvc_CubeBitNot( Cube )\ if ( Mvc_Cube1Words(Cube) ) { Mvc_Cube1BitNot( Cube ); }\ else if ( Mvc_Cube2Words(Cube) ) { Mvc_Cube2BitNot( Cube ); }\ else { Mvc_CubeNBitNot( Cube ); }#define Mvc_CubeBitCopy( Cube1, Cube2 )\ if ( Mvc_Cube1Words(Cube1) ) { Mvc_Cube1BitCopy( Cube1, Cube2 ); }\ else if ( Mvc_Cube2Words(Cube1) ){ Mvc_Cube2BitCopy( Cube1, Cube2 ); }\ else { Mvc_CubeNBitCopy( Cube1, Cube2 ); }#define Mvc_CubeBitOr( CubeR, Cube1, Cube2 )\ if ( Mvc_Cube1Words(Cube1) ) { Mvc_Cube1BitOr( CubeR, Cube1, Cube2 ); }\ else if ( Mvc_Cube2Words(Cube1) ){ Mvc_Cube2BitOr( CubeR, Cube1, Cube2 ); }\ else { Mvc_CubeNBitOr( CubeR, Cube1, Cube2 ); }#define Mvc_CubeBitExor( CubeR, Cube1, Cube2 )\ if ( Mvc_Cube1Words(Cube1) ) { Mvc_Cube1BitExor( CubeR, Cube1, Cube2 ); }\ else if ( Mvc_Cube2Words(Cube1) ){ Mvc_Cube2BitExor( CubeR, Cube1, Cube2 ); }\ else { Mvc_CubeNBitExor( CubeR, Cube1, Cube2 ); }#define Mvc_CubeBitAnd( CubeR, Cube1, Cube2 )\ if ( Mvc_Cube1Words(Cube1) ) { Mvc_Cube1BitAnd( CubeR, Cube1, Cube2 ); }\ else if ( Mvc_Cube2Words(Cube1) ){ Mvc_Cube2BitAnd( CubeR, Cube1, Cube2 ); }\ else { Mvc_CubeNBitAnd( CubeR, Cube1, Cube2 ); }#define Mvc_CubeBitSharp( CubeR, Cube1, Cube2 )\ if ( Mvc_Cube1Words(Cube1) ) { Mvc_Cube1BitSharp( CubeR, Cube1, Cube2 ); }\ else if ( Mvc_Cube2Words(Cube1) ){ Mvc_Cube2BitSharp( CubeR, Cube1, Cube2 ); }\ else { Mvc_CubeNBitSharp( CubeR, Cube1, Cube2 ); }#define Mvc_CubeBitEmpty( Res, Cube )\ if ( Mvc_Cube1Words(Cube) ) { Mvc_Cube1BitEmpty( Res, Cube ); }\ else if ( Mvc_Cube2Words(Cube) ) { Mvc_Cube2BitEmpty( Res, Cube ); }\ else { Mvc_CubeNBitEmpty( Res, Cube ); }#define Mvc_CubeBitEqual( Res, Cube1, Cube2 )\ if ( Mvc_Cube1Words(Cube1) ) { Mvc_Cube1BitEqual( Res, Cube1, Cube2 ); }\ else if ( Mvc_Cube2Words(Cube1) ){ Mvc_Cube2BitEqual( Res, Cube1, Cube2 ); }\ else { Mvc_CubeNBitEqual( Res, Cube1, Cube2 ); }#define Mvc_CubeBitLess( Res, Cube1, Cube2 )\ if ( Mvc_Cube1Words(Cube1) ) { Mvc_Cube1BitLess( Res, Cube1, Cube2 ); }\ else if ( Mvc_Cube2Words(Cube1) ){ Mvc_Cube2BitLess( Res, Cube1, Cube2 ); }\ else { Mvc_CubeNBitLess( Res, Cube1, Cube2 ); }#define Mvc_CubeBitMore( Res, Cube1, Cube2 )\ if ( Mvc_Cube1Words(Cube1) ) { Mvc_Cube1BitMore( Res, Cube1, Cube2 ); }\ else if ( Mvc_Cube2Words(Cube1) ){ Mvc_Cube2BitMore( Res, Cube1, Cube2 ); }\ else { Mvc_CubeNBitMore( Res, Cube1, Cube2 ); }#define Mvc_CubeBitNotImpl( Res, Cube1, Cube2 )\ if ( Mvc_Cube1Words(Cube1) ) { Mvc_Cube1BitNotImpl( Res, Cube1, Cube2 ); }\ else if ( Mvc_Cube2Words(Cube1) ){ Mvc_Cube2BitNotImpl( Res, Cube1, Cube2 ); }\ else { Mvc_CubeNBitNotImpl( Res, Cube1, Cube2 ); }#define Mvc_CubeBitDisjoint( Res, Cube1, Cube2 )\ if ( Mvc_Cube1Words(Cube1) ) { Mvc_Cube1BitDisjoint( Res, Cube1, Cube2 ); }\ else if ( Mvc_Cube2Words(Cube1) ){ Mvc_Cube2BitDisjoint( Res, Cube1, Cube2 ); }\ else { Mvc_CubeNBitDisjoint( Res, Cube1, Cube2 ); }#define Mvc_CubeBitEqualUnderMask( Res, Cube1, Cube2, Mask )\ if ( Mvc_Cube1Words(Cube1) ) { Mvc_Cube1BitEqualUnderMask( Res, Cube1, Cube2, Mask ); }\ else if ( Mvc_Cube2Words(Cube1) ){ Mvc_Cube2BitEqualUnderMask( Res, Cube1, Cube2, Mask ); }\ else { Mvc_CubeNBitEqualUnderMask( Res, Cube1, Cube2, Mask ); }#define Mvc_CubeBitEqualOutsideMask( Res, Cube1, Cube2, Mask )\ if ( Mvc_Cube1Words(Cube1) ) { Mvc_Cube1BitEqualOutsideMask( Res, Cube1, Cube2, Mask ); }\ else if ( Mvc_Cube2Words(Cube1) ){ Mvc_Cube2BitEqualOutsideMask( Res, Cube1, Cube2, Mask ); }\ else { Mvc_CubeNBitEqualOutsideMask( Res, Cube1, Cube2, Mask ); }#define Mvc_CubeBitIntersectUnderMask( Res, Cube1, Cube2, Mask )\ if ( Mvc_Cube1Words(Cube1) ) { Mvc_Cube1BitIntersectUnderMask( Res, Cube1, Cube2, Mask ); }\ else if ( Mvc_Cube2Words(Cube1) ){ Mvc_Cube2BitIntersectUnderMask( Res, Cube1, Cube2, Mask ); }\ else { Mvc_CubeNBitIntersectUnderMask( Res, Cube1, Cube2, Mask ); }// managing linked lists#define Mvc_ListAddCubeHead( pList, pCube )\ {\ if ( pList->pHead == NULL )\ {\ Mvc_CubeSetNext( pCube, NULL );\ pList->pHead = pCube;\ pList->pTail = pCube;\ }\ else\ {\ Mvc_CubeSetNext( pCube, pList->pHead );\ pList->pHead = pCube;\ }\ pList->nItems++;\ }#define Mvc_ListAddCubeTail( pList, pCube )\ {\ if ( pList->pHead == NULL )\ pList->pHead = pCube;\ else\ Mvc_CubeSetNext( pList->pTail, pCube );\ pList->pTail = pCube;\ Mvc_CubeSetNext( pCube, NULL );\ pList->nItems++;\ }#define Mvc_ListDeleteCube( pList, pPrev, pCube )\{\ if ( pPrev == NULL )\
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -