| Left: | ||
| Right: |
| LEFT | RIGHT |
|---|---|
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
| 3 * Copyright (C) 2006-present eyeo GmbH | 3 * Copyright (C) 2006-present eyeo GmbH |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 32 #include "base.h" | 32 #include "base.h" |
| 33 #include "debug.h" | 33 #include "debug.h" |
| 34 #include "library.h" | 34 #include "library.h" |
| 35 | 35 |
| 36 ABP_NS_BEGIN | 36 ABP_NS_BEGIN |
| 37 | 37 |
| 38 inline void String_assert_writable(bool isWritable); | 38 inline void String_assert_writable(bool isWritable); |
| 39 | 39 |
| 40 // hacky because without templates | 40 // hacky because without templates |
| 41 #ifdef ABP_UTF8_STRING | 41 #ifdef ABP_UTF8_STRING |
| 42 #define ABP_TEXT(val) val | 42 #define ABP_TEXT(val) val |
|
hub
2018/03/13 21:29:16
Can't we make this macro shorter? Things are getti
sergei
2018/03/14 10:17:10
I'm afraid it can clash with some another macro, s
| |
| 43 struct StringTraits | 43 struct StringTraits |
| 44 { | 44 { |
| 45 typedef char char_type; | 45 typedef char char_type; |
| 46 }; | 46 }; |
| 47 #else | 47 #else |
| 48 #define ABP_TEXT(val) u##val | 48 #define ABP_TEXT(val) u##val |
| 49 struct StringTraits | 49 struct StringTraits |
| 50 { | 50 { |
| 51 typedef char16_t char_type; | 51 typedef char16_t char_type; |
| 52 }; | 52 }; |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 222 } | 222 } |
| 223 } | 223 } |
| 224 }; | 224 }; |
| 225 | 225 |
| 226 #ifdef INSIDE_TESTS | 226 #ifdef INSIDE_TESTS |
| 227 inline std::ostream& operator<<(std::ostream& os, const String& str) | 227 inline std::ostream& operator<<(std::ostream& os, const String& str) |
| 228 { | 228 { |
| 229 #ifdef ABP_UTF8_STRING | 229 #ifdef ABP_UTF8_STRING |
| 230 os.write(str.data(), str.length()); | 230 os.write(str.data(), str.length()); |
| 231 #else | 231 #else |
| 232 #if _MSC_VER >= 1900 | |
| 233 std::wstring_convert<std::codecvt_utf8_utf16<int16_t>, int16_t> converter; | |
| 234 auto p = reinterpret_cast<const int16_t *>(str.data()); | |
| 235 os << converter.to_bytes(p, p + str.length()); | |
| 236 #else | |
| 232 std::wstring_convert<std::codecvt_utf8<char16_t>, char16_t> converter; | 237 std::wstring_convert<std::codecvt_utf8<char16_t>, char16_t> converter; |
| 233 os << converter.to_bytes(str.data(), str.data() + str.length()); | 238 os << converter.to_bytes(str.data(), str.data() + str.length()); |
| 234 #endif | 239 #endif // _MSC_VER >= 1900 |
| 240 #endif // ABP_UTF8_STRING | |
| 235 return os; | 241 return os; |
| 236 } | 242 } |
| 237 #endif | 243 #endif // INSIDE_TESTS |
| 238 | 244 |
| 239 class DependentString : public String | 245 class DependentString : public String |
| 240 { | 246 { |
| 241 public: | 247 public: |
| 242 explicit DependentString() | 248 explicit DependentString() |
| 243 : String(nullptr, 0, INVALID) | 249 : String(nullptr, 0, INVALID) |
| 244 { | 250 { |
| 245 } | 251 } |
| 246 | 252 |
| 247 explicit DependentString(value_type* buf, size_type len) | 253 explicit DependentString(value_type* buf, size_type len) |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 552 return OwnedString{value}; | 558 return OwnedString{value}; |
| 553 } | 559 } |
| 554 | 560 |
| 555 DependentString TrimSpaces(const String& value); | 561 DependentString TrimSpaces(const String& value); |
| 556 | 562 |
| 557 // Splits the `value` string into two `DependentString`s excluding the character staying at `separatorPos`. | 563 // Splits the `value` string into two `DependentString`s excluding the character staying at `separatorPos`. |
| 558 // Useful for parsing. | 564 // Useful for parsing. |
| 559 std::pair<DependentString, DependentString> SplitString(const String& value, Str ing::size_type separatorPos); | 565 std::pair<DependentString, DependentString> SplitString(const String& value, Str ing::size_type separatorPos); |
| 560 | 566 |
| 561 ABP_NS_END | 567 ABP_NS_END |
| LEFT | RIGHT |