Lines Matching refs:ids
36 unsigned mdb_midl_search( MDB_IDL ids, MDB_ID id )
39 * binary search of id in ids
46 unsigned n = ids[0];
51 val = CMP( ids[cursor], id );
72 int mdb_midl_insert( MDB_IDL ids, MDB_ID id )
76 x = mdb_midl_search( ids, id );
84 if ( x <= ids[0] && ids[x] == id ) {
90 if ( ++ids[0] >= MDB_IDL_DB_MAX ) {
92 --ids[0];
97 for (i=ids[0]; i>x; i--)
98 ids[i] = ids[i-1];
99 ids[x] = id;
108 MDB_IDL ids = malloc((num+2) * sizeof(MDB_ID));
109 if (ids) {
110 *ids++ = num;
111 *ids = 0;
113 return ids;
116 void mdb_midl_free(MDB_IDL ids)
118 if (ids)
119 free(ids-1);
124 MDB_IDL ids = *idp;
125 if (*(--ids) > MDB_IDL_UM_MAX &&
126 (ids = realloc(ids, (MDB_IDL_UM_MAX+2) * sizeof(MDB_ID))))
128 *ids++ = MDB_IDL_UM_MAX;
129 *idp = ids;
147 MDB_IDL ids = *idp;
148 num += ids[0];
149 if (num > ids[-1]) {
151 if (!(ids = realloc(ids-1, num * sizeof(MDB_ID))))
153 *ids++ = num - 2;
154 *idp = ids;
161 MDB_IDL ids = *idp;
163 if (ids[0] >= ids[-1]) {
166 ids = *idp;
168 ids[0]++;
169 ids[ids[0]] = id;
175 MDB_IDL ids = *idp;
177 if (ids[0] + app[0] >= ids[-1]) {
180 ids = *idp;
182 memcpy(&ids[ids[0]+1], &app[1], app[0] * sizeof(MDB_ID));
183 ids[0] += app[0];
189 MDB_ID *ids = *idp, len = ids[0];
191 if (len + n > ids[-1]) {
194 ids = *idp;
196 ids[0] = len + n;
197 ids += len;
199 ids[n--] = id++;
223 mdb_midl_sort( MDB_IDL ids )
230 ir = (int)ids[0];
236 a = ids[j];
238 if (ids[i] >= a) break;
239 ids[i+1] = ids[i];
241 ids[i+1] = a;
248 MIDL_SWAP(ids[k], ids[l+1]);
249 if (ids[l] < ids[ir]) {
250 MIDL_SWAP(ids[l], ids[ir]);
252 if (ids[l+1] < ids[ir]) {
253 MIDL_SWAP(ids[l+1], ids[ir]);
255 if (ids[l] < ids[l+1]) {
256 MIDL_SWAP(ids[l], ids[l+1]);
260 a = ids[l+1];
262 do i++; while(ids[i] > a);
263 do j--; while(ids[j] < a);
265 MIDL_SWAP(ids[i],ids[j]);
267 ids[l+1] = ids[j];
268 ids[j] = a;
283 unsigned mdb_mid2l_search( MDB_ID2L ids, MDB_ID id )
286 * binary search of id in ids
293 unsigned n = (unsigned)ids[0].mid;
298 val = CMP( id, ids[cursor].mid );
318 int mdb_mid2l_insert( MDB_ID2L ids, MDB_ID2 *id )
322 x = mdb_mid2l_search( ids, id->mid );
329 if ( x <= ids[0].mid && ids[x].mid == id->mid ) {
334 if ( ids[0].mid >= MDB_IDL_UM_MAX ) {
340 ids[0].mid++;
341 for (i=(unsigned)ids[0].mid; i>x; i--)
342 ids[i] = ids[i-1];
343 ids[x] = *id;
349 int mdb_mid2l_append( MDB_ID2L ids, MDB_ID2 *id )
352 if (ids[0].mid >= MDB_IDL_UM_MAX) {
355 ids[0].mid++;
356 ids[ids[0].mid] = *id;