1use bitflags::bitflags;
15
16pub const SRE_MAGIC: usize = 20171005;
17#[derive(num_enum::TryFromPrimitive, Debug)]
18#[repr(u32)]
19#[allow(non_camel_case_types, clippy::upper_case_acronyms)]
20pub enum SreOpcode {
21 FAILURE = 0,
22 SUCCESS = 1,
23 ANY = 2,
24 ANY_ALL = 3,
25 ASSERT = 4,
26 ASSERT_NOT = 5,
27 AT = 6,
28 BRANCH = 7,
29 CALL = 8,
30 CATEGORY = 9,
31 CHARSET = 10,
32 BIGCHARSET = 11,
33 GROUPREF = 12,
34 GROUPREF_EXISTS = 13,
35 IN = 14,
36 INFO = 15,
37 JUMP = 16,
38 LITERAL = 17,
39 MARK = 18,
40 MAX_UNTIL = 19,
41 MIN_UNTIL = 20,
42 NOT_LITERAL = 21,
43 NEGATE = 22,
44 RANGE = 23,
45 REPEAT = 24,
46 REPEAT_ONE = 25,
47 SUBPATTERN = 26,
48 MIN_REPEAT_ONE = 27,
49 GROUPREF_IGNORE = 28,
50 IN_IGNORE = 29,
51 LITERAL_IGNORE = 30,
52 NOT_LITERAL_IGNORE = 31,
53 GROUPREF_LOC_IGNORE = 32,
54 IN_LOC_IGNORE = 33,
55 LITERAL_LOC_IGNORE = 34,
56 NOT_LITERAL_LOC_IGNORE = 35,
57 GROUPREF_UNI_IGNORE = 36,
58 IN_UNI_IGNORE = 37,
59 LITERAL_UNI_IGNORE = 38,
60 NOT_LITERAL_UNI_IGNORE = 39,
61 RANGE_UNI_IGNORE = 40,
62}
63#[derive(num_enum::TryFromPrimitive, Debug)]
64#[repr(u32)]
65#[allow(non_camel_case_types, clippy::upper_case_acronyms)]
66pub enum SreAtCode {
67 BEGINNING = 0,
68 BEGINNING_LINE = 1,
69 BEGINNING_STRING = 2,
70 BOUNDARY = 3,
71 NON_BOUNDARY = 4,
72 END = 5,
73 END_LINE = 6,
74 END_STRING = 7,
75 LOC_BOUNDARY = 8,
76 LOC_NON_BOUNDARY = 9,
77 UNI_BOUNDARY = 10,
78 UNI_NON_BOUNDARY = 11,
79}
80#[derive(num_enum::TryFromPrimitive, Debug)]
81#[repr(u32)]
82#[allow(non_camel_case_types, clippy::upper_case_acronyms)]
83pub enum SreCatCode {
84 DIGIT = 0,
85 NOT_DIGIT = 1,
86 SPACE = 2,
87 NOT_SPACE = 3,
88 WORD = 4,
89 NOT_WORD = 5,
90 LINEBREAK = 6,
91 NOT_LINEBREAK = 7,
92 LOC_WORD = 8,
93 LOC_NOT_WORD = 9,
94 UNI_DIGIT = 10,
95 UNI_NOT_DIGIT = 11,
96 UNI_SPACE = 12,
97 UNI_NOT_SPACE = 13,
98 UNI_WORD = 14,
99 UNI_NOT_WORD = 15,
100 UNI_LINEBREAK = 16,
101 UNI_NOT_LINEBREAK = 17,
102}
103bitflags! {
104 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
105 pub struct SreFlag: u16 {
106 const TEMPLATE = 1;
107 const IGNORECASE = 2;
108 const LOCALE = 4;
109 const MULTILINE = 8;
110 const DOTALL = 16;
111 const UNICODE = 32;
112 const VERBOSE = 64;
113 const DEBUG = 128;
114 const ASCII = 256;
115 }
116}
117bitflags! {
118 pub struct SreInfo: u32 {
119 const PREFIX = 1;
120 const LITERAL = 2;
121 const CHARSET = 4;
122 }
123}