idset              41 libutil/idset.c #define IS_EMPTY(idset)	 ((idset)->min == END_OF_ID ? 1 : 0)
idset              91 libutil/idset.c 	IDSET *idset = (IDSET *)check_malloc(sizeof(IDSET));
idset              99 libutil/idset.c 	idset->set = (unsigned long *)check_calloc(sizeof(unsigned long), (size + LONG_BIT - 1) / LONG_BIT);
idset             100 libutil/idset.c 	idset->size = size;
idset             105 libutil/idset.c 	idset->min = idset->max = idset->lastid = END_OF_ID;
idset             106 libutil/idset.c 	return idset;
idset             115 libutil/idset.c idset_empty(IDSET *idset)
idset             117 libutil/idset.c 	return IS_EMPTY(idset);
idset             126 libutil/idset.c idset_add(IDSET *idset, unsigned int id)
idset             128 libutil/idset.c 	int empty = IS_EMPTY(idset);
idset             130 libutil/idset.c 	if (id >= idset->size)
idset             132 libutil/idset.c 	idset->set[id / LONG_BIT] |= bit[id % LONG_BIT];
idset             134 libutil/idset.c 		idset->max = idset->min = id;
idset             135 libutil/idset.c 	else if (id > idset->max)
idset             136 libutil/idset.c 		idset->max = id;
idset             137 libutil/idset.c 	else if (id < idset->min)
idset             138 libutil/idset.c 		idset->min = id;
idset             148 libutil/idset.c idset_contains(IDSET *idset, unsigned int id)
idset             150 libutil/idset.c 	if (IS_EMPTY(idset))
idset             152 libutil/idset.c 	if (id < idset->min || id > idset->max)
idset             154 libutil/idset.c 	return (idset->set[id / LONG_BIT] & bit[id % LONG_BIT]) != 0;
idset             164 libutil/idset.c idset_first(IDSET *idset)
idset             168 libutil/idset.c 	return idset->lastid = idset->min;
idset             178 libutil/idset.c idset_next(IDSET *idset)
idset             183 libutil/idset.c 	if (IS_EMPTY(idset))
idset             185 libutil/idset.c 	if (idset->lastid >= idset->max)
idset             187 libutil/idset.c 	limit = idset->max / LONG_BIT + 1;
idset             188 libutil/idset.c 	index0 = idset->lastid / LONG_BIT;
idset             189 libutil/idset.c 	index1 = idset->lastid % LONG_BIT;
idset             191 libutil/idset.c 		if (bit[i] & idset->set[index0])
idset             192 libutil/idset.c 			return idset->lastid = index0 * LONG_BIT + i;
idset             194 libutil/idset.c 	for (i = index0; i < limit && idset->set[i] == 0; i++)
idset             200 libutil/idset.c 		if (bit[i] & idset->set[index0])
idset             201 libutil/idset.c 			return idset->lastid = index0 * LONG_BIT + i;
idset             211 libutil/idset.c idset_count(IDSET *idset)
idset             215 libutil/idset.c 	for (id = idset_first(idset); id != END_OF_ID; id = idset_next(idset))
idset             223 libutil/idset.c idset_close(IDSET *idset)
idset             225 libutil/idset.c 	free(idset->set);
idset             226 libutil/idset.c 	free(idset);