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