Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ Utf8NullTerminatedFastCompare()

unsafe FastComparisonResult System.Reflection.Internal.MemoryBlock.Utf8NullTerminatedFastCompare ( int offset,
string text,
int textStart,
out int firstDifferenceIndex,
char terminator,
bool ignoreCase )
inlinepackage

Definition at line 323 of file MemoryBlock.cs.

324 {
326 byte* ptr = Pointer + offset;
327 byte* ptr2 = Pointer + Length;
328 byte* ptr3 = ptr;
329 int ignoreCaseMask = StringUtils.IgnoreCaseMask(ignoreCase);
330 int num = textStart;
331 while (num < text.Length && ptr3 != ptr2)
332 {
333 byte b = *ptr3;
334 if (b == 0 || b == terminator)
335 {
336 break;
337 }
338 char c = text[num];
339 if ((b & 0x80) == 0 && StringUtils.IsEqualAscii(c, b, ignoreCaseMask))
340 {
341 num++;
342 ptr3++;
343 continue;
344 }
345 firstDifferenceIndex = num;
346 if (c <= '\u007f')
347 {
348 return FastComparisonResult.Unequal;
349 }
350 return FastComparisonResult.Inconclusive;
351 }
352 firstDifferenceIndex = num;
353 bool flag = num == text.Length;
354 bool flag2 = ptr3 == ptr2 || *ptr3 == 0 || *ptr3 == terminator;
355 if (flag && flag2)
356 {
357 return FastComparisonResult.Equal;
358 }
359 if (!flag)
360 {
361 return FastComparisonResult.TextStartsWithBytes;
362 }
363 return FastComparisonResult.BytesStartWithText;
364 }
static int IgnoreCaseMask(bool ignoreCase)
Definition StringUtils.cs:5
static bool IsEqualAscii(int a, int b, int ignoreCaseMask)
void CheckBounds(int offset, int byteCount)

References System.Reflection.Internal.MemoryBlock.CheckBounds(), System.Reflection.Metadata.StringUtils.IgnoreCaseMask(), System.Reflection.Metadata.StringUtils.IsEqualAscii(), System.Reflection.Internal.MemoryBlock.Length, System.offset, and System.text.

Referenced by System.Reflection.Metadata.Ecma335.BlobHeap.DocumentNameEquals(), System.Reflection.Internal.MemoryBlock.Utf8NullTerminatedEquals(), and System.Reflection.Internal.MemoryBlock.Utf8NullTerminatedStartsWith().