23 #ifndef OTAWA_BITSETMANAGER_H_
24 #define OTAWA_BITSETMANAGER_H_
26 #include <elm/types.h>
27 #include <elm/assert.h>
35 inline int size(
void)
const {
return (n + 0x1f) >> 5; }
39 inline void free(
t v)
const {
delete [] v; }
41 inline void add(
t v,
int i)
const { word(v, i) |=
mask(i); }
42 inline void remove(
t v,
int i)
const { word(v, i) &= ~
mask(i); }
43 inline void empty(
t d)
const {
while(d < top(d)) *d++ = 0; }
44 inline void fill(
t d)
const {
while(d < top(d)) *d++ =
word_t(-1); }
45 inline void copy(
t d,
t s)
const {
while(d < top(d)) *d++ = *s++; }
46 inline void join(
t d,
t s)
const {
while(d < top(d)) *d++ |= *s++; }
47 inline void meet(
t d,
t s)
const {
while(d < top(d)) *d++ &= *s++; }
48 inline void diff(
t d,
t s)
const {
while(d < top(d)) *d++ &= ~*s++; }
49 inline bool isEmpty(
t v)
const {
while(v < top(v))
if(*v)
return false;
return true; }
50 inline bool include(
t d,
t s)
const {
while(d < top(d)) {
if((*d | *s) != *d)
return false; d++; s++; }
return true; }
51 inline bool equals(
t d,
t s)
const {
while(d < top(d))
if(*d != *s)
return false;
return true; }
53 inline word_t&
word(
t v ,
int i)
const { ASSERT(i >= 0 && i < n);
return v[i >> 5]; }
54 inline word_t mask(
int i)
const {
return 1 << (i & 0x1f); }
bool isEmpty(t v) const
Definition: BitSetManager.h:49
void free(t v) const
Definition: BitSetManager.h:39
void copy(t d, t s) const
Definition: BitSetManager.h:45
int size(void) const
Definition: BitSetManager.h:35
bool equals(t d, t s) const
Definition: BitSetManager.h:51
bool include(t d, t s) const
Definition: BitSetManager.h:50
word_t * top(t v) const
Definition: BitSetManager.h:36
BitSetManager(int _n)
Definition: BitSetManager.h:37
void add(t v, int i) const
Definition: BitSetManager.h:41
void join(t d, t s) const
Definition: BitSetManager.h:46
int n
Definition: BitSetManager.h:55
Definition: BitSetManager.h:31
bool contains(t v, int i) const
Definition: BitSetManager.h:40
void meet(t d, t s) const
Definition: BitSetManager.h:47
word_t * t
Definition: BitSetManager.h:34
void diff(t d, t s) const
Definition: BitSetManager.h:48
void empty(t d) const
Definition: BitSetManager.h:43
word_t & word(t v, int i) const
Definition: BitSetManager.h:53
t create(void) const
Definition: BitSetManager.h:38
void fill(t d) const
Definition: BitSetManager.h:44
word_t mask(int i) const
Definition: BitSetManager.h:54
t::uint32 word_t
Definition: BitSetManager.h:33