pivot =
n>> 1;
48cursor = base + pivot + 1;
49 val=
CMP( ids[cursor],
id);
54}
else if(
val> 0 ) {
82 if( x <= ids[0] && ids[x] ==
id) {
95 for(
i=ids[0];
i>x;
i--)
96ids[
i] = ids[
i-1];
135idn = realloc(idn, (*idn + num + 2) *
sizeof(
MDB_ID));
148num = (num + num/4 + (256 + 2)) & -256;
149 if(!(ids = realloc(ids-1, num *
sizeof(
MDB_ID))))
161 if(ids[0] >= ids[-1]) {
175 if(ids[0] + app[0] >= ids[-1]) {
180memcpy(&ids[ids[0]+1], &app[1], app[0] *
sizeof(
MDB_ID));
189 if(
len+
n> ids[-1]) {
203 MDB_IDold_id, merge_id,
i= merge[0], j = idl[0], k =
i+j, total = k;
207merge_id = merge[
i--];
208 for(; old_id < merge_id; old_id = idl[--j])
218 #define MIDL_SWAP(a,b) { itmp=(a); (a)=(b); (b)=itmp; } 225 int i,j,k,
l,ir,jstack;
233 for(j=
l+1;j<=ir;j++) {
235 for(
i=j-1;
i>=1;
i--) {
236 if(ids[
i] >=
a)
break;
237ids[
i+1] = ids[
i];
241 if(jstack == 0)
break;
242ir = istack[jstack--];
243 l= istack[jstack--];
247 if(ids[
l] < ids[ir]) {
250 if(ids[
l+1] < ids[ir]) {
253 if(ids[
l] < ids[
l+1]) {
260 do i++;
while(ids[
i] >
a);
261 doj--;
while(ids[j] <
a);
268 if(ir-
i+1 >= j-
l) {
270istack[jstack-1] =
i;
273istack[jstack] = j-1;
274istack[jstack-1] =
l;
291 unsigned n= (unsigned)ids[0].mid;
294 unsignedpivot =
n>> 1;
295cursor = base + pivot + 1;
296 val=
CMP(
id, ids[cursor].mid );
301}
else if(
val> 0 ) {
327 if( x <= ids[0].mid && ids[x].mid == id->
mid) {
339 for(
i=(
unsigned)ids[0].mid;
i>x;
i--)
340ids[
i] = ids[
i-1];
354ids[ids[0].
mid] = *id;
void mdb_midl_free(MDB_IDL ids)
Free an IDL.
int mdb_midl_append_list(MDB_IDL *idp, MDB_IDL app)
Append an IDL onto an IDL.
MDB_ID * MDB_IDL
An IDL is an ID List, a sorted array of IDs.
int mdb_midl_need(MDB_IDL *idp, unsigned num)
Make room for num additional elements in an IDL.
void mdb_midl_xmerge(MDB_IDL idl, MDB_IDL merge)
Merge an IDL onto an IDL.
unsigned mdb_mid2l_search(MDB_ID2L ids, MDB_ID id)
Search for an ID in an ID2L.
int mdb_mid2l_append(MDB_ID2L ids, MDB_ID2 *id)
Append an ID2 into a ID2L.
int mdb_mid2l_insert(MDB_ID2L ids, MDB_ID2 *id)
Insert an ID2 into a ID2L.
void mdb_midl_shrink(MDB_IDL *idp)
Shrink an IDL.
unsigned mdb_midl_search(MDB_IDL ids, MDB_ID id)
Search for an ID in an IDL.
MDB_IDL mdb_midl_alloc(int num)
Allocate an IDL.
void mdb_midl_sort(MDB_IDL ids)
Sort an IDL.
int mdb_midl_append_range(MDB_IDL *idp, MDB_ID id, unsigned n)
Append an ID range onto an IDL.
size_t MDB_ID
A generic unsigned ID number.
int mdb_midl_append(MDB_IDL *idp, MDB_ID id)
Append an ID onto an IDL.
static int mdb_midl_grow(MDB_IDL *idp, int num)
unsigned int
A callback function used to compare two keys in a database.
LMDB ID List header file.
static SLJIT_INLINE sljit_ins l(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
An ID2 is an ID/pointer pair.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4