| /*------------------------------------------------------------------------- |
| * |
| * regis.h |
| * |
| * Declarations for fast regex subset, used by ISpell |
| * |
| * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group |
| * |
| * src/include/tsearch/dicts/regis.h |
| * |
| *------------------------------------------------------------------------- |
| */ |
| |
| #ifndef __REGIS_H__ |
| #define __REGIS_H__ |
| |
| typedef struct RegisNode |
| { |
| uint32 |
| type:2, |
| len:16, |
| unused:14; |
| struct RegisNode *next; |
| unsigned char data[FLEXIBLE_ARRAY_MEMBER]; |
| } RegisNode; |
| |
| #define RNHDRSZ (offsetof(RegisNode,data)) |
| |
| #define RSF_ONEOF 1 |
| #define RSF_NONEOF 2 |
| |
| typedef struct Regis |
| { |
| RegisNode *node; |
| uint32 |
| issuffix:1, |
| nchar:16, |
| unused:15; |
| } Regis; |
| |
| bool RS_isRegis(const char *str); |
| |
| void RS_compile(Regis *r, bool issuffix, const char *str); |
| void RS_free(Regis *r); |
| |
| /*returns true if matches */ |
| bool RS_execute(Regis *r, char *str); |
| |
| #endif |