gft_bmap.h
Go to the documentation of this file.
1 
2 #ifndef _GFT_BMAP_H_
3 #define _GFT_BMAP_H_
4 
5 #include "gft_common.h"
6 
7 
8 namespace gft{
12  namespace BMap{
13 
19  typedef struct _bmap {
20  char *data;
21  int N, VN;
22  } BMap;
23 
24  BMap *Create(int n);
25  void Destroy(BMap **b);
26  void Copy(BMap *dest, BMap *src);
27  void Fill(BMap *b, int value);
28 
29  inline int Get(BMap *b, int p){
30  return ((b->data[p>>3]&(1<<(p&0x07)))!=0);
31  }
32 
33  inline void Set(BMap *b, int p, int value){
34  if(value) b->data[p>>3]|=(1<<(p&0x07));
35  else b->data[p>>3]&=((~0)^(1<<(p&0x07)));
36  }
37 
38  inline void Set0(BMap *b, int p){
39  b->data[p>>3]&=((~0)^(1<<(p&0x07)));
40  }
41 
42  inline void Set1(BMap *b, int p){
43  b->data[p>>3]|=(1<<(p&0x07));
44  }
45 
46  inline void Toggle(BMap *b, int p){
47  b->data[p>>3]^=(1<<(p&0x07));
48  }
49 
50 
51  } //end BMap namespace
52 } //end gft namespace
53 
54 #endif
55 
Vector of booleans.
Definition: gft_bmap.h:19
int VN
Definition: gft_bmap.h:21
BMap * Create(int n)
Definition: gft_bmap.cpp:7
void Copy(BMap *dest, BMap *src)
Definition: gft_bmap.cpp:41
void Set1(BMap *b, int p)
Definition: gft_bmap.h:42
void Set0(BMap *b, int p)
Definition: gft_bmap.h:38
Header file for common definitions and function prototypes.
struct gft::BMap::_bmap BMap
Vector of booleans.
void Toggle(BMap *b, int p)
Definition: gft_bmap.h:46
int N
Definition: gft_bmap.h:21
void Destroy(BMap **b)
Definition: gft_bmap.cpp:21
void Set(BMap *b, int p, int value)
Definition: gft_bmap.h:33
void Fill(BMap *b, int value)
Definition: gft_bmap.cpp:36
int Get(BMap *b, int p)
Definition: gft_bmap.h:29
char * data
Definition: gft_bmap.h:20