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
17typedef 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
32typedef struct Regis
33{
34 RegisNode *node;
35 uint32
36 issuffix:1,
37 nchar:16,
38 unused:15;
39} Regis;
40
41bool RS_isRegis(const char *str);
42
43void RS_compile(Regis *r, bool issuffix, const char *str);
44void RS_free(Regis *r);
45
46/*returns true if matches */
47bool RS_execute(Regis *r, char *str);
48
49#endif
50