00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __GB_BitArray_h__
00021 #define __GB_BitArray_h__
00022
00023 #include "GB_API.h"
00024
00025 class GB_API GB_BitArray
00026 {
00027 public:
00028 GB_BitArray(int size = 0);
00029 ~GB_BitArray();
00030
00031 void resize(int oldsize, int newsize);
00032
00033 int isSet(unsigned offset, unsigned mask) const
00034 {
00035 return (int)(myBits[offset] & mask);
00036 }
00037 void setBit(unsigned offset, unsigned mask)
00038 {
00039 myBits[offset] |= mask;
00040 }
00041 void clearBit(unsigned offset, unsigned mask)
00042 {
00043 myBits[offset] &= ~mask;
00044 }
00045 void andMask(unsigned offset, unsigned mask)
00046 {
00047 myBits[offset] &= mask;
00048 }
00049 void toggleBit(unsigned offset, unsigned mask)
00050 {
00051 myBits[offset] ^= mask;
00052 }
00053 void setAllBits(int size);
00054 void clearAllBits(int size);
00055 int isAnyBitSet(int size);
00056
00057 void andBits(const GB_BitArray &bits, int size);
00058 void orBits(const GB_BitArray &bits, int size);
00059 void xorBits(const GB_BitArray &bits, int size);
00060 void minus(const GB_BitArray &bits, int size);
00061 void copy(const GB_BitArray &bits, int size);
00062
00063 int isEqual(const GB_BitArray &bits, int size) const;
00064 int anyShared(const GB_BitArray &bits, int size) const;
00065
00066 private:
00067 unsigned *myBits;
00068 };
00069
00070 #endif
00071