12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #pragma once
- #include <util/generic/string.h>
- #include <util/generic/strbuf.h>
- template <class TChar>
- TBasicString<TChar>& EscapeCImpl(const TChar* str, size_t len, TBasicString<TChar>&);
- template <class TChar>
- TBasicString<TChar>& UnescapeCImpl(const TChar* str, size_t len, TBasicString<TChar>&);
- template <class TChar>
- TChar* UnescapeC(const TChar* str, size_t len, TChar* buf);
- template <typename TChar>
- static inline TBasicString<TChar>& EscapeC(const TChar* str, size_t len, TBasicString<TChar>& s) {
- return EscapeCImpl(str, len, s);
- }
- template <typename TChar>
- static inline TBasicString<TChar> EscapeC(const TChar* str, size_t len) {
- TBasicString<TChar> s;
- return EscapeC(str, len, s);
- }
- template <typename TChar>
- static inline TBasicString<TChar> EscapeC(const TBasicStringBuf<TChar>& str) {
- return EscapeC(str.data(), str.size());
- }
- template <typename TChar>
- static inline TBasicString<TChar>& UnescapeC(const TChar* str, size_t len, TBasicString<TChar>& s) {
- return UnescapeCImpl(str, len, s);
- }
- template <typename TChar>
- static inline TBasicString<TChar> UnescapeC(const TChar* str, size_t len) {
- TBasicString<TChar> s;
- return UnescapeCImpl(str, len, s);
- }
- template <typename TChar>
- static inline TBasicString<TChar> EscapeC(TChar ch) {
- return EscapeC(&ch, 1);
- }
- template <typename TChar>
- static inline TBasicString<TChar> EscapeC(const TChar* str) {
- return EscapeC(str, std::char_traits<TChar>::length(str));
- }
- TString& EscapeC(const TStringBuf str, TString& res);
- TUtf16String& EscapeC(const TWtringBuf str, TUtf16String& res);
- // these two need to be methods, because of TBasicString::Quote implementation
- TString EscapeC(const TString& str);
- TUtf16String EscapeC(const TUtf16String& str);
- TString& UnescapeC(const TStringBuf str, TString& res);
- TUtf16String& UnescapeC(const TWtringBuf str, TUtf16String& res);
- TString UnescapeC(const TStringBuf str);
- TUtf16String UnescapeC(const TWtringBuf wtr);
- /// Returns number of chars in escape sequence.
- /// - 0, if begin >= end
- /// - 1, if [begin, end) starts with an unescaped char
- /// - at least 2 (including '\'), if [begin, end) starts with an escaped symbol
- template <class TChar>
- size_t UnescapeCCharLen(const TChar* begin, const TChar* end);
|