5
#define BYTE_SIZE_IN_BITS 8
6
#define HALF_BYTE_SIZE 4
7
#define BYTE_SIZE_IN_BITS_2 6
8
#define MASK_FIRST_TWO_MSB_BITS 192U
9
#define MASK_LAST_TWO_LSB_BITS 3U
10
typedef struct _barray_{
11
unsigned char *barray;
13
unsigned char msb_mask;
15
/*Creates and returns a new BArray with the given
17
BitArray *BArrayNew(unsigned long width);
23
*Shift by 2 bits: useful in
24
*manipulating DNA strings
26
void BArrayLShift2(BitArray *, unsigned char);
27
void BArrayRShift2(BitArray *, unsigned char);
28
/*Returns a bit string up-to 8 bits, from
29
*position 'i'. Note if idx+len > width, the
30
*bit register is truncated appropriately.
32
unsigned char BArrayGetBit(BitArray *, unsigned long, unsigned char);
33
void PrintBits(BitArray *);
34
void PrintBitsInByte(unsigned char);
35
void PrintBitString(unsigned char *, unsigned long);
37
/*Reset the bit-array*/
38
void ResetBitArray(BitArray *);