1 | /*------------------------------------------------------------------------- |
2 | * |
3 | * regis.h |
4 | * |
5 | * Declarations for fast regex subset, used by ISpell |
6 | * |
7 | * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group |
8 | * |
9 | * src/include/tsearch/dicts/regis.h |
10 | * |
11 | *------------------------------------------------------------------------- |
12 | */ |
13 | |
14 | #ifndef __REGIS_H__ |
15 | #define __REGIS_H__ |
16 | |
17 | typedef struct RegisNode |
18 | { |
19 | uint32 |
20 | type:2, |
21 | len:16, |
22 | unused:14; |
23 | struct RegisNode *next; |
24 | unsigned char data[FLEXIBLE_ARRAY_MEMBER]; |
25 | } RegisNode; |
26 | |
27 | #define RNHDRSZ (offsetof(RegisNode,data)) |
28 | |
29 | #define RSF_ONEOF 1 |
30 | #define RSF_NONEOF 2 |
31 | |
32 | typedef struct Regis |
33 | { |
34 | RegisNode *node; |
35 | uint32 |
36 | issuffix:1, |
37 | nchar:16, |
38 | unused:15; |
39 | } Regis; |
40 | |
41 | bool RS_isRegis(const char *str); |
42 | |
43 | void RS_compile(Regis *r, bool issuffix, const char *str); |
44 | void RS_free(Regis *r); |
45 | |
46 | /*returns true if matches */ |
47 | bool RS_execute(Regis *r, char *str); |
48 | |
49 | #endif |
50 | |