aboutsummaryrefslogtreecommitdiff
path: root/util/dict.h
blob: ecaf53aed64b24c51182690e4cb4860913639d52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef DICT_H
#define DICT_H

struct level {
    uint64_t bit_mask;
    uint64_t *token_masks;
};

#ifndef MAPPED_CHARS
#define MAPPED_CHARS 32
#endif

struct dict {
    // parameters for compilation
    struct string_token {
        char *s;
        int t;
    } *strings;
    size_t nstrings;
    uint8_t *char_to_bit;

    // result of compilation
    struct level start_level;
    struct level *bit_to_ptr[MAPPED_CHARS];
    size_t num_levels;
};

int dict_compile(struct dict *d);
void dict_free(struct dict *d);
void dict_print(struct dict *d);
int dict_check(struct dict *d, char *string);

#endif