source: branches/profile/ARBDB/gb_key.h

Last change on this file was 9838, checked in by westram, 11 years ago
  • reintegrated branch 'db'
    • GBDATA now is a base class of GBENTRY (new) and GBCONTAINER
      • moved code into classes GBENTRY, GBCONTAINER and GB_MAIN_TYPE
      • several functions now exist 2 (or 3) times (for GBENTRY and GBCONTAINER, and some for GBDATA as well)
      • several functions changed their interface (caller has to explicitely pass GBENTRY or GBCONTAINER)
    • dropped support for ARB DB-version 0
  • adds:
File size: 1.8 KB
Line 
1// =============================================================== //
2//                                                                 //
3//   File      : gb_key.h                                          //
4//   Purpose   :                                                   //
5//                                                                 //
6//   Institute of Microbiology (Technical University Munich)       //
7//   http://www.arb-home.de/                                       //
8//                                                                 //
9// =============================================================== //
10
11#ifndef GB_KEY_H
12#define GB_KEY_H
13
14#ifndef GB_HEADER_H
15#include "gb_header.h"
16#endif
17#ifndef GB_MAIN_H
18#include "gb_main.h"
19#endif
20#ifndef GB_TUNE_H
21#include "gb_tune.h"
22#endif
23
24
25#define GB_KEY_LEN_MAX 64                           // max. length of a key (a whole key path may be longer)
26#define GB_KEY_LEN_MIN 2
27
28struct gb_Key {
29    char *key;
30
31    long nref;
32    long next_free_key;
33    long nref_last_saved;
34
35    GBDATA        *gb_key;                          // for fast access and dynamic loading
36    GBCONTAINER   *gb_master_ali;                   // master container
37    int            gb_key_disabled;                 // There will never be a gb_key
38    int            compression_mask;                // maximum compression for this type
39    GB_DICTIONARY *dictionary;                      // optional dictionary
40};
41
42inline GBQUARK GB_KEY_QUARK(GBDATA *gbd) { return GB_DATA_LIST_HEADER(GB_FATHER(gbd)->d)[gbd->index].flags.key_quark; }
43inline char *GB_KEY(GBDATA *gbd) { return GB_MAIN(gbd)->keys[GB_KEY_QUARK(gbd)].key; }
44
45inline long GB_QUARK_2_GBMINDEX(GB_MAIN_TYPE *Main, GBQUARK key_quark)  { return (Main->keys[key_quark].nref<GBM_MAX_UNINDEXED_ENTRIES) ? 0 : key_quark; }
46
47#else
48#error gb_key.h included twice
49#endif // GB_KEY_H
Note: See TracBrowser for help on using the repository browser.