diff options
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/db/qam.h')
-rw-r--r-- | debian/htdig/htdig-3.2.0b6/db/qam.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/db/qam.h b/debian/htdig/htdig-3.2.0b6/db/qam.h new file mode 100644 index 00000000..daae17e1 --- /dev/null +++ b/debian/htdig/htdig-3.2.0b6/db/qam.h @@ -0,0 +1,94 @@ +/*- + * See the file LICENSE for redistribution information. + * + * Copyright (c) 1999 + * Sleepycat Software. All rights reserved. + * + * @(#)qam.h 11.7 (Sleepycat) 9/10/99 + */ + +/* + * QAM data elements: a status field and the data. + */ +typedef struct _qamdata { + u_int8_t flags; /* 00: delete bit. */ +#define QAM_VALID 0x01 +#define QAM_SET 0x02 + u_int8_t data[1]; /* Record. */ +} QAMDATA; + +struct __queue; typedef struct __queue QUEUE; +struct __qcursor; typedef struct __qcursor QUEUE_CURSOR; + +struct __qcursor { + /* Per-thread information: queue private. */ + PAGE *page; /* Cursor page. */ + db_recno_t start; /* start record number. */ + db_recno_t recno; /* Current record number. */ + + db_pgno_t pgno; /* Page. */ + db_indx_t indx; /* Page item ref'd by the cursor. */ + + DB_LOCK lock; /* Cursor lock. */ + db_lockmode_t lock_mode; /* Lock mode. */ + + u_int32_t flags; +}; + +/* + * The in-memory, per-tree queue data structure. + */ +struct __queue { + db_pgno_t q_meta; /* Database meta-data page. */ + db_pgno_t q_root; /* Database root page. */ + + int re_pad; /* Fixed-length padding byte. */ + u_int32_t re_len; /* Length for fixed-length records. */ + u_int32_t rec_page; /* records per page */ +}; + +/* + * Caculate the page number of a recno + * + * Number of records per page = + * Divide the available space on the page by the record len + header. + * + * Page number for record = + * divide the physical record number by the records per page + * add the root page number + * For now the root page will always be 1, but we might want to change + * in the future (e.g. multiple fixed len queues per file). + * + * Index of record on page = + * physical record number, less the logical pno times records/page + */ +#define CALC_QAM_RECNO_PER_PAGE(dbp) \ + (((dbp)->pgsize - ALIGN(sizeof(QPAGE), sizeof(u_int32_t))) / \ + ALIGN(((QUEUE *)(dbp)->q_internal)->re_len + \ + sizeof(QAMDATA) - sizeof ((QAMDATA *)0)->data, sizeof(u_int32_t))) + +#define QAM_RECNO_PER_PAGE(dbp) (((QUEUE*)(dbp)->q_internal)->rec_page) + +#define QAM_RECNO_PAGE(dbp, start, recno) \ + (((QUEUE *)(dbp)->q_internal)->q_root \ + + (((recno) - (start)) / QAM_RECNO_PER_PAGE(dbp))) + +#define QAM_RECNO_INDEX(dbp, pgno, start, recno) \ + (((recno) - (start)) - \ + (QAM_RECNO_PER_PAGE(dbp) * \ + (pgno - ((QUEUE *)(dbp)->q_internal)->q_root))) + +#define QAM_GET_RECORD(dbp, page, index) \ + ((QAMDATA *) ((char *)(page) + \ + ALIGN(sizeof(QPAGE), sizeof(u_int32_t)) + \ + (ALIGN(sizeof(QAMDATA) - sizeof ((QAMDATA *)0)->data + \ + ((QUEUE *)(dbp)->q_internal)->re_len, sizeof (u_int32_t)) * index))) + +/* + * Log opcodes for the mvptr routine. + */ +#define QAM_SETFIRST 0x01 +#define QAM_SETCUR 0x02 + +#include "qam_auto.h" +#include "qam_ext.h" |