ARB
Main Page
Namespaces
Classes
Files
File List
File Members
ARBDB
gb_key.h
Go to the documentation of this file.
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
28
struct
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
42
inline
GBQUARK
key2quark
(
GB_MAIN_TYPE
*Main,
const
char
*key) {
43
return
key ?
GBS_read_hash
(Main->
key_2_index_hash
, key) : -1;
44
}
45
inline
const
char
*
quark2key
(
GB_MAIN_TYPE
*Main,
GBQUARK
key_quark) {
return
Main->
keys
[key_quark].
key
; }
46
inline
long
quark2gbmindex
(
GB_MAIN_TYPE
*Main,
GBQUARK
key_quark) {
return
(Main->
keys
[key_quark].
nref
<
GBM_MAX_UNINDEXED_ENTRIES
) ? 0 : key_quark; }
47
48
inline
GBQUARK
GB_KEY_QUARK
(
GBDATA
*gbd) {
return
GB_DATA_LIST_HEADER
(
GB_FATHER
(gbd)->d)[gbd->
index
].
flags
.
key_quark
; }
49
inline
const
char
*
GB_KEY
(
GBDATA
*gbd) {
return
quark2key
(
GB_MAIN
(gbd),
GB_KEY_QUARK
(gbd)); }
50
51
52
#else
53
#error gb_key.h included twice
54
#endif // GB_KEY_H
quark2key
const char * quark2key(GB_MAIN_TYPE *Main, GBQUARK key_quark)
Definition:
gb_key.h:45
gb_Key::gb_key
GBDATA * gb_key
Definition:
gb_key.h:35
GB_MAIN
GB_MAIN_TYPE * GB_MAIN(GBDATA *gbd)
Definition:
gb_data.h:291
GB_DICTIONARY
Definition:
gb_dict.h:16
gb_Key::nref
long nref
Definition:
gb_key.h:31
gb_Key::gb_master_ali
GBCONTAINER * gb_master_ali
Definition:
gb_key.h:36
GB_DATA_LIST_HEADER
CONSTEXPR_INLINE gb_header_list * GB_DATA_LIST_HEADER(gb_data_list &dl)
Definition:
gb_data.h:105
GBDATA
Definition:
gb_data.h:129
gb_Key
Definition:
gb_key.h:28
GB_MAIN_TYPE
Definition:
gb_main.h:87
gb_Key::dictionary
GB_DICTIONARY * dictionary
Definition:
gb_key.h:39
gb_main.h
GB_MAIN_TYPE::key_2_index_hash
GB_HASH * key_2_index_hash
Definition:
gb_main.h:135
key2quark
GBQUARK key2quark(GB_MAIN_TYPE *Main, const char *key)
Definition:
gb_key.h:42
gb_header_flags::key_quark
unsigned int key_quark
Definition:
gb_header.h:21
gb_header.h
GBM_MAX_UNINDEXED_ENTRIES
const int GBM_MAX_UNINDEXED_ENTRIES
Definition:
adtune.cxx:18
gb_Key::gb_key_disabled
int gb_key_disabled
Definition:
gb_key.h:37
gb_Key::nref_last_saved
long nref_last_saved
Definition:
gb_key.h:33
gb_Key::compression_mask
int compression_mask
Definition:
gb_key.h:38
GB_FATHER
CONSTEXPR_INLINE GBCONTAINER * GB_FATHER(GBDATA *gbd)
Definition:
gb_data.h:271
gb_Key::key
char * key
Definition:
gb_key.h:29
gb_tune.h
GBCONTAINER
Definition:
gb_data.h:240
GB_KEY_QUARK
GBQUARK GB_KEY_QUARK(GBDATA *gbd)
Definition:
gb_key.h:48
GBDATA::index
long index
Definition:
gb_data.h:133
quark2gbmindex
long quark2gbmindex(GB_MAIN_TYPE *Main, GBQUARK key_quark)
Definition:
gb_key.h:46
GB_MAIN_TYPE::keys
gb_Key * keys
Definition:
gb_main.h:134
gb_header_list::flags
gb_header_flags flags
Definition:
gb_header.h:35
GB_KEY
const char * GB_KEY(GBDATA *gbd)
Definition:
gb_key.h:49
GBQUARK
int GBQUARK
Definition:
arbdb_base.h:30
GBS_read_hash
long GBS_read_hash(const GB_HASH *hs, const char *key)
Definition:
adhash.cxx:392
gb_Key::next_free_key
long next_free_key
Definition:
gb_key.h:32
Generated by
1.8.8