MCPcopy Create free account
hub / github.com/catboost/catboost / UnescapeCCharLen

Function UnescapeCCharLen

util/string/escape.cpp:367–398  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

365
366template <class TChar>
367size_t UnescapeCCharLen(const TChar* begin, const TChar* end) {
368 if (begin >= end) {
369 return 0;
370 }
371 if (*begin != '\\') {
372 return 1;
373 }
374 if (++begin == end) {
375 return 1;
376 }
377
378 switch (*begin) {
379 default:
380 return 2;
381 case 'u':
382 return CountHex<4>(begin + 1, end) == 4 ? 6 : 2;
383 case 'U':
384 return CountHex<8>(begin + 1, end) == 8 ? 10 : 2;
385 case 'x':
386 return 2 + CountHex<2>(begin + 1, end);
387 case '0':
388 case '1':
389 case '2':
390 case '3':
391 return 1 + CountOct<3>(begin, end); // >= 2
392 case '4':
393 case '5':
394 case '6':
395 case '7':
396 return 1 + CountOct<2>(begin, end); // >= 2
397 }
398}
399
400template size_t UnescapeCCharLen<char>(const char* begin, const char* end);
401template size_t UnescapeCCharLen<TUtf16String::TChar>(const TUtf16String::TChar* begin, const TUtf16String::TChar* end);

Callers 1

Y_UNIT_TESTFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected