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