53 |
* Allocate memory for new idset. |
* Allocate memory for new idset. |
54 |
*/ |
*/ |
55 |
IDSET * |
IDSET * |
56 |
idset_open(size) |
idset_open(unsigned int size) |
|
unsigned int size; |
|
57 |
{ |
{ |
58 |
IDSET *idset = malloc(sizeof(IDSET)); |
IDSET *idset = malloc(sizeof(IDSET)); |
59 |
|
|
73 |
* i) id id number |
* i) id id number |
74 |
*/ |
*/ |
75 |
void |
void |
76 |
idset_add(idset, id) |
idset_add(IDSET *idset, unsigned int id) |
|
IDSET *idset; |
|
|
unsigned int id; |
|
77 |
{ |
{ |
78 |
if (id >= idset->size) |
if (id >= idset->size) |
79 |
die("idset_add: id is out of range."); |
die("idset_add: id is out of range."); |
89 |
* r) true: contains, false: doesn't contain |
* r) true: contains, false: doesn't contain |
90 |
*/ |
*/ |
91 |
int |
int |
92 |
idset_contains(idset, id) |
idset_contains(IDSET *idset, unsigned int id) |
|
IDSET *idset; |
|
|
unsigned int id; |
|
93 |
{ |
{ |
94 |
return (id >= idset->max) ? 0 : |
return (id >= idset->max) ? 0 : |
95 |
(idset->set[id / CHAR_BIT] & (1 << (id % CHAR_BIT))); |
(idset->set[id / CHAR_BIT] & (1 << (id % CHAR_BIT))); |
101 |
* r) number of bits |
* r) number of bits |
102 |
*/ |
*/ |
103 |
int |
int |
104 |
idset_count(idset) |
idset_count(IDSET *idset) |
|
IDSET *idset; |
|
105 |
{ |
{ |
106 |
int id, count = 0; |
int id, count = 0; |
107 |
|
|
114 |
* Free memory for the idset. |
* Free memory for the idset. |
115 |
*/ |
*/ |
116 |
void |
void |
117 |
idset_close(idset) |
idset_close(IDSET *idset) |
|
IDSET *idset; |
|
118 |
{ |
{ |
119 |
free(idset->set); |
free(idset->set); |
120 |
free(idset); |
free(idset); |