rustpython_sre_engine/
constants.rs

1/*
2 * Secret Labs' Regular Expression Engine
3 *
4 * regular expression matching engine
5 *
6 * NOTE: This file is generated by sre_constants.py.  If you need
7 * to change anything in here, edit sre_constants.py and run it.
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 = 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}