satsolver  0.17.2
bitmap.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2007-2011, Novell Inc.
3  *
4  * This program is licensed under the BSD license, read LICENSE.BSD
5  * for further information
6  */
7 
8 /*
9  * bitmap.h
10  *
11  */
12 
13 #ifndef SATSOLVER_BITMAP_H
14 #define SATSOLVER_BITMAP_H
15 
16 #include <string.h>
17 
18 typedef struct _Map {
19  unsigned char *map;
20  int size;
21 } Map;
22 
23 #define MAPZERO(m) (memset((m)->map, 0, (m)->size))
24 /* set bit */
25 #define MAPSET(m, n) ((m)->map[(n) >> 3] |= 1 << ((n) & 7))
26 /* clear bit */
27 #define MAPCLR(m, n) ((m)->map[(n) >> 3] &= ~(1 << ((n) & 7)))
28 /* test bit */
29 #define MAPTST(m, n) ((m)->map[(n) >> 3] & (1 << ((n) & 7)))
30 
31 extern void map_init(Map *m, int n);
32 extern void map_init_clone(Map *t, Map *s);
33 extern void map_grow(Map *m, int n);
34 extern void map_free(Map *m);
35 
36 static inline void map_empty(Map *m)
37 {
38  MAPZERO(m);
39 }
40 static inline void map_set(Map *m, int n)
41 {
42  MAPSET(m, n);
43 }
44 static inline void map_clr(Map *m, int n)
45 {
46  MAPCLR(m, n);
47 }
48 static inline int map_tst(Map *m, int n)
49 {
50  return MAPTST(m, n);
51 }
52 
53 #endif /* SATSOLVER_BITMAP_H */