Skip to main content

rustpython_sre_engine/
constants.rs

1/*
2 * Secret Labs' Regular Expression Engine
3 *
4 * regular expression matching engine
5 *
6 * Auto-generated by scripts/generate_sre_constants.py from
7 * Lib/re/_constants.py.
8 *
9 * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
10 *
11 * See the sre.c file for information on usage and redistribution.
12 */
13
14use 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}