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

◆ WriteElementTextBlockNoFlush() [1/3]

unsafe int System.Xml.XmlEncodedRawTextWriter.WriteElementTextBlockNoFlush ( char * pSrc,
char * pSrcEnd,
out bool needWriteNewLine )
inlineprotectedinherited

Definition at line 2349 of file XmlEncodedRawTextWriter.cs.

2350 {
2351 needWriteNewLine = false;
2352 char* ptr = pSrc;
2353 fixed (char* ptr2 = _bufChars)
2354 {
2355 char* ptr3 = ptr2 + _bufPos;
2356 int num = 0;
2357 while (true)
2358 {
2359 char* ptr4 = ptr3 + (pSrcEnd - pSrc);
2360 if (ptr4 > ptr2 + _bufLen)
2361 {
2362 ptr4 = ptr2 + _bufLen;
2363 }
2364 while (ptr3 < ptr4 && XmlCharType.IsAttributeValueChar((char)(num = *pSrc)))
2365 {
2366 *ptr3 = (char)num;
2367 ptr3++;
2368 pSrc++;
2369 }
2370 if (pSrc >= pSrcEnd)
2371 {
2372 break;
2373 }
2374 if (ptr3 >= ptr4)
2375 {
2376 _bufPos = (int)(ptr3 - ptr2);
2377 return (int)(pSrc - ptr);
2378 }
2379 switch (num)
2380 {
2381 case 38:
2382 ptr3 = AmpEntity(ptr3);
2383 break;
2384 case 60:
2385 ptr3 = LtEntity(ptr3);
2386 break;
2387 case 62:
2388 ptr3 = GtEntity(ptr3);
2389 break;
2390 case 9:
2391 case 34:
2392 case 39:
2393 *ptr3 = (char)num;
2394 ptr3++;
2395 break;
2396 case 10:
2397 if (_newLineHandling == NewLineHandling.Replace)
2398 {
2399 _bufPos = (int)(ptr3 - ptr2);
2400 needWriteNewLine = true;
2401 return (int)(pSrc - ptr);
2402 }
2403 *ptr3 = (char)num;
2404 ptr3++;
2405 break;
2406 case 13:
2407 switch (_newLineHandling)
2408 {
2409 case NewLineHandling.Replace:
2410 if (pSrc + 1 < pSrcEnd && pSrc[1] == '\n')
2411 {
2412 pSrc++;
2413 }
2414 _bufPos = (int)(ptr3 - ptr2);
2415 needWriteNewLine = true;
2416 return (int)(pSrc - ptr);
2417 case NewLineHandling.Entitize:
2419 break;
2420 case NewLineHandling.None:
2421 *ptr3 = (char)num;
2422 ptr3++;
2423 break;
2424 }
2425 break;
2426 default:
2427 if (XmlCharType.IsSurrogate(num))
2428 {
2430 pSrc += 2;
2431 }
2432 else if (num <= 127 || num >= 65534)
2433 {
2435 pSrc++;
2436 }
2437 else
2438 {
2439 *ptr3 = (char)num;
2440 ptr3++;
2441 pSrc++;
2442 }
2443 continue;
2444 }
2445 pSrc++;
2446 }
2447 _bufPos = (int)(ptr3 - ptr2);
2448 _textPos = _bufPos;
2449 _contentPos = 0;
2450 }
2451 return -1;
2452 }
static unsafe char * AmpEntity(char *pDst)
static unsafe char * LtEntity(char *pDst)
unsafe char * InvalidXmlChar(int ch, char *pDst, bool entitize)
static unsafe char * GtEntity(char *pDst)
static unsafe char * CarriageReturnEntity(char *pDst)
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._contentPos, System.Xml.XmlEncodedRawTextWriter._newLineHandling, System.Xml.XmlEncodedRawTextWriter._textPos, System.Xml.XmlEncodedRawTextWriter.AmpEntity(), System.Xml.XmlEncodedRawTextWriter.CarriageReturnEntity(), System.Xml.Dictionary, System.Xml.XmlEncodedRawTextWriter.EncodeSurrogate(), System.Xml.XmlEncodedRawTextWriter.GtEntity(), System.Xml.XmlEncodedRawTextWriter.InvalidXmlChar(), System.Xml.XmlCharType.IsAttributeValueChar(), System.Xml.XmlCharType.IsSurrogate(), and System.Xml.XmlEncodedRawTextWriter.LtEntity().

Referenced by System.Xml.XmlEncodedRawTextWriter._WriteElementTextBlockAsync(), System.Xml.XmlEncodedRawTextWriter.WriteElementTextBlockAsync(), System.Xml.XmlEncodedRawTextWriter.WriteElementTextBlockAsync(), System.Xml.XmlEncodedRawTextWriter.WriteElementTextBlockNoFlush(), and System.Xml.XmlEncodedRawTextWriter.WriteElementTextBlockNoFlush().