]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/third_party/prometheus-cpp/3rdparty/civetweb/src/third_party/duktape-1.8.0/src-separate/duk_regexp.h
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / third_party / prometheus-cpp / 3rdparty / civetweb / src / third_party / duktape-1.8.0 / src-separate / duk_regexp.h
1 /*
2 * Regular expression structs, constants, and bytecode defines.
3 */
4
5 #ifndef DUK_REGEXP_H_INCLUDED
6 #define DUK_REGEXP_H_INCLUDED
7
8 /* maximum bytecode copies for {n,m} quantifiers */
9 #define DUK_RE_MAX_ATOM_COPIES 1000
10
11 /* regexp compilation limits */
12 #define DUK_RE_COMPILE_TOKEN_LIMIT 100000000L /* 1e8 */
13
14 /* regexp execution limits */
15 #define DUK_RE_EXECUTE_STEPS_LIMIT 1000000000L /* 1e9 */
16
17 /* regexp opcodes */
18 #define DUK_REOP_MATCH 1
19 #define DUK_REOP_CHAR 2
20 #define DUK_REOP_PERIOD 3
21 #define DUK_REOP_RANGES 4
22 #define DUK_REOP_INVRANGES 5
23 #define DUK_REOP_JUMP 6
24 #define DUK_REOP_SPLIT1 7
25 #define DUK_REOP_SPLIT2 8
26 #define DUK_REOP_SQMINIMAL 9
27 #define DUK_REOP_SQGREEDY 10
28 #define DUK_REOP_SAVE 11
29 #define DUK_REOP_WIPERANGE 12
30 #define DUK_REOP_LOOKPOS 13
31 #define DUK_REOP_LOOKNEG 14
32 #define DUK_REOP_BACKREFERENCE 15
33 #define DUK_REOP_ASSERT_START 16
34 #define DUK_REOP_ASSERT_END 17
35 #define DUK_REOP_ASSERT_WORD_BOUNDARY 18
36 #define DUK_REOP_ASSERT_NOT_WORD_BOUNDARY 19
37
38 /* flags */
39 #define DUK_RE_FLAG_GLOBAL (1 << 0)
40 #define DUK_RE_FLAG_IGNORE_CASE (1 << 1)
41 #define DUK_RE_FLAG_MULTILINE (1 << 2)
42
43 struct duk_re_matcher_ctx {
44 duk_hthread *thr;
45
46 duk_uint32_t re_flags;
47 const duk_uint8_t *input;
48 const duk_uint8_t *input_end;
49 const duk_uint8_t *bytecode;
50 const duk_uint8_t *bytecode_end;
51 const duk_uint8_t **saved; /* allocated from valstack (fixed buffer) */
52 duk_uint32_t nsaved;
53 duk_uint32_t recursion_depth;
54 duk_uint32_t recursion_limit;
55 duk_uint32_t steps_count;
56 duk_uint32_t steps_limit;
57 };
58
59 struct duk_re_compiler_ctx {
60 duk_hthread *thr;
61
62 duk_uint32_t re_flags;
63 duk_lexer_ctx lex;
64 duk_re_token curr_token;
65 duk_bufwriter_ctx bw;
66 duk_uint32_t captures; /* highest capture number emitted so far (used as: ++captures) */
67 duk_uint32_t highest_backref;
68 duk_uint32_t recursion_depth;
69 duk_uint32_t recursion_limit;
70 duk_uint32_t nranges; /* internal temporary value, used for char classes */
71 };
72
73 /*
74 * Prototypes
75 */
76
77 DUK_INTERNAL_DECL void duk_regexp_compile(duk_hthread *thr);
78 DUK_INTERNAL_DECL void duk_regexp_create_instance(duk_hthread *thr);
79 DUK_INTERNAL_DECL void duk_regexp_match(duk_hthread *thr);
80 DUK_INTERNAL_DECL void duk_regexp_match_force_global(duk_hthread *thr); /* hacky helper for String.prototype.split() */
81
82 #endif /* DUK_REGEXP_H_INCLUDED */