| 337 | |
| 338 | template <class TChar> |
| 339 | TChar* UnescapeC(const TChar* str, size_t len, TChar* buf) { |
| 340 | struct TUnboundedString { |
| 341 | void append(TChar ch) noexcept { |
| 342 | *P++ = ch; |
| 343 | } |
| 344 | |
| 345 | void append(const TChar* b, const TChar* e) noexcept { |
| 346 | while (b != e) { |
| 347 | append(*b++); |
| 348 | } |
| 349 | } |
| 350 | |
| 351 | void AppendNoAlias(const TChar* s, size_t l) noexcept { |
| 352 | append(s, s + l); |
| 353 | } |
| 354 | |
| 355 | TChar* P; |
| 356 | } bufbuf = {buf}; |
| 357 | |
| 358 | return DoUnescapeC(str, len, bufbuf).P; |
| 359 | } |
| 360 | |
| 361 | template TString& UnescapeCImpl<TString::TChar>(const TString::TChar* str, size_t len, TString& r); |
| 362 | template TUtf16String& UnescapeCImpl<TUtf16String::TChar>(const TUtf16String::TChar* str, size_t len, TUtf16String& r); |
no test coverage detected