summaryrefslogtreecommitdiffstats
path: root/debian/htdig/htdig-3.2.0b6/db/qam.h
diff options
context:
space:
mode:
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/db/qam.h')
-rw-r--r--debian/htdig/htdig-3.2.0b6/db/qam.h94
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"