Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ IcuGetAsciiCore()

unsafe string System.Globalization.IdnMapping.IcuGetAsciiCore ( string unicodeString,
char * unicode,
int count )
inlineprivate

Definition at line 693 of file IdnMapping.cs.

694 {
695 uint icuFlags = IcuFlags;
696 CheckInvalidIdnCharacters(unicode, count, icuFlags, "unicode");
697 int num = (int)Math.Min((long)count * 3L + 4, 512L);
698 int num2;
699 if (num < 512)
700 {
701 char* ptr = stackalloc char[num];
702 num2 = Interop.Globalization.ToAscii(icuFlags, unicode, count, ptr, num);
703 if (num2 > 0 && num2 <= num)
704 {
705 return GetStringForOutput(unicodeString, unicode, count, ptr, num2);
706 }
707 }
708 else
709 {
710 num2 = Interop.Globalization.ToAscii(icuFlags, unicode, count, null, 0);
711 }
712 if (num2 == 0)
713 {
714 throw new ArgumentException(SR.Argument_IdnIllegalName, "unicode");
715 }
716 char[] array = new char[num2];
717 fixed (char* ptr2 = &array[0])
718 {
719 num2 = Interop.Globalization.ToAscii(icuFlags, unicode, count, ptr2, num2);
720 if (num2 == 0 || num2 > array.Length)
721 {
722 throw new ArgumentException(SR.Argument_IdnIllegalName, "unicode");
723 }
724 return GetStringForOutput(unicodeString, unicode, count, ptr2, num2);
725 }
726 }
static unsafe int ToAscii(uint flags, char *src, int srcLen, char *dstBuffer, int dstBufferCapacity)
static unsafe void CheckInvalidIdnCharacters(char *s, int count, uint flags, string paramName)
static unsafe string GetStringForOutput(string originalString, char *input, int inputLength, char *output, int outputLength)

References System.SR.Argument_IdnIllegalName, System.array, System.Globalization.IdnMapping.CheckInvalidIdnCharacters(), System.count, System.Globalization.IdnMapping.GetStringForOutput(), System.Globalization.IdnMapping.IcuFlags, System.L, System.Math.Min(), and Interop.Globalization.ToAscii().

Referenced by System.Globalization.IdnMapping.GetAscii().