Add a third AOT location, alongside ~/.mono/aot-cache and the assembly dir
[mono.git] / mcs / class / System / System.Text.RegularExpressions / RxOp.cs
1
2 namespace System.Text.RegularExpressions {
3
4         // for the IgnoreCase opcodes, the char data is stored lowercased
5         // two-byte integers are in little endian format
6         enum RxOp : byte {
7                 // followed by count, min, max integers
8                 Info,
9
10                 False,
11                 True,
12
13                 // position anchors 
14                 AnyPosition,
15                 StartOfString,
16                 StartOfLine,
17                 StartOfScan,
18                 EndOfString,
19                 EndOfLine,
20                 End,
21                 WordBoundary,
22                 NoWordBoundary,
23
24                 // latin1 strings
25                 // followed by single byte length and latin1 bytes
26                 // keep the order, see EmitString ()
27                 String,
28                 StringIgnoreCase,
29                 StringReverse,
30                 StringIgnoreCaseReverse,
31
32                 // followed by two byte length and unicode chars (two bytes per char)
33                 // a better setup may be to reference the chars in the patterns string
34                 // (offset, length) pairs, at least when the pattern contains them,
35                 // but this means we can't lowercase before hand: consider using a separate
36                 // string/array
37                 // keep the order, see EmitString ()
38                 UnicodeString,
39                 UnicodeStringIgnoreCase,
40                 UnicodeStringReverse,
41                 UnicodeStringIgnoreCaseReverse,
42
43                 // latin1 single char
44                 // followed by a latin1 byte
45                 // keep the order, see EmitCharacter ()
46                 Char,
47                 NoChar,
48                 CharIgnoreCase,
49                 NoCharIgnoreCase,
50                 CharReverse,
51                 NoCharReverse,
52                 CharIgnoreCaseReverse,
53                 NoCharIgnoreCaseReverse,
54
55                 // followed by latin1 min and max bytes
56                 // keep the order, see EmitRange ()
57                 Range,
58                 NoRange,
59                 RangeIgnoreCase,
60                 NoRangeIgnoreCase,
61                 RangeReverse,
62                 NoRangeReverse,
63                 RangeIgnoreCaseReverse,
64                 NoRangeIgnoreCaseReverse,
65
66                 // followed by lowbyte and length of the bitmap and by the bitmap
67                 // keep the order, see EmitSet ()
68                 Bitmap,
69                 NoBitmap,
70                 BitmapIgnoreCase,
71                 NoBitmapIgnoreCase,
72                 BitmapReverse,
73                 NoBitmapReverse,
74                 BitmapIgnoreCaseReverse,
75                 NoBitmapIgnoreCaseReverse,
76
77                 // unicode chars
78                 // followed by a unicode char
79                 // keep the order, see EmitCharacter ()
80                 UnicodeChar,
81                 NoUnicodeChar,
82                 UnicodeCharIgnoreCase,
83                 NoUnicodeCharIgnoreCase,
84                 UnicodeCharReverse,
85                 NoUnicodeCharReverse,
86                 UnicodeCharIgnoreCaseReverse,
87                 NoUnicodeCharIgnoreCaseReverse,
88
89                 // followed by unicode char min and max chars
90                 // keep the order, see EmitRange ()
91                 UnicodeRange,
92                 NoUnicodeRange,
93                 UnicodeRangeIgnoreCase,
94                 NoUnicodeRangeIgnoreCase,
95                 UnicodeRangeReverse,
96                 NoUnicodeRangeReverse,
97                 UnicodeRangeIgnoreCaseReverse,
98                 NoUnicodeRangeIgnoreCaseReverse,
99
100                 // followed by lowchar and length of the bitmap and by the bitmap
101                 UnicodeBitmap,
102                 NoUnicodeBitmap,
103                 UnicodeBitmapIgnoreCase,
104                 NoUnicodeBitmapIgnoreCase,
105                 UnicodeBitmapReverse,
106                 NoUnicodeBitmapReverse,
107                 UnicodeBitmapIgnoreCaseReverse,
108                 NoUnicodeBitmapIgnoreCaseReverse,
109
110                 // add reverse and negate versions of the categories
111                 CategoryAny,
112                 NoCategoryAny,
113                 CategoryAnyReverse,
114                 NoCategoryAnyReverse,
115                 CategoryAnySingleline,
116                 NoCategoryAnySingleline,
117                 CategoryAnySinglelineReverse,
118                 NoCategoryAnySinglelineReverse,
119                 CategoryDigit,
120                 NoCategoryDigit,
121                 CategoryDigitReverse,
122                 NoCategoryDigitReverse,
123                 CategoryWord,
124                 NoCategoryWord,
125                 CategoryWordReverse,
126                 NoCategoryWordReverse,
127                 CategoryWhiteSpace,
128                 NoCategoryWhiteSpace,
129                 CategoryWhiteSpaceReverse,
130                 NoCategoryWhiteSpaceReverse,
131                 CategoryEcmaWord,
132                 NoCategoryEcmaWord,
133                 CategoryEcmaWordReverse,
134                 NoCategoryEcmaWordReverse,
135                 CategoryEcmaWhiteSpace,
136                 NoCategoryEcmaWhiteSpace,
137                 CategoryEcmaWhiteSpaceReverse,
138                 NoCategoryEcmaWhiteSpaceReverse,
139
140                 // followed by a unicode category value (byte)
141                 CategoryUnicode,
142                 NoCategoryUnicode,
143                 CategoryUnicodeReverse,
144                 NoCategoryUnicodeReverse,
145
146                 CategoryUnicodeLetter,
147                 NoCategoryUnicodeLetter,
148                 CategoryUnicodeLetterReverse,
149                 NoCategoryUnicodeLetterReverse,
150                 CategoryUnicodeMark,
151                 NoCategoryUnicodeMark,
152                 CategoryUnicodeMarkReverse,
153                 NoCategoryUnicodeMarkReverse,
154                 CategoryUnicodeNumber,
155                 NoCategoryUnicodeNumber,
156                 CategoryUnicodeNumberReverse,
157                 NoCategoryUnicodeNumberReverse,
158                 CategoryUnicodeSeparator,
159                 NoCategoryUnicodeSeparator,
160                 CategoryUnicodeSeparatorReverse,
161                 NoCategoryUnicodeSeparatorReverse,
162                 CategoryUnicodePunctuation,
163                 NoCategoryUnicodePunctuation,
164                 CategoryUnicodePunctuationReverse,
165                 NoCategoryUnicodePunctuationReverse,
166                 CategoryUnicodeSymbol,
167                 NoCategoryUnicodeSymbol,
168                 CategoryUnicodeSymbolReverse,
169                 NoCategoryUnicodeSymbolReverse,
170                 CategoryUnicodeSpecials,
171                 NoCategoryUnicodeSpecials,
172                 CategoryUnicodeSpecialsReverse,
173                 NoCategoryUnicodeSpecialsReverse,
174                 CategoryUnicodeOther,
175                 NoCategoryUnicodeOther,
176                 CategoryUnicodeOtherReverse,
177                 NoCategoryUnicodeOtherReverse,
178                 // add more categories
179
180                 // followed by Category value (byte)
181                 CategoryGeneral,
182                 NoCategoryGeneral,
183                 CategoryGeneralReverse,
184                 NoCategoryGeneralReverse,
185
186                 // backreferences
187                 // followed by two-byte reference number
188                 // keep the order, see EmitReference ()
189                 Reference,
190                 ReferenceIgnoreCase,
191                 ReferenceReverse,
192                 ReferenceIgnoreCaseReverse,
193
194                 // group/capture support
195                 // followed by two-byte group id
196                 OpenGroup,
197                 CloseGroup,
198                 
199                 BalanceStart,
200                 Balance,
201
202                 // followed by offset and two-byte group id
203                 IfDefined,
204
205                 // skip ahead num bytes
206                 // followed by two-byte offset
207                 Jump,
208
209                 // followed by two-byte offset
210                 SubExpression,
211
212                 // followed by true and false two-byte offsets
213                 Test,
214
215                 // followed by two-byte offset
216                 Branch,
217
218                 // followed by two-byte offset
219                 TestCharGroup,
220
221                 // anchoring expression
222                 // followed by offset of tail and offset
223                 Anchor,
224                 AnchorReverse,
225
226                 // repetition support
227                 // followed by min, max ints
228                 Repeat,
229                 RepeatLazy,
230                 Until,
231                 FastRepeat,
232                 FastRepeatLazy,
233                 // followed by min byte
234                 RepeatInfinite,
235                 RepeatInfiniteLazy,
236         }
237 }
238