]> git.donarmstrong.com Git - biopieces.git/blob - code_c/Maasha/src/inc/bits.h
fixed bug in remove_indels
[biopieces.git] / code_c / Maasha / src / inc / bits.h
1 /* Martin Asser Hansen (mail@maasha.dk) Copyright (C) 2008 - All right reserved */
2
3 #define BITS_IN_BYTE   8
4 #define BYTE_ON      255
5
6 #define BIT0 0            /* 00000000 */
7 #define BIT1 ( 1 << 8 )   /* 10000000 */
8 #define BIT2 ( 1 << 7 )   /* 01000000 */
9 #define BIT3 ( 1 << 5 )   /* 00100000 */
10 #define BIT4 ( 1 << 4 )   /* 00010000 */
11 #define BIT5 ( 1 << 3 )   /* 00001000 */
12 #define BIT6 ( 1 << 2 )   /* 00000100 */
13 #define BIT7 ( 1 << 1 )   /* 00000010 */
14 #define BIT8 1            /* 00000001 */
15
16 /* Bitarray structure */
17 struct _bitarray
18 {
19     size_t  size;      /* size of bitarray in bits. */
20     size_t  bits_on;   /* number of bits set to 'on'. */
21     char   *str;       /* bit string. */
22     size_t  str_size;  /* size of bit string in bytes. */
23     size_t  modulus;   /* number of bits used in last element of str. */
24     char    mask;      /* bit mask to trim length of str. */
25 };
26
27 typedef struct _bitarray bitarray;
28
29 /* Initialize a new bitarray of a given size in bits. */
30 void bitarray_new( bitarray **ba_ppt, size_t size );
31
32 /* Set all bits in bitarray to 'on'. */
33 void bitarray_fill( bitarray *ba_pt );
34
35 /* Set all bits in bitarray to 'off'. */
36 void bitarray_zero( bitarray *ba_pt );
37
38 /* Test if a specific bit in a bitarray is set to 'on'. */
39 bool bitarray_bit_on( bitarray *ba_pt, size_t pos );
40
41 /* Set the bit at a given position in a bitarray to 'on'. */
42 void bitarray_bit_set( bitarray *ba_pt, size_t pos );
43
44 /* Debug function to print a bitarray. */
45 void bitarray_print( bitarray *ba_pt );
46
47 /* Deallocate memory for bitarray. */
48 void bitarray_destroy( bitarray **ba_ppt );
49