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

◆ WriteRawWithCharChecking()

unsafe void System.Xml.XmlEncodedRawTextWriter.WriteRawWithCharChecking ( char * pSrcBegin,
char * pSrcEnd )
inlineprotectedinherited

Definition at line 997 of file XmlEncodedRawTextWriter.cs.

998 {
999 fixed (char* ptr2 = _bufChars)
1000 {
1001 char* ptr = pSrcBegin;
1002 char* ptr3 = ptr2 + _bufPos;
1003 int num = 0;
1004 while (true)
1005 {
1006 char* ptr4 = ptr3 + (pSrcEnd - ptr);
1007 if (ptr4 > ptr2 + _bufLen)
1008 {
1009 ptr4 = ptr2 + _bufLen;
1010 }
1011 while (ptr3 < ptr4 && XmlCharType.IsTextChar((char)(num = *ptr)))
1012 {
1013 *ptr3 = (char)num;
1014 ptr3++;
1015 ptr++;
1016 }
1017 if (ptr >= pSrcEnd)
1018 {
1019 break;
1020 }
1021 if (ptr3 >= ptr4)
1022 {
1023 _bufPos = (int)(ptr3 - ptr2);
1024 FlushBuffer();
1025 ptr3 = ptr2 + 1;
1026 continue;
1027 }
1028 switch (num)
1029 {
1030 case 9:
1031 case 38:
1032 case 60:
1033 case 93:
1034 *ptr3 = (char)num;
1035 ptr3++;
1036 break;
1037 case 13:
1038 if (_newLineHandling == NewLineHandling.Replace)
1039 {
1040 if (ptr + 1 < pSrcEnd && ptr[1] == '\n')
1041 {
1042 ptr++;
1043 }
1045 }
1046 else
1047 {
1048 *ptr3 = (char)num;
1049 ptr3++;
1050 }
1051 break;
1052 case 10:
1053 if (_newLineHandling == NewLineHandling.Replace)
1054 {
1056 break;
1057 }
1058 *ptr3 = (char)num;
1059 ptr3++;
1060 break;
1061 default:
1062 if (XmlCharType.IsSurrogate(num))
1063 {
1065 ptr += 2;
1066 }
1067 else if (num <= 127 || num >= 65534)
1068 {
1070 ptr++;
1071 }
1072 else
1073 {
1074 *ptr3 = (char)num;
1075 ptr3++;
1076 ptr++;
1077 }
1078 continue;
1079 }
1080 ptr++;
1081 }
1082 _bufPos = (int)(ptr3 - ptr2);
1083 }
1084 }
unsafe char * InvalidXmlChar(int ch, char *pDst, bool entitize)
static unsafe char * EncodeSurrogate(char *pSrc, char *pSrcEnd, char *pDst)

References System.Xml.XmlEncodedRawTextWriter._bufChars, System.Xml.XmlEncodedRawTextWriter._bufLen, System.Xml.XmlEncodedRawTextWriter._bufPos, System.Xml.XmlEncodedRawTextWriter._newLineHandling, System.Xml.Dictionary, System.Xml.XmlEncodedRawTextWriter.EncodeSurrogate(), System.Xml.XmlEncodedRawTextWriter.FlushBuffer(), System.Xml.XmlEncodedRawTextWriter.InvalidXmlChar(), System.Xml.XmlCharType.IsSurrogate(), System.Xml.XmlCharType.IsTextChar(), and System.Xml.XmlEncodedRawTextWriter.WriteNewLine().

Referenced by System.Xml.XmlEncodedRawTextWriter.WriteRaw(), and System.Xml.XmlEncodedRawTextWriter.WriteRaw().