]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Update some more forward declarations to use typedef
authorÁlvaro Herrera <alvherre@kurilemu.de>
Thu, 25 Sep 2025 12:33:19 +0000 (14:33 +0200)
committerÁlvaro Herrera <alvherre@kurilemu.de>
Thu, 25 Sep 2025 12:33:19 +0000 (14:33 +0200)
As commit d4d1fc527bdb.

Reviewed-by: Peter Eisentraut <peter@eisentraut.org>
Discussion: https://postgr.es/m/202509191025.22agk3fvpilc@alvherre.pgsql

src/backend/access/table/tableam.c
src/include/access/amapi.h
src/include/access/brin_internal.h
src/include/access/genam.h
src/include/access/heapam.h
src/include/access/tableam.h
src/include/nodes/execnodes.h

index a56c5eceb14ade089522679798dcd62509462e3a..5e41404937eb11b5f0dd9c98edfeb006110304e8 100644 (file)
@@ -110,7 +110,7 @@ table_slot_create(Relation relation, List **reglist)
  */
 
 TableScanDesc
-table_beginscan_catalog(Relation relation, int nkeys, struct ScanKeyData *key)
+table_beginscan_catalog(Relation relation, int nkeys, ScanKeyData *key)
 {
        uint32          flags = SO_TYPE_SEQSCAN |
                SO_ALLOW_STRAT | SO_ALLOW_SYNC | SO_ALLOW_PAGEMODE | SO_TEMP_SNAPSHOT;
index 70949de56ac700d17e2b414b54c1bca3cb935373..2b4482dc1e62b05f44bbb9ddcad6d6f4a3d2610d 100644 (file)
  * AM's implementation isn't concerned with those data structures.  To allow
  * declaring amcostestimate_function here, use forward struct references.
  */
-struct PlannerInfo;
-struct IndexPath;
+typedef struct PlannerInfo PlannerInfo;
+typedef struct IndexPath IndexPath;
 
 /* Likewise, this file shouldn't depend on execnodes.h. */
-struct IndexInfo;
+typedef struct IndexInfo IndexInfo;
 
 
 /*
@@ -110,7 +110,7 @@ typedef StrategyNumber (*amtranslate_cmptype_function) (CompareType cmptype, Oid
 /* build new index */
 typedef IndexBuildResult *(*ambuild_function) (Relation heapRelation,
                                                                                           Relation indexRelation,
-                                                                                          struct IndexInfo *indexInfo);
+                                                                                          IndexInfo *indexInfo);
 
 /* build empty index */
 typedef void (*ambuildempty_function) (Relation indexRelation);
@@ -123,11 +123,11 @@ typedef bool (*aminsert_function) (Relation indexRelation,
                                                                   Relation heapRelation,
                                                                   IndexUniqueCheck checkUnique,
                                                                   bool indexUnchanged,
-                                                                  struct IndexInfo *indexInfo);
+                                                                  IndexInfo *indexInfo);
 
 /* cleanup after insert */
 typedef void (*aminsertcleanup_function) (Relation indexRelation,
-                                                                                 struct IndexInfo *indexInfo);
+                                                                                 IndexInfo *indexInfo);
 
 /* bulk delete */
 typedef IndexBulkDeleteResult *(*ambulkdelete_function) (IndexVacuumInfo *info,
@@ -143,8 +143,8 @@ typedef IndexBulkDeleteResult *(*amvacuumcleanup_function) (IndexVacuumInfo *inf
 typedef bool (*amcanreturn_function) (Relation indexRelation, int attno);
 
 /* estimate cost of an indexscan */
-typedef void (*amcostestimate_function) (struct PlannerInfo *root,
-                                                                                struct IndexPath *path,
+typedef void (*amcostestimate_function) (PlannerInfo *root,
+                                                                                IndexPath *path,
                                                                                 double loop_count,
                                                                                 Cost *indexStartupCost,
                                                                                 Cost *indexTotalCost,
index d093a0bf1307a6cac0ee2b825f35fb7307c109cb..452c646a088a8ba1c2cc8c3a6160f7abfd0b9145 100644 (file)
@@ -89,14 +89,14 @@ typedef struct BrinDesc
 extern BrinDesc *brin_build_desc(Relation rel);
 extern void brin_free_desc(BrinDesc *bdesc);
 extern IndexBuildResult *brinbuild(Relation heap, Relation index,
-                                                                  struct IndexInfo *indexInfo);
+                                                                  IndexInfo *indexInfo);
 extern void brinbuildempty(Relation index);
 extern bool brininsert(Relation idxRel, Datum *values, bool *nulls,
                                           ItemPointer heaptid, Relation heapRel,
                                           IndexUniqueCheck checkUnique,
                                           bool indexUnchanged,
-                                          struct IndexInfo *indexInfo);
-extern void brininsertcleanup(Relation index, struct IndexInfo *indexInfo);
+                                          IndexInfo *indexInfo);
+extern void brininsertcleanup(Relation index, IndexInfo *indexInfo);
 extern IndexScanDesc brinbeginscan(Relation r, int nkeys, int norderbys);
 extern int64 bringetbitmap(IndexScanDesc scan, TIDBitmap *tbm);
 extern void brinrescan(IndexScanDesc scan, ScanKey scankey, int nscankeys,
index 0831c33b03821cb94b2e69d4da8ea5bb906f4040..ac62f6a6abdb77fa8701944c5ecdaf17f9ca794a 100644 (file)
@@ -24,7 +24,9 @@
 #include "utils/snapshot.h"
 
 /* We don't want this file to depend on execnodes.h. */
-struct IndexInfo;
+typedef struct IndexInfo IndexInfo;
+typedef struct TupleTableSlot TupleTableSlot;
+
 
 /*
  * Struct for statistics maintained by amgettuple and amgetbitmap
@@ -165,9 +167,9 @@ extern bool index_insert(Relation indexRelation,
                                                 Relation heapRelation,
                                                 IndexUniqueCheck checkUnique,
                                                 bool indexUnchanged,
-                                                struct IndexInfo *indexInfo);
+                                                IndexInfo *indexInfo);
 extern void index_insert_cleanup(Relation indexRelation,
-                                                                struct IndexInfo *indexInfo);
+                                                                IndexInfo *indexInfo);
 
 extern IndexScanDesc index_beginscan(Relation heapRelation,
                                                                         Relation indexRelation,
@@ -202,10 +204,9 @@ extern IndexScanDesc index_beginscan_parallel(Relation heaprel,
                                                                                          ParallelIndexScanDesc pscan);
 extern ItemPointer index_getnext_tid(IndexScanDesc scan,
                                                                         ScanDirection direction);
-struct TupleTableSlot;
-extern bool index_fetch_heap(IndexScanDesc scan, struct TupleTableSlot *slot);
+extern bool index_fetch_heap(IndexScanDesc scan, TupleTableSlot *slot);
 extern bool index_getnext_slot(IndexScanDesc scan, ScanDirection direction,
-                                                          struct TupleTableSlot *slot);
+                                                          TupleTableSlot *slot);
 extern int64 index_getbitmap(IndexScanDesc scan, TIDBitmap *bitmap);
 
 extern IndexBulkDeleteResult *index_bulk_delete(IndexVacuumInfo *info,
index a1de400b9a5310ee6037d85ed6808e4278e57b5d..e60d34dad257b13beeff4e95589a33aa904a38ab 100644 (file)
@@ -44,7 +44,8 @@
 #define HEAP_PAGE_PRUNE_FREEZE                         (1 << 1)
 
 typedef struct BulkInsertStateData *BulkInsertState;
-struct TupleTableSlot;
+typedef struct GlobalVisState GlobalVisState;
+typedef struct TupleTableSlot TupleTableSlot;
 struct VacuumCutoffs;
 
 #define MaxLockTupleMode       LockTupleExclusive
@@ -292,7 +293,7 @@ extern void heap_rescan(TableScanDesc sscan, ScanKey key, bool set_params,
 extern void heap_endscan(TableScanDesc sscan);
 extern HeapTuple heap_getnext(TableScanDesc sscan, ScanDirection direction);
 extern bool heap_getnextslot(TableScanDesc sscan,
-                                                        ScanDirection direction, struct TupleTableSlot *slot);
+                                                        ScanDirection direction, TupleTableSlot *slot);
 extern void heap_set_tidrange(TableScanDesc sscan, ItemPointer mintid,
                                                          ItemPointer maxtid);
 extern bool heap_getnextslot_tidrange(TableScanDesc sscan,
@@ -312,23 +313,23 @@ extern void ReleaseBulkInsertStatePin(BulkInsertState bistate);
 
 extern void heap_insert(Relation relation, HeapTuple tup, CommandId cid,
                                                int options, BulkInsertState bistate);
-extern void heap_multi_insert(Relation relation, struct TupleTableSlot **slots,
+extern void heap_multi_insert(Relation relation, TupleTableSlot **slots,
                                                          int ntuples, CommandId cid, int options,
                                                          BulkInsertState bistate);
 extern TM_Result heap_delete(Relation relation, ItemPointer tid,
                                                         CommandId cid, Snapshot crosscheck, bool wait,
-                                                        struct TM_FailureData *tmfd, bool changingPart);
+                                                        TM_FailureData *tmfd, bool changingPart);
 extern void heap_finish_speculative(Relation relation, ItemPointer tid);
 extern void heap_abort_speculative(Relation relation, ItemPointer tid);
 extern TM_Result heap_update(Relation relation, ItemPointer otid,
                                                         HeapTuple newtup,
                                                         CommandId cid, Snapshot crosscheck, bool wait,
-                                                        struct TM_FailureData *tmfd, LockTupleMode *lockmode,
+                                                        TM_FailureData *tmfd, LockTupleMode *lockmode,
                                                         TU_UpdateIndexes *update_indexes);
 extern TM_Result heap_lock_tuple(Relation relation, HeapTuple tuple,
                                                                 CommandId cid, LockTupleMode mode, LockWaitPolicy wait_policy,
                                                                 bool follow_updates,
-                                                                Buffer *buffer, struct TM_FailureData *tmfd);
+                                                                Buffer *buffer, TM_FailureData *tmfd);
 
 extern bool heap_inplace_lock(Relation relation,
                                                          HeapTuple oldtup_ptr, Buffer buffer,
@@ -365,10 +366,9 @@ extern TransactionId heap_index_delete_tuples(Relation rel,
                                                                                          TM_IndexDeleteOp *delstate);
 
 /* in heap/pruneheap.c */
-struct GlobalVisState;
 extern void heap_page_prune_opt(Relation relation, Buffer buffer);
 extern void heap_page_prune_and_freeze(Relation relation, Buffer buffer,
-                                                                          struct GlobalVisState *vistest,
+                                                                          GlobalVisState *vistest,
                                                                           int options,
                                                                           struct VacuumCutoffs *cutoffs,
                                                                           PruneFreezeResult *presult,
@@ -407,7 +407,7 @@ extern void HeapTupleSetHintBits(HeapTupleHeader tuple, Buffer buffer,
                                                                 uint16 infomask, TransactionId xid);
 extern bool HeapTupleHeaderIsOnlyLocked(HeapTupleHeader tuple);
 extern bool HeapTupleIsSurelyDead(HeapTuple htup,
-                                                                 struct GlobalVisState *vistest);
+                                                                 GlobalVisState *vistest);
 
 /*
  * To avoid leaking too much knowledge about reorderbuffer implementation
index 77eb41eb6dc99280dc290dc1b2c99ffa6c061fc5..e16bf0256928430a66a5e84dcbe75662dea0cb03 100644 (file)
@@ -34,10 +34,11 @@ extern PGDLLIMPORT char *default_table_access_method;
 extern PGDLLIMPORT bool synchronize_seqscans;
 
 
-struct BulkInsertStateData;
-struct IndexInfo;
-struct SampleScanState;
-struct ValidateIndexState;
+/* forward references in this file */
+typedef struct BulkInsertStateData BulkInsertStateData;
+typedef struct IndexInfo IndexInfo;
+typedef struct SampleScanState SampleScanState;
+typedef struct ValidateIndexState ValidateIndexState;
 
 /*
  * Bitmask values for the flags argument to the scan_begin callback.
@@ -325,7 +326,7 @@ typedef struct TableAmRoutine
         */
        TableScanDesc (*scan_begin) (Relation rel,
                                                                 Snapshot snapshot,
-                                                                int nkeys, struct ScanKeyData *key,
+                                                                int nkeys, ScanKeyData *key,
                                                                 ParallelTableScanDesc pscan,
                                                                 uint32 flags);
 
@@ -339,7 +340,7 @@ typedef struct TableAmRoutine
         * Restart relation scan.  If set_params is set to true, allow_{strat,
         * sync, pagemode} (see scan_begin) changes should be taken into account.
         */
-       void            (*scan_rescan) (TableScanDesc scan, struct ScanKeyData *key,
+       void            (*scan_rescan) (TableScanDesc scan, ScanKeyData *key,
                                                                bool set_params, bool allow_strat,
                                                                bool allow_sync, bool allow_pagemode);
 
@@ -508,14 +509,14 @@ typedef struct TableAmRoutine
        /* see table_tuple_insert() for reference about parameters */
        void            (*tuple_insert) (Relation rel, TupleTableSlot *slot,
                                                                 CommandId cid, int options,
-                                                                struct BulkInsertStateData *bistate);
+                                                                BulkInsertStateData *bistate);
 
        /* see table_tuple_insert_speculative() for reference about parameters */
        void            (*tuple_insert_speculative) (Relation rel,
                                                                                         TupleTableSlot *slot,
                                                                                         CommandId cid,
                                                                                         int options,
-                                                                                        struct BulkInsertStateData *bistate,
+                                                                                        BulkInsertStateData *bistate,
                                                                                         uint32 specToken);
 
        /* see table_tuple_complete_speculative() for reference about parameters */
@@ -526,7 +527,7 @@ typedef struct TableAmRoutine
 
        /* see table_multi_insert() for reference about parameters */
        void            (*multi_insert) (Relation rel, TupleTableSlot **slots, int nslots,
-                                                                CommandId cid, int options, struct BulkInsertStateData *bistate);
+                                                                CommandId cid, int options, BulkInsertStateData *bistate);
 
        /* see table_tuple_delete() for reference about parameters */
        TM_Result       (*tuple_delete) (Relation rel,
@@ -690,7 +691,7 @@ typedef struct TableAmRoutine
        /* see table_index_build_range_scan for reference about parameters */
        double          (*index_build_range_scan) (Relation table_rel,
                                                                                   Relation index_rel,
-                                                                                  struct IndexInfo *index_info,
+                                                                                  IndexInfo *index_info,
                                                                                   bool allow_sync,
                                                                                   bool anyvisible,
                                                                                   bool progress,
@@ -703,9 +704,9 @@ typedef struct TableAmRoutine
        /* see table_index_validate_scan for reference about parameters */
        void            (*index_validate_scan) (Relation table_rel,
                                                                                Relation index_rel,
-                                                                               struct IndexInfo *index_info,
+                                                                               IndexInfo *index_info,
                                                                                Snapshot snapshot,
-                                                                               struct ValidateIndexState *state);
+                                                                               ValidateIndexState *state);
 
 
        /* ------------------------------------------------------------------------
@@ -821,7 +822,7 @@ typedef struct TableAmRoutine
         * scans. If infeasible to implement, the AM may raise an error.
         */
        bool            (*scan_sample_next_block) (TableScanDesc scan,
-                                                                                  struct SampleScanState *scanstate);
+                                                                                  SampleScanState *scanstate);
 
        /*
         * This callback, only called after scan_sample_next_block has returned
@@ -837,7 +838,7 @@ typedef struct TableAmRoutine
         * assumption somehow.
         */
        bool            (*scan_sample_next_tuple) (TableScanDesc scan,
-                                                                                  struct SampleScanState *scanstate,
+                                                                                  SampleScanState *scanstate,
                                                                                   TupleTableSlot *slot);
 
 } TableAmRoutine;
@@ -873,7 +874,7 @@ extern TupleTableSlot *table_slot_create(Relation relation, List **reglist);
  */
 static inline TableScanDesc
 table_beginscan(Relation rel, Snapshot snapshot,
-                               int nkeys, struct ScanKeyData *key)
+                               int nkeys, ScanKeyData *key)
 {
        uint32          flags = SO_TYPE_SEQSCAN |
                SO_ALLOW_STRAT | SO_ALLOW_SYNC | SO_ALLOW_PAGEMODE;
@@ -886,7 +887,7 @@ table_beginscan(Relation rel, Snapshot snapshot,
  * snapshot appropriate for scanning catalog relations.
  */
 extern TableScanDesc table_beginscan_catalog(Relation relation, int nkeys,
-                                                                                        struct ScanKeyData *key);
+                                                                                        ScanKeyData *key);
 
 /*
  * Like table_beginscan(), but table_beginscan_strat() offers an extended API
@@ -897,7 +898,7 @@ extern TableScanDesc table_beginscan_catalog(Relation relation, int nkeys,
  */
 static inline TableScanDesc
 table_beginscan_strat(Relation rel, Snapshot snapshot,
-                                         int nkeys, struct ScanKeyData *key,
+                                         int nkeys, ScanKeyData *key,
                                          bool allow_strat, bool allow_sync)
 {
        uint32          flags = SO_TYPE_SEQSCAN | SO_ALLOW_PAGEMODE;
@@ -918,7 +919,7 @@ table_beginscan_strat(Relation rel, Snapshot snapshot,
  */
 static inline TableScanDesc
 table_beginscan_bm(Relation rel, Snapshot snapshot,
-                                  int nkeys, struct ScanKeyData *key)
+                                  int nkeys, ScanKeyData *key)
 {
        uint32          flags = SO_TYPE_BITMAPSCAN | SO_ALLOW_PAGEMODE;
 
@@ -935,7 +936,7 @@ table_beginscan_bm(Relation rel, Snapshot snapshot,
  */
 static inline TableScanDesc
 table_beginscan_sampling(Relation rel, Snapshot snapshot,
-                                                int nkeys, struct ScanKeyData *key,
+                                                int nkeys, ScanKeyData *key,
                                                 bool allow_strat, bool allow_sync,
                                                 bool allow_pagemode)
 {
@@ -990,8 +991,7 @@ table_endscan(TableScanDesc scan)
  * Restart a relation scan.
  */
 static inline void
-table_rescan(TableScanDesc scan,
-                        struct ScanKeyData *key)
+table_rescan(TableScanDesc scan, ScanKeyData *key)
 {
        scan->rs_rd->rd_tableam->scan_rescan(scan, key, false, false, false, false);
 }
@@ -1005,7 +1005,7 @@ table_rescan(TableScanDesc scan,
  * previously selected startblock will be kept.
  */
 static inline void
-table_rescan_set_params(TableScanDesc scan, struct ScanKeyData *key,
+table_rescan_set_params(TableScanDesc scan, ScanKeyData *key,
                                                bool allow_strat, bool allow_sync, bool allow_pagemode)
 {
        scan->rs_rd->rd_tableam->scan_rescan(scan, key, true,
@@ -1365,7 +1365,7 @@ table_index_delete_tuples(Relation rel, TM_IndexDeleteOp *delstate)
  */
 static inline void
 table_tuple_insert(Relation rel, TupleTableSlot *slot, CommandId cid,
-                                  int options, struct BulkInsertStateData *bistate)
+                                  int options, BulkInsertStateData *bistate)
 {
        rel->rd_tableam->tuple_insert(rel, slot, cid, options,
                                                                  bistate);
@@ -1385,7 +1385,7 @@ table_tuple_insert(Relation rel, TupleTableSlot *slot, CommandId cid,
 static inline void
 table_tuple_insert_speculative(Relation rel, TupleTableSlot *slot,
                                                           CommandId cid, int options,
-                                                          struct BulkInsertStateData *bistate,
+                                                          BulkInsertStateData *bistate,
                                                           uint32 specToken)
 {
        rel->rd_tableam->tuple_insert_speculative(rel, slot, cid, options,
@@ -1420,7 +1420,7 @@ table_tuple_complete_speculative(Relation rel, TupleTableSlot *slot,
  */
 static inline void
 table_multi_insert(Relation rel, TupleTableSlot **slots, int nslots,
-                                  CommandId cid, int options, struct BulkInsertStateData *bistate)
+                                  CommandId cid, int options, BulkInsertStateData *bistate)
 {
        rel->rd_tableam->multi_insert(rel, slots, nslots,
                                                                  cid, options, bistate);
@@ -1743,7 +1743,7 @@ table_scan_analyze_next_tuple(TableScanDesc scan, TransactionId OldestXmin,
 static inline double
 table_index_build_scan(Relation table_rel,
                                           Relation index_rel,
-                                          struct IndexInfo *index_info,
+                                          IndexInfo *index_info,
                                           bool allow_sync,
                                           bool progress,
                                           IndexBuildCallback callback,
@@ -1776,7 +1776,7 @@ table_index_build_scan(Relation table_rel,
 static inline double
 table_index_build_range_scan(Relation table_rel,
                                                         Relation index_rel,
-                                                        struct IndexInfo *index_info,
+                                                        IndexInfo *index_info,
                                                         bool allow_sync,
                                                         bool anyvisible,
                                                         bool progress,
@@ -1807,9 +1807,9 @@ table_index_build_range_scan(Relation table_rel,
 static inline void
 table_index_validate_scan(Relation table_rel,
                                                  Relation index_rel,
-                                                 struct IndexInfo *index_info,
+                                                 IndexInfo *index_info,
                                                  Snapshot snapshot,
-                                                 struct ValidateIndexState *state)
+                                                 ValidateIndexState *state)
 {
        table_rel->rd_tableam->index_validate_scan(table_rel,
                                                                                           index_rel,
@@ -1963,7 +1963,7 @@ table_scan_bitmap_next_tuple(TableScanDesc scan,
  */
 static inline bool
 table_scan_sample_next_block(TableScanDesc scan,
-                                                        struct SampleScanState *scanstate)
+                                                        SampleScanState *scanstate)
 {
        /*
         * We don't expect direct calls to table_scan_sample_next_block with valid
@@ -1985,7 +1985,7 @@ table_scan_sample_next_block(TableScanDesc scan,
  */
 static inline bool
 table_scan_sample_next_tuple(TableScanDesc scan,
-                                                        struct SampleScanState *scanstate,
+                                                        SampleScanState *scanstate,
                                                         TupleTableSlot *slot)
 {
        /*
index 3a920cc7d17a4e101176287197fc5aa37a078988..a36653c37f9e91d6160195a09053df0482a92118 100644 (file)
@@ -1656,14 +1656,14 @@ typedef struct SampleScanState
  */
 typedef struct
 {
-       struct ScanKeyData *scan_key;   /* scankey to put value into */
+       ScanKeyData *scan_key;          /* scankey to put value into */
        ExprState  *key_expr;           /* expr to evaluate to get value */
        bool            key_toastable;  /* is expr's result a toastable datatype? */
 } IndexRuntimeKeyInfo;
 
 typedef struct
 {
-       struct ScanKeyData *scan_key;   /* scankey to put value into */
+       ScanKeyData *scan_key;          /* scankey to put value into */
        ExprState  *array_expr;         /* expr to evaluate to get array value */
        int                     next_elem;              /* next array element to use */
        int                     num_elems;              /* number of elems in current array value */
@@ -1704,9 +1704,9 @@ typedef struct IndexScanState
        ScanState       ss;                             /* its first field is NodeTag */
        ExprState  *indexqualorig;
        List       *indexorderbyorig;
-       struct ScanKeyData *iss_ScanKeys;
+       ScanKeyData *iss_ScanKeys;
        int                     iss_NumScanKeys;
-       struct ScanKeyData *iss_OrderByKeys;
+       ScanKeyData *iss_OrderByKeys;
        int                     iss_NumOrderByKeys;
        IndexRuntimeKeyInfo *iss_RuntimeKeys;
        int                     iss_NumRuntimeKeys;
@@ -1755,9 +1755,9 @@ typedef struct IndexOnlyScanState
 {
        ScanState       ss;                             /* its first field is NodeTag */
        ExprState  *recheckqual;
-       struct ScanKeyData *ioss_ScanKeys;
+       ScanKeyData *ioss_ScanKeys;
        int                     ioss_NumScanKeys;
-       struct ScanKeyData *ioss_OrderByKeys;
+       ScanKeyData *ioss_OrderByKeys;
        int                     ioss_NumOrderByKeys;
        IndexRuntimeKeyInfo *ioss_RuntimeKeys;
        int                     ioss_NumRuntimeKeys;
@@ -1796,7 +1796,7 @@ typedef struct BitmapIndexScanState
 {
        ScanState       ss;                             /* its first field is NodeTag */
        TIDBitmap  *biss_result;
-       struct ScanKeyData *biss_ScanKeys;
+       ScanKeyData *biss_ScanKeys;
        int                     biss_NumScanKeys;
        IndexRuntimeKeyInfo *biss_RuntimeKeys;
        int                     biss_NumRuntimeKeys;