support -X option in rpmmd2solv, make add_autopattern available in bindings
[platform/upstream/libsolv.git] / src / bitmap.h
index a08451b..5784e6c 100644 (file)
  *
  */
 
-#ifndef SATSOLVER_BITMAP_H
-#define SATSOLVER_BITMAP_H
+#ifndef LIBSOLV_BITMAP_H
+#define LIBSOLV_BITMAP_H
 
 #include <string.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef struct _Map {
   unsigned char *map;
   int size;
 } Map;
 
 #define MAPZERO(m) (memset((m)->map, 0, (m)->size))
+/* set all bits */
+#define MAPSETALL(m) (memset((m)->map, 0xff, (m)->size))
 /* set bit */
 #define MAPSET(m, n) ((m)->map[(n) >> 3] |= 1 << ((n) & 7))
 /* clear bit */
@@ -32,6 +38,9 @@ extern void map_init(Map *m, int n);
 extern void map_init_clone(Map *t, Map *s);
 extern void map_grow(Map *m, int n);
 extern void map_free(Map *m);
+extern void map_and(Map *t, Map *s);
+extern void map_or(Map *t, Map *s);
+extern void map_subtract(Map *t, Map *s);
 
 static inline void map_empty(Map *m)
 {
@@ -41,6 +50,10 @@ static inline void map_set(Map *m, int n)
 {
   MAPSET(m, n);
 }
+static inline void map_setall(Map *m)
+{
+  MAPSETALL(m);
+}
 static inline void map_clr(Map *m, int n)
 {
   MAPCLR(m, n);
@@ -50,4 +63,8 @@ static inline int map_tst(Map *m, int n)
   return MAPTST(m, n);
 }
 
-#endif /* SATSOLVER_BITMAP_H */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LIBSOLV_BITMAP_H */