idset 42 libutil/idset.c #define IS_EMPTY(idset) ((idset)->min == END_OF_ID ? 1 : 0) idset 98 libutil/idset.c IDSET *idset = (IDSET *)check_malloc(sizeof(IDSET)); idset 106 libutil/idset.c idset->set = (unsigned long *)check_calloc(sizeof(unsigned long), (size + LONG_BIT - 1) / LONG_BIT); idset 107 libutil/idset.c idset->size = size; idset 112 libutil/idset.c idset->min = idset->max = idset->lastid = END_OF_ID; idset 113 libutil/idset.c return idset; idset 122 libutil/idset.c idset_empty(IDSET *idset) idset 124 libutil/idset.c return IS_EMPTY(idset); idset 133 libutil/idset.c idset_add(IDSET *idset, unsigned int id) idset 135 libutil/idset.c int empty = IS_EMPTY(idset); idset 137 libutil/idset.c if (id >= idset->size) idset 139 libutil/idset.c idset->set[id / LONG_BIT] |= bit[id % LONG_BIT]; idset 141 libutil/idset.c idset->max = idset->min = id; idset 142 libutil/idset.c else if (id > idset->max) idset 143 libutil/idset.c idset->max = id; idset 144 libutil/idset.c else if (id < idset->min) idset 145 libutil/idset.c idset->min = id; idset 155 libutil/idset.c idset_contains(IDSET *idset, unsigned int id) idset 157 libutil/idset.c if (IS_EMPTY(idset)) idset 159 libutil/idset.c if (id < idset->min || id > idset->max) idset 161 libutil/idset.c return (idset->set[id / LONG_BIT] & bit[id % LONG_BIT]) != 0; idset 171 libutil/idset.c idset_first(IDSET *idset) idset 175 libutil/idset.c return idset->lastid = idset->min; idset 185 libutil/idset.c idset_next(IDSET *idset) idset 190 libutil/idset.c if (IS_EMPTY(idset)) idset 192 libutil/idset.c if (idset->lastid >= idset->max) idset 194 libutil/idset.c limit = idset->max / LONG_BIT + 1; idset 195 libutil/idset.c index0 = idset->lastid / LONG_BIT; idset 196 libutil/idset.c index1 = idset->lastid % LONG_BIT; idset 198 libutil/idset.c if (bit[i] & idset->set[index0]) idset 199 libutil/idset.c return idset->lastid = index0 * LONG_BIT + i; idset 201 libutil/idset.c for (i = index0; i < limit && idset->set[i] == 0; i++) idset 207 libutil/idset.c if (bit[i] & idset->set[index0]) idset 208 libutil/idset.c return idset->lastid = index0 * LONG_BIT + i; idset 218 libutil/idset.c idset_count(IDSET *idset) idset 222 libutil/idset.c for (id = idset_first(idset); id != END_OF_ID; id = idset_next(idset)) idset 230 libutil/idset.c idset_close(IDSET *idset) idset 232 libutil/idset.c free(idset->set); idset 233 libutil/idset.c free(idset);