terraria-cpp2il-methodrecon v1.4.4.9
Terraria mobile dump, with reconstructed method body. Dump with CallAnalysis: https://infinitynichto.github.io/terraria-cpp2il
Loading...
Searching...
No Matches
SimpleCollator.cs
Go to the documentation of this file.
1using System;
5
7{
8 // Token: 0x0200003A RID: 58
10 {
11 // Token: 0x060000CA RID: 202 RVA: 0x000035EC File Offset: 0x000017EC
13 {
15 do
16 {
17 base..ctor();
20 }
21 while (tailoringInfo != null);
23 this.frenchSort = flag;
24 if (!flag)
25 {
26 }
28 char[] source = array.Source;
29 byte[] array2 = this.unsafeFlags;
30 char[] source2 = array.Source;
31 if (this.lcid == 0)
32 {
33 }
34 byte[] array3 = this.unsafeFlags;
35 }
36
37 // Token: 0x060000CB RID: 203 RVA: 0x00003668 File Offset: 0x00001868
45
46 // Token: 0x060000CC RID: 204 RVA: 0x0000207A File Offset: 0x0000027A
48 {
49 throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
50 }
51
52 // Token: 0x060000CD RID: 205 RVA: 0x00003680 File Offset: 0x00001880
53 private byte Category(int cp)
54 {
55 if (this.cjkCatTable != null)
56 {
57 int num = this.cjkIndexer.ToIndex(cp);
58 }
59 if (!true)
60 {
61 }
63 }
64
65 // Token: 0x060000CE RID: 206 RVA: 0x000036AC File Offset: 0x000018AC
66 private byte Level1(int cp)
67 {
68 if (this.cjkLv1Table != null)
69 {
70 int num = this.cjkIndexer.ToIndex(cp);
71 }
72 if (!true)
73 {
74 }
76 }
77
78 // Token: 0x060000CF RID: 207 RVA: 0x000036D8 File Offset: 0x000018D8
80 {
81 int num;
82 do
83 {
84 num = 1;
85 if (this.cjkLv2Table == null)
86 {
87 goto IL_0033;
88 }
89 }
90 while (this.cjkLv2Indexer.ToIndex(cp) != 0);
91 if (num == 0)
92 {
93 }
95 Level2Map[] array = this.level2Maps;
96 return b;
97 IL_0033:
98 if (array == null)
99 {
100 }
102 }
103
104 // Token: 0x060000D0 RID: 208 RVA: 0x0000372C File Offset: 0x0000192C
105 private static bool IsHalfKana(int cp, CompareOptions opt)
106 {
107 }
108
109 // Token: 0x060000D1 RID: 209 RVA: 0x0000373C File Offset: 0x0000193C
110 private Contraction GetContraction(string s, int start, int end)
111 {
114 int num;
115 if (contraction == null)
116 {
117 num = this.lcid;
118 }
119 if (num == 0)
120 {
121 }
123 return contraction2;
124 }
125
126 // Token: 0x060000D2 RID: 210 RVA: 0x00003764 File Offset: 0x00001964
127 private Contraction GetContraction(string s, int start, int end, Contraction[] clist)
128 {
129 /*
130An exception occurred when decompiling this method (060000D2)
131
132ICSharpCode.Decompiler.DecompilerException: Error decompiling Mono.Globalization.Unicode.Contraction Mono.Globalization.Unicode.SimpleCollator::GetContraction(System.String,System.Int32,System.Int32,Mono.Globalization.Unicode.Contraction[])
133
134 ---> System.Exception: Basic block has to end with unconditional control flow.
135{
136 Block_0:
137 stloc:char[](var_0_07, ldfld:char[](Contraction::Source, ldloc:class Mono.Globalization.Unicode.Contraction[][exp:Contraction](clist)))
138 stloc:char(var_2_11, callgetter:char(string::get_Chars, ldloc:string(s), ldloc:int32(start)))
139 stloc:char(var_4_1B, callgetter:char(string::get_Chars, ldloc:string(s), ldloc:int32(start)))
140 stloc:char[](var_5_24, ldfld:char[](Contraction::Source, ldloc:class Mono.Globalization.Unicode.Contraction[][exp:Contraction](clist)))
141}
142
143 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
144 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
145 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
146 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
147 --- End of inner exception stack trace ---
148 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
149 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
150*/;
151 }
152
153 // Token: 0x060000D3 RID: 211 RVA: 0x0000379C File Offset: 0x0000199C
154 private Contraction GetTailContraction(string s, int start, int end)
155 {
158 int num;
159 if (contraction == null)
160 {
161 num = this.lcid;
162 }
163 if (num == 0)
164 {
165 }
167 return contraction2;
168 }
169
170 // Token: 0x060000D4 RID: 212 RVA: 0x000037C4 File Offset: 0x000019C4
171 private Contraction GetTailContraction(string s, int start, int end, Contraction[] clist)
172 {
173 /*
174An exception occurred when decompiling this method (060000D4)
175
176ICSharpCode.Decompiler.DecompilerException: Error decompiling Mono.Globalization.Unicode.Contraction Mono.Globalization.Unicode.SimpleCollator::GetTailContraction(System.String,System.Int32,System.Int32,Mono.Globalization.Unicode.Contraction[])
177
178 ---> System.Exception: Basic block has to end with unconditional control flow.
179{
180 Block_0:
181 stloc:int32(var_0_06, ldfld:int32(string::_stringLength, ldloc:string(s)))
182 stloc:char[](var_1_0E, ldfld:char[](Contraction::Source, ldloc:class Mono.Globalization.Unicode.Contraction[][exp:Contraction](clist)))
183 stloc:char(var_3_18, callgetter:char(string::get_Chars, ldloc:string(s), ldloc:int32(start)))
184 stloc:char(var_5_23, callgetter:char(string::get_Chars, ldloc:string(s), ldloc:int32(start)))
185}
186
187 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
188 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
189 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
190 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
191 --- End of inner exception stack trace ---
192 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
193 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
194*/;
195 }
196
197 // Token: 0x060000D5 RID: 213 RVA: 0x000037F8 File Offset: 0x000019F8
198 private int FilterOptions(int i, CompareOptions opt)
199 {
200 if (!true)
201 {
202 }
206 return i;
207 }
208
209 // Token: 0x060000D6 RID: 214 RVA: 0x0000382C File Offset: 0x00001A2C
211 {
212 /*
213An exception occurred when decompiling this method (060000D6)
214
215ICSharpCode.Decompiler.DecompilerException: Error decompiling Mono.Globalization.Unicode.SimpleCollator/ExtenderType Mono.Globalization.Unicode.SimpleCollator::GetExtenderType(System.Int32)
216
217 ---> System.Exception: Basic block has to end with unconditional control flow.
218{
219 Block_0:
220 stloc:int32(var_1_0C, ldfld:int32(SimpleCollator::lcid, ldloc:SimpleCollator(this)))
221}
222
223 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
224 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
225 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
226 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
227 --- End of inner exception stack trace ---
228 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
229 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
230*/;
231 }
232
233 // Token: 0x060000D7 RID: 215 RVA: 0x0000207A File Offset: 0x0000027A
235 {
236 throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
237 }
238
239 // Token: 0x060000D8 RID: 216 RVA: 0x000038B0 File Offset: 0x00001AB0
241 {
242 if (!true)
243 {
244 }
245 byte b = this.Level1(i);
246 return 65393;
247 }
248
249 // Token: 0x060000D9 RID: 217 RVA: 0x000038F0 File Offset: 0x00001AF0
250 private static bool IsIgnorable(int i, CompareOptions opt)
251 {
252 if (20480 == 0)
253 {
254 }
255 return MSCompatUnicodeTable.IsIgnorable(42179864, (byte)i);
256 }
257
258 // Token: 0x060000DA RID: 218 RVA: 0x00003910 File Offset: 0x00001B10
259 private bool IsSafe(int i)
260 {
261 /*
262An exception occurred when decompiling this method (060000DA)
263
264ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Boolean Mono.Globalization.Unicode.SimpleCollator::IsSafe(System.Int32)
265
266 ---> System.Exception: Basic block has to end with unconditional control flow.
267{
268 Block_0:
269 stloc:uint8[](var_0_06, ldfld:uint8[](SimpleCollator::unsafeFlags, ldloc:SimpleCollator(this)))
270}
271
272 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
273 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
274 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
275 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
276 --- End of inner exception stack trace ---
277 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
278 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
279*/;
280 }
281
282 // Token: 0x060000DB RID: 219 RVA: 0x00003928 File Offset: 0x00001B28
284 {
285 int stringLength = s._stringLength;
286 long num = 0L;
287 return this.GetSortKey(s, (int)num, stringLength, options);
288 }
289
290 // Token: 0x060000DC RID: 220 RVA: 0x00003948 File Offset: 0x00001B48
292 {
293 int num = this.lcid;
294 bool flag = this.frenchSort;
296 return sortKey;
297 }
298
299 // Token: 0x060000DD RID: 221 RVA: 0x00003964 File Offset: 0x00001B64
300 private void GetSortKey(string s, int start, int end, SortKeyBuffer buf, CompareOptions opt)
301 {
302 char c = s[start];
305 {
306 int num = this.FilterExtender(43151360, extenderType, opt);
307 return;
308 }
309 bool flag = SimpleCollator.IsIgnorable(43151360, opt);
310 int num2 = this.FilterOptions(43151360, opt);
312 if (contraction == null)
313 {
315 return;
316 }
317 string replacement = contraction.Replacement;
318 if (replacement != null)
319 {
320 int stringLength = replacement._stringLength;
321 return;
322 }
324 }
325
326 // Token: 0x060000DE RID: 222 RVA: 0x000039FC File Offset: 0x00001BFC
328 {
329 UnicodeCategory unicodeCategory = char.GetUnicodeCategory((char)i);
330 }
331
332 // Token: 0x060000DF RID: 223 RVA: 0x00003AB0 File Offset: 0x00001CB0
333 private void FillSurrogateSortKeyRaw(int i, SortKeyBuffer buf)
334 {
335 }
336
337 // Token: 0x060000E0 RID: 224 RVA: 0x00003AD8 File Offset: 0x00001CD8
338 int ISimpleCollator.Compare(string s1, int idx1, int len1, string s2, int idx2, int len2, CompareOptions options)
339 {
340 return this.Compare(s1, idx1, len1, s2, idx2, len2, options);
341 }
342
343 // Token: 0x060000E1 RID: 225 RVA: 0x00003AF8 File Offset: 0x00001CF8
344 internal int Compare(string s1, int idx1, int len1, string s2, int idx2, int len2, CompareOptions options)
345 {
346 int num;
347 return num;
348 }
349
350 // Token: 0x060000E2 RID: 226 RVA: 0x00003B0C File Offset: 0x00001D0C
351 private unsafe void ClearBuffer(byte* buffer, int size)
352 {
353 }
354
355 // Token: 0x060000E3 RID: 227 RVA: 0x00003B1C File Offset: 0x00001D1C
356 private int CompareInternal(string s1, int idx1, int len1, string s2, int idx2, int len2, [Out] bool targetConsumed, [Out] bool sourceConsumed, bool skipHeadingExtenders, bool immediateBreakup, SimpleCollator.Context ctx)
357 {
360 {
361 }
362 char c = s2[idx2];
365 {
366 }
367 long num = 0L;
368 char c2 = s1[43151360];
369 if (num == 0L)
370 {
371 }
372 bool flag = SimpleCollator.IsIgnorable(42185744, (CompareOptions)43151360);
373 char c3 = s2[idx2];
374 if (num == 0L)
375 {
376 }
377 char c4 = s1[43151360];
378 char c5 = s2[idx2];
379 char c6 = s1[43151360];
380 char c7 = s1[43151360];
381 while (idx2 != 0)
382 {
383 }
384 while (idx2 != 0)
385 {
386 }
387 char c8 = s1[43151360];
388 char c9 = s2[idx2];
391 {
392 }
394 int num2;
396 {
397 return num2;
398 }
399 return num2;
400 }
401
402 // Token: 0x060000E4 RID: 228 RVA: 0x00003DB8 File Offset: 0x00001FB8
403 private int CompareFlagPair(bool b1, bool b2)
404 {
405 }
406
407 // Token: 0x060000E5 RID: 229 RVA: 0x00003DC8 File Offset: 0x00001FC8
408 public bool IsPrefix(string src, string target, CompareOptions opt)
409 {
410 int stringLength = src._stringLength;
411 long num = 0L;
412 return this.IsPrefix(src, target, (int)num, stringLength, opt);
413 }
414
415 // Token: 0x060000E6 RID: 230 RVA: 0x00003DEC File Offset: 0x00001FEC
416 public bool IsPrefix(string s, string target, int start, int length, CompareOptions opt)
417 {
418 int stringLength = target._stringLength;
419 if (stringLength != 0)
420 {
421 int stringLength2 = target._stringLength;
423 return;
424 }
425 }
426
427 // Token: 0x060000E7 RID: 231 RVA: 0x00003E1C File Offset: 0x0000201C
428 private bool IsPrefix(string s, string target, int start, int length, bool skipHeadingExtenders, SimpleCollator.Context ctx)
429 {
430 /*
431An exception occurred when decompiling this method (060000E7)
432
433ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Boolean Mono.Globalization.Unicode.SimpleCollator::IsPrefix(System.String,System.String,System.Int32,System.Int32,System.Boolean,Mono.Globalization.Unicode.SimpleCollator/Context)
434
435 ---> System.Exception: Basic block has to end with unconditional control flow.
436{
437 Block_0:
438 stloc:int32(var_0_06, ldfld:int32(string::_stringLength, ldloc:string(target)))
439}
440
441 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
442 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
443 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
444 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
445 --- End of inner exception stack trace ---
446 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
447 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
448*/;
449 }
450
451 // Token: 0x060000E8 RID: 232 RVA: 0x00003E30 File Offset: 0x00002030
452 public bool IsSuffix(string src, string target, CompareOptions opt)
453 {
454 int stringLength = src._stringLength;
455 bool flag;
456 return flag;
457 }
458
459 // Token: 0x060000E9 RID: 233 RVA: 0x00003E48 File Offset: 0x00002048
460 public bool IsSuffix(string s, string target, int start, int length, CompareOptions opt)
461 {
462 if (target._stringLength != 0)
463 {
464 int num = this.LastIndexOf(s, target, start, length, opt);
465 int stringLength = s._stringLength;
466 int stringLength2 = target._stringLength;
467 long num2 = 0L;
468 int num3 = this.Compare(s, num, start, target, (int)num2, stringLength2, opt);
469 return;
470 }
471 }
472
473 // Token: 0x060000EA RID: 234 RVA: 0x00003E90 File Offset: 0x00002090
474 private int QuickIndexOf(string s, string target, int start, int length, [Out] bool testWasUnable)
475 {
476 /*
477An exception occurred when decompiling this method (060000EA)
478
479ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 Mono.Globalization.Unicode.SimpleCollator::QuickIndexOf(System.String,System.String,System.Int32,System.Int32,System.Boolean)
480
481 ---> System.Exception: Basic block has to end with unconditional control flow.
482{
483 IL_004E:
484 stloc:int32(var_10_52, ldc.i4:int32(1))
485 stfld:bool(bool::m_value, ldloc:bool[exp:bool&](testWasUnable), ldloc:int32[exp:bool](var_10_52))
486}
487
488 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
489 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
490 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
491 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
492 --- End of inner exception stack trace ---
493 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
494 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
495*/;
496 }
497
498 // Token: 0x060000EB RID: 235 RVA: 0x00003EFC File Offset: 0x000020FC
499 public int IndexOf(string s, string target, int start, int length, CompareOptions opt)
500 {
501 while (opt == CompareOptions.None)
502 {
503 }
504 if (16384 != 0)
505 {
506 }
507 int num;
508 return num;
509 }
510
511 // Token: 0x060000EC RID: 236 RVA: 0x00003F2C File Offset: 0x0000212C
512 private int IndexOfOrdinal(string s, string target, int start, int length)
513 {
514 if (target._stringLength != 0)
515 {
516 long num = 0L;
517 char c = target[(int)num];
518 int stringLength = target._stringLength;
519 int stringLength2 = target._stringLength;
520 return;
521 }
522 }
523
524 // Token: 0x060000ED RID: 237 RVA: 0x00003F5C File Offset: 0x0000215C
525 private int IndexOfOrdinal(string s, char target, int start, int length)
526 {
527 char c = s[start];
528 return start;
529 }
530
531 // Token: 0x060000EE RID: 238 RVA: 0x00003F74 File Offset: 0x00002174
532 private unsafe int IndexOfSortKey(string s, int start, int length, byte* sortkey, char target, int ti, bool noLv4, SimpleCollator.Context ctx)
533 {
534 return start;
535 }
536
537 // Token: 0x060000EF RID: 239 RVA: 0x00003F84 File Offset: 0x00002184
538 private unsafe int IndexOf(string s, string target, int start, int length, byte* targetSortKey, SimpleCollator.Context ctx)
539 {
540 int stringLength = target._stringLength;
541 long num = 0L;
542 char c = target[(int)num];
543 int stringLength2 = target._stringLength;
544 int stringLength3 = target._stringLength;
545 long num2 = 0L;
546 char c2 = target[(int)num2];
548 int num3;
549 byte[] sortKey2;
550 if (contraction != null)
551 {
552 string replacement = contraction.Replacement;
553 if (targetSortKey == null)
554 {
555 return num3;
556 }
557 byte[] sortKey = contraction.SortKey;
558 targetSortKey->m_value = sortKey;
559 sortKey2 = contraction.SortKey;
560 }
561 if (targetSortKey != null)
562 {
563 char c3 = target[start];
564 char c4 = target[start];
565 int num4;
566 byte b = this.Category(num4);
567 targetSortKey->m_value = b;
568 byte b2 = this.Level1(num4);
569 if (sortKey2 == null)
570 {
571 }
573 return num3;
574 }
575 return num3;
576 }
577
578 // Token: 0x060000F0 RID: 240 RVA: 0x000040C4 File Offset: 0x000022C4
579 public int LastIndexOf(string s, string target, int start, int length, CompareOptions opt)
580 {
581 int num;
582 return num;
583 }
584
585 // Token: 0x060000F1 RID: 241 RVA: 0x000040EC File Offset: 0x000022EC
586 private int LastIndexOfOrdinal(string s, string target, int start, int length)
587 {
588 if (target._stringLength != 0)
589 {
590 int stringLength = s._stringLength;
591 char c = s[start];
592 int stringLength2 = target._stringLength;
593 char c2 = s[start];
594 char c3 = target[start];
595 }
596 return start;
597 }
598
599 // Token: 0x060000F2 RID: 242 RVA: 0x0000412C File Offset: 0x0000232C
600 private unsafe int LastIndexOfSortKey(string s, int start, int orgStart, int length, byte* sortkey, int ti, bool noLv4, SimpleCollator.Context ctx)
601 {
602 return start;
603 }
604
605 // Token: 0x060000F3 RID: 243 RVA: 0x0000413C File Offset: 0x0000233C
606 private unsafe int LastIndexOf(string s, string target, int start, int length, byte* targetSortKey, SimpleCollator.Context ctx)
607 {
608 int stringLength = target._stringLength;
609 long num = 0L;
610 char c = target[(int)num];
611 int stringLength2 = target._stringLength;
612 int stringLength3 = target._stringLength;
613 long num2 = 0L;
614 char c2 = target[(int)num2];
615 Contraction contraction = this.GetContraction(target, (int)num, start);
616 int num3;
617 byte[] sortKey2;
618 if (contraction != null)
619 {
620 string replacement = contraction.Replacement;
621 if (targetSortKey == null)
622 {
623 return num3;
624 }
625 byte[] sortKey = contraction.SortKey;
626 targetSortKey->m_value = sortKey;
627 sortKey2 = contraction.SortKey;
628 }
629 if (targetSortKey != null)
630 {
631 char c3 = target[(int)num];
632 int num4;
633 byte b = this.Category(num4);
634 targetSortKey->m_value = b;
635 byte b2 = this.Level1(num4);
636 if (sortKey2 == null)
637 {
638 }
640 return num3;
641 }
642 return num3;
643 }
644
645 // Token: 0x060000F4 RID: 244 RVA: 0x0000427C File Offset: 0x0000247C
646 private unsafe bool MatchesForward(string s, int idx, int end, int ti, byte* sortkey, bool noLv4, SimpleCollator.Context ctx)
647 {
648 /*
649An exception occurred when decompiling this method (060000F4)
650
651ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Boolean Mono.Globalization.Unicode.SimpleCollator::MatchesForward(System.String,System.Int32,System.Int32,System.Int32,System.Byte*,System.Boolean,Mono.Globalization.Unicode.SimpleCollator/Context)
652
653 ---> System.Exception: Basic block has to end with unconditional control flow.
654{
655 Block_4:
656 stfld:uint8(uint8::m_value, ldloc:uint8*[exp:uint8&](var_7_2D), ldloc:int32[exp:uint8](var_1))
657}
658
659 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
660 at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
661 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
662 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
663 --- End of inner exception stack trace ---
664 at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
665 at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1683
666*/;
667 }
668
669 // Token: 0x060000F5 RID: 245 RVA: 0x000042CC File Offset: 0x000024CC
670 private unsafe bool MatchesForwardCore(string s, int idx, int end, int ti, byte* sortkey, bool noLv4, SimpleCollator.ExtenderType ext, Contraction ct, SimpleCollator.Context ctx)
671 {
672 if (ext != SimpleCollator.ExtenderType.None)
673 {
674 }
676 long num2;
677 if (contraction == null)
678 {
679 int num;
680 byte b = this.Category(num);
681 byte b2 = this.Level1(num);
682 num2 = 0L;
683 byte b3 = this.Level2(num, ext);
684 byte b4 = MSCompatUnicodeTable.Level3(num);
685 }
686 if (num2 == 0L)
687 {
688 }
689 bool flag;
690 return flag;
691 }
692
693 // Token: 0x060000F6 RID: 246 RVA: 0x0000431C File Offset: 0x0000251C
694 private unsafe bool MatchesPrimitive(CompareOptions opt, byte* source, int si, SimpleCollator.ExtenderType ext, byte* target, int ti, bool noLv4)
695 {
696 int num = 12353;
697 if (num == 0)
698 {
699 }
700 bool flag = MSCompatUnicodeTable.IsJapaneseSmallLetter((char)si);
702 if (num == 0)
703 {
704 }
705 if (ext == SimpleCollator.ExtenderType.None)
706 {
707 if (num == 0)
708 {
709 }
710 if (num == 0)
711 {
712 }
713 return SimpleCollator.IsHalfKana(si, opt);
714 }
715 }
716
717 // Token: 0x060000F7 RID: 247 RVA: 0x00004370 File Offset: 0x00002570
718 private unsafe bool MatchesBackward(string s, int idx, int end, int orgStart, int ti, byte* sortkey, bool noLv4, SimpleCollator.Context ctx)
719 {
722 {
723 }
724 }
725
726 // Token: 0x060000F8 RID: 248 RVA: 0x0000438C File Offset: 0x0000258C
727 private unsafe bool MatchesBackwardCore(string s, int idx, int end, int orgStart, int ti, byte* sortkey, bool noLv4, SimpleCollator.ExtenderType ext, Contraction ct, SimpleCollator.Context ctx)
728 {
729 int num;
730 byte b = this.Category(num);
731 long num2 = 0L;
732 byte b2;
734 bool flag;
735 if (tailContraction != null)
736 {
737 char[] source = tailContraction.Source;
739 if (tailContraction.SortKey == null)
740 {
741 goto IL_0064;
742 }
743 if (false)
744 {
745 return flag;
746 }
747 int num3;
748 byte b3 = this.Level1(num3);
750 }
751 int num4;
752 byte b5 = this.Category(num4);
753 byte b6 = this.Level1(num4);
754 IL_0064:
755 int num5 = 1;
757 char c = s[num5];
758 byte b8 = this.Category(num5);
759 if (b2 == 0)
760 {
761 }
762 char c2 = s[num5];
763 return flag;
764 }
765
766 // Token: 0x060000F9 RID: 249 RVA: 0x00004430 File Offset: 0x00002630
767 // Note: this type is marked as 'beforefieldinit'.
769 {
770 if (!true)
771 {
772 }
774 }
775
776 // Token: 0x04000105 RID: 261
777 private static SimpleCollator invariant;
778
779 // Token: 0x04000106 RID: 262
781
782 // Token: 0x04000107 RID: 263
784
785 // Token: 0x04000108 RID: 264
787
788 // Token: 0x04000109 RID: 265
790
791 // Token: 0x0400010A RID: 266
792 private readonly byte[] unsafeFlags;
793
794 // Token: 0x0400010B RID: 267
796
797 // Token: 0x0400010C RID: 268
799
800 // Token: 0x0400010D RID: 269
802
803 // Token: 0x0400010E RID: 270
805
806 // Token: 0x0400010F RID: 271
807 private readonly int lcid;
808
809 // Token: 0x04000110 RID: 272
810 private readonly bool frenchSort;
811
812 // Token: 0x0200003B RID: 59
813 internal struct Context
814 {
815 // Token: 0x060000FA RID: 250 RVA: 0x00004448 File Offset: 0x00002648
825
826 // Token: 0x04000111 RID: 273
828
829 // Token: 0x04000112 RID: 274
831
832 // Token: 0x04000113 RID: 275
834
835 // Token: 0x04000114 RID: 276
836 public unsafe byte* Buffer1;
837
838 // Token: 0x04000115 RID: 277
839 public unsafe byte* Buffer2;
840
841 // Token: 0x04000116 RID: 278
842 public int PrevCode;
843
844 // Token: 0x04000117 RID: 279
845 public unsafe byte* PrevSortKey;
846 }
847
848 // Token: 0x0200003C RID: 60
849 private struct PreviousInfo
850 {
851 // Token: 0x060000FB RID: 251 RVA: 0x00004484 File Offset: 0x00002684
852 public PreviousInfo(bool dummy)
853 {
854 }
855
856 // Token: 0x04000118 RID: 280
857 public int Code;
858
859 // Token: 0x04000119 RID: 281
860 public unsafe byte* SortKey;
861 }
862
863 // Token: 0x0200003D RID: 61
864 private struct Escape
865 {
866 // Token: 0x0400011A RID: 282
867 public string Source;
868
869 // Token: 0x0400011B RID: 283
870 public int Index;
871
872 // Token: 0x0400011C RID: 284
873 public int Start;
874
875 // Token: 0x0400011D RID: 285
876 public int End;
877
878 // Token: 0x0400011E RID: 286
879 public int Optional;
880 }
881
882 // Token: 0x0200003E RID: 62
883 private enum ExtenderType
884 {
885 // Token: 0x04000120 RID: 288
886 None,
887 // Token: 0x04000121 RID: 289
888 Simple,
889 // Token: 0x04000122 RID: 290
890 Voiced,
891 // Token: 0x04000123 RID: 291
893 // Token: 0x04000124 RID: 292
894 Buggy
895 }
896 }
897}
class f__AnonymousType0<< Count > j__TPar
int LastIndexOfOrdinal(string s, string target, int start, int length)
void GetSortKey(string s, int start, int end, SortKeyBuffer buf, CompareOptions opt)
int FilterOptions(int i, CompareOptions opt)
int CompareInternal(string s1, int idx1, int len1, string s2, int idx2, int len2, [Out] bool targetConsumed, [Out] bool sourceConsumed, bool skipHeadingExtenders, bool immediateBreakup, SimpleCollator.Context ctx)
Contraction GetContraction(string s, int start, int end)
static bool IsHalfKana(int cp, CompareOptions opt)
SortKey GetSortKey(string s, CompareOptions options)
SimpleCollator.ExtenderType GetExtenderType(int i)
unsafe bool MatchesBackward(string s, int idx, int end, int orgStart, int ti, byte *sortkey, bool noLv4, SimpleCollator.Context ctx)
Contraction GetContraction(string s, int start, int end, Contraction[] clist)
bool IsSuffix(string s, string target, int start, int length, CompareOptions opt)
static CultureInfo GetNeutralCulture(CultureInfo info)
int LastIndexOf(string s, string target, int start, int length, CompareOptions opt)
int IndexOfOrdinal(string s, string target, int start, int length)
bool IsPrefix(string s, string target, int start, int length, CompareOptions opt)
bool IsPrefix(string src, string target, CompareOptions opt)
int Compare(string s1, int idx1, int len1, string s2, int idx2, int len2, CompareOptions options)
unsafe int IndexOfSortKey(string s, int start, int length, byte *sortkey, char target, int ti, bool noLv4, SimpleCollator.Context ctx)
int QuickIndexOf(string s, string target, int start, int length, [Out] bool testWasUnable)
int IndexOf(string s, string target, int start, int length, CompareOptions opt)
int FilterExtender(int i, SimpleCollator.ExtenderType ext, CompareOptions opt)
Contraction GetTailContraction(string s, int start, int end)
unsafe void SetCJKTable(CultureInfo culture, CodePointIndexer cjkIndexer, byte *catTable, byte *lv1Table, CodePointIndexer lv2Indexer, byte *lv2Table)
SortKey GetSortKey(string s, int start, int length, CompareOptions options)
byte Level2(int cp, SimpleCollator.ExtenderType ext)
unsafe int LastIndexOf(string s, string target, int start, int length, byte *targetSortKey, SimpleCollator.Context ctx)
bool IsPrefix(string s, string target, int start, int length, bool skipHeadingExtenders, SimpleCollator.Context ctx)
unsafe int IndexOf(string s, string target, int start, int length, byte *targetSortKey, SimpleCollator.Context ctx)
unsafe bool MatchesForwardCore(string s, int idx, int end, int ti, byte *sortkey, bool noLv4, SimpleCollator.ExtenderType ext, Contraction ct, SimpleCollator.Context ctx)
int ISimpleCollator. Compare(string s1, int idx1, int len1, string s2, int idx2, int len2, CompareOptions options)
unsafe void ClearBuffer(byte *buffer, int size)
int IndexOfOrdinal(string s, char target, int start, int length)
unsafe bool MatchesPrimitive(CompareOptions opt, byte *source, int si, SimpleCollator.ExtenderType ext, byte *target, int ti, bool noLv4)
static bool IsIgnorable(int i, CompareOptions opt)
bool IsSuffix(string src, string target, CompareOptions opt)
unsafe int LastIndexOfSortKey(string s, int start, int orgStart, int length, byte *sortkey, int ti, bool noLv4, SimpleCollator.Context ctx)
static byte ToDashTypeValue(SimpleCollator.ExtenderType ext, CompareOptions opt)
void FillSortKeyRaw(int i, SimpleCollator.ExtenderType ext, SortKeyBuffer buf, CompareOptions opt)
Contraction GetTailContraction(string s, int start, int end, Contraction[] clist)
unsafe bool MatchesForward(string s, int idx, int end, int ti, byte *sortkey, bool noLv4, SimpleCollator.Context ctx)
void FillSurrogateSortKeyRaw(int i, SortKeyBuffer buf)
unsafe bool MatchesBackwardCore(string s, int idx, int end, int orgStart, int ti, byte *sortkey, bool noLv4, SimpleCollator.ExtenderType ext, Contraction ct, SimpleCollator.Context ctx)
static CultureInfo InvariantCulture
int Compare(string s1, int idx1, int len1, string s2, int idx2, int len2, CompareOptions options)
unsafe Context(CompareOptions opt, byte *alwaysMatchFlags, byte *neverMatchFlags, byte *buffer1, byte *buffer2, byte *prev1)