Lines Matching full:set

31 	void			*set;
51 aset->set = set_new(nmemb, size);
52 if (aset->set == NULL) {
84 set_free(aset->set);
96 !set_equal(n->set, o->set)) {
107 return set_match(aset->set, asnum) != NULL;
113 struct set_table *set;
115 set = calloc(1, sizeof(*set));
116 if (set == NULL)
122 set->size = size;
123 set->max = nmemb;
124 set->set = calloc(nmemb, set->size);
125 if (set->set == NULL) {
126 free(set);
131 rdemem.aset_size += sizeof(*set);
132 rdemem.aset_size += set->size * set->max;
133 return set;
137 set_free(struct set_table *set)
139 if (set == NULL)
142 rdemem.aset_size -= sizeof(*set);
143 rdemem.aset_size -= set->size * set->max;
144 rdemem.aset_nmemb -= set->nmemb;
145 free(set->set);
146 free(set);
150 set_add(struct set_table *set, void *elms, size_t nelms)
155 if (set->max < nelms || set->max - nelms < set->nmemb) {
159 if (set->nmemb >= SIZE_MAX - 4096 - nelms) {
163 for (new_size = set->max; new_size < set->nmemb + nelms; )
166 s = reallocarray(set->set, new_size, set->size);
169 rdemem.aset_size += set->size * (new_size - set->max);
170 set->set = s;
171 set->max = new_size;
174 memcpy((uint8_t *)set->set + set->nmemb * set->size, elms,
175 nelms * set->size);
176 set->nmemb += nelms;
183 set_get(struct set_table *set, size_t *nelms)
185 *nelms = set->nmemb;
186 return set->set;
203 set_prep(struct set_table *set)
205 if (set == NULL)
207 qsort(set->set, set->nmemb, set->size, set_cmp);
215 return bsearch(&asnum, a->set, a->nmemb, a->size, set_cmp);
229 if (memcmp(a->set, b->set, a->nmemb * a->size) != 0)
235 set_nmemb(const struct set_table *set)
237 return set->nmemb;