1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef __LINUX_TEXTSEARCH_FSM_H |
3 | #define __LINUX_TEXTSEARCH_FSM_H |
4 | |
5 | #include <linux/types.h> |
6 | |
7 | enum { |
8 | TS_FSM_SPECIFIC, /* specific character */ |
9 | TS_FSM_WILDCARD, /* any character */ |
10 | TS_FSM_DIGIT, /* isdigit() */ |
11 | TS_FSM_XDIGIT, /* isxdigit() */ |
12 | TS_FSM_PRINT, /* isprint() */ |
13 | TS_FSM_ALPHA, /* isalpha() */ |
14 | TS_FSM_ALNUM, /* isalnum() */ |
15 | TS_FSM_ASCII, /* isascii() */ |
16 | TS_FSM_CNTRL, /* iscntrl() */ |
17 | TS_FSM_GRAPH, /* isgraph() */ |
18 | TS_FSM_LOWER, /* islower() */ |
19 | TS_FSM_UPPER, /* isupper() */ |
20 | TS_FSM_PUNCT, /* ispunct() */ |
21 | TS_FSM_SPACE, /* isspace() */ |
22 | __TS_FSM_TYPE_MAX, |
23 | }; |
24 | #define TS_FSM_TYPE_MAX (__TS_FSM_TYPE_MAX - 1) |
25 | |
26 | enum { |
27 | TS_FSM_SINGLE, /* 1 occurrence */ |
28 | TS_FSM_PERHAPS, /* 1 or 0 occurrence */ |
29 | TS_FSM_ANY, /* 0..n occurrences */ |
30 | TS_FSM_MULTI, /* 1..n occurrences */ |
31 | TS_FSM_HEAD_IGNORE, /* 0..n ignored occurrences at head */ |
32 | __TS_FSM_RECUR_MAX, |
33 | }; |
34 | #define TS_FSM_RECUR_MAX (__TS_FSM_RECUR_MAX - 1) |
35 | |
36 | /** |
37 | * struct ts_fsm_token - state machine token (state) |
38 | * @type: type of token |
39 | * @recur: number of recurrences |
40 | * @value: character value for TS_FSM_SPECIFIC |
41 | */ |
42 | struct ts_fsm_token |
43 | { |
44 | __u16 type; |
45 | __u8 recur; |
46 | __u8 value; |
47 | }; |
48 | |
49 | #endif |
50 | |