1 /*-------------------------------------------------------------------------
2  *
3  * regis.h
4  *
5  * Declarations for fast regex subset, used by ISpell
6  *
7  * Portions Copyright (c) 1996-2016, 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