diff --git a/lib/abcesop/eabc/exor.h b/lib/abcesop/eabc/exor.h index 39e81f44d..6a25ccf0a 100644 --- a/lib/abcesop/eabc/exor.h +++ b/lib/abcesop/eabc/exor.h @@ -55,29 +55,34 @@ namespace abc::exorcism { /// MACRO DEFINITIONS /// //////////////////////////////////////////////////////////////////////// -// the number of bits per integer -#define BPI 32 -#define BPIMASK 31 -#define LOGBPI 5 +enum { + // the number of bits per integer + BPI = 32, + BPIMASK = 31, + LOGBPI = 5, -// the maximum number of input variables -#define MAXVARS 1000 + // the maximum number of input variables + MAXVARS = 1000, -// the number of cubes that are allocated additionally -#define ADDITIONAL_CUBES 33 + // the number of cubes that are allocated additionally + ADDITIONAL_CUBES = 33, -// the factor showing how many cube pairs will be allocated -#define CUBE_PAIR_FACTOR 20 -// the following number of cube pairs are allocated: -// nCubesAlloc/CUBE_PAIR_FACTOR + // the factor showing how many cube pairs will be allocated + CUBE_PAIR_FACTOR = 20, + // the following number of cube pairs are allocated: + // nCubesAlloc/CUBE_PAIR_FACTOR -#define DIFFERENT 0x55555555 -#define BIT_COUNT(w) (BitCount[(w)&0xffff] + BitCount[(w)>>16]) + DIFFERENT = 0x55555555, +}; -#define VarWord(element) ((element)>>LOGBPI) -#define VarBit(element) ((element)&BPIMASK) +extern unsigned char BitCount[]; -#define TICKS_TO_SECONDS(time) ((float)(time)/(float)(CLOCKS_PER_SEC)) +static inline int BIT_COUNT(int w) { return BitCount[(w)&0xffff] + BitCount[(w)>>16]; } + +static inline int VarWord(int element) { return element>>LOGBPI; } +static inline int VarBit(int element) { return element&BPIMASK; } + +static inline float TICKS_TO_SECONDS(abctime time) { return (float)time/(float)CLOCKS_PER_SEC; } //////////////////////////////////////////////////////////////////////// /// CUBE COVER and CUBE typedefs ///