00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 typedef struct _qamdata {
00014 u_int8_t flags;
00015 #define QAM_VALID 0x01
00016 #define QAM_SET 0x02
00017 u_int8_t data[1];
00018 } QAMDATA;
00019
00020 struct __queue; typedef struct __queue QUEUE;
00021 struct __qcursor; typedef struct __qcursor QUEUE_CURSOR;
00022
00023 struct __qcursor {
00024
00025 __DBC_INTERNAL
00026
00027
00028
00029
00030 db_recno_t start;
00031 db_recno_t recno;
00032
00033 u_int32_t flags;
00034 };
00035
00036
00037
00038
00039 struct __queue {
00040 db_pgno_t q_meta;
00041 db_pgno_t q_root;
00042
00043 int re_pad;
00044 u_int32_t re_len;
00045 u_int32_t rec_page;
00046 };
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063 #define CALC_QAM_RECNO_PER_PAGE(dbp) \
00064 (((dbp)->pgsize - sizeof(QPAGE)) / \
00065 ALIGN(((QUEUE *)(dbp)->q_internal)->re_len + \
00066 sizeof(QAMDATA) - SSZA(QAMDATA, data), sizeof(u_int32_t)))
00067
00068 #define QAM_RECNO_PER_PAGE(dbp) (((QUEUE*)(dbp)->q_internal)->rec_page)
00069
00070 #define QAM_RECNO_PAGE(dbp, start, recno) \
00071 (((QUEUE *)(dbp)->q_internal)->q_root \
00072 + (((recno) - (start)) / QAM_RECNO_PER_PAGE(dbp)))
00073
00074 #define QAM_RECNO_INDEX(dbp, pgno, start, recno) \
00075 (((recno) - (start)) - (QAM_RECNO_PER_PAGE(dbp) \
00076 * (pgno - ((QUEUE *)(dbp)->q_internal)->q_root)))
00077
00078 #define QAM_GET_RECORD(dbp, page, index) \
00079 ((QAMDATA *)((u_int8_t *)(page) + \
00080 sizeof(QPAGE) + (ALIGN(sizeof(QAMDATA) - SSZA(QAMDATA, data) + \
00081 ((QUEUE *)(dbp)->q_internal)->re_len, sizeof(u_int32_t)) * index)))
00082
00083
00084
00085
00086 #define QAM_SETFIRST 0x01
00087 #define QAM_SETCUR 0x02
00088
00089 #include "qam_auto.h"
00090 #include "qam_ext.h"