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);