diff options
| author | 2017-02-09 16:17:15 +0000 | |
|---|---|---|
| committer | 2017-02-09 16:17:18 +0000 | |
| commit | 024d22fdb76a75f72ac1a421c4dd184bbfe2ba12 (patch) | |
| tree | 074240054a9d37547ab9ddd3cac73a05e08b3f0e /libs/androidfw/include | |
| parent | 34895c404b0153f021094d149cf36918edbd4552 (diff) | |
| parent | 7542162cb1b1fd2ce8a26dd7f3fedc8de8160d38 (diff) | |
Merge "AAPT2: Fix pseudolocalization to respect <xliff:g>"
Diffstat (limited to 'libs/androidfw/include')
| -rw-r--r-- | libs/androidfw/include/androidfw/StringPiece.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/libs/androidfw/include/androidfw/StringPiece.h b/libs/androidfw/include/androidfw/StringPiece.h index 8f6824b5322c..a873d66803e7 100644 --- a/libs/androidfw/include/androidfw/StringPiece.h +++ b/libs/androidfw/include/androidfw/StringPiece.h @@ -271,8 +271,36 @@ inline ::std::ostream& operator<<(::std::ostream& out, const BasicStringPiece<ch return out.write(str.data(), str.size()); } +template <typename TChar> +inline ::std::basic_string<TChar>& operator+=(::std::basic_string<TChar>& lhs, + const BasicStringPiece<TChar>& rhs) { + return lhs.append(rhs.data(), rhs.size()); +} + +template <typename TChar> +inline bool operator==(const ::std::basic_string<TChar>& lhs, const BasicStringPiece<TChar>& rhs) { + return rhs == lhs; +} + +template <typename TChar> +inline bool operator!=(const ::std::basic_string<TChar>& lhs, const BasicStringPiece<TChar>& rhs) { + return rhs != lhs; +} + } // namespace android +inline ::std::ostream& operator<<(::std::ostream& out, const std::u16string& str) { + ssize_t utf8_len = utf16_to_utf8_length(str.data(), str.size()); + if (utf8_len < 0) { + return out << "???"; + } + + std::string utf8; + utf8.resize(static_cast<size_t>(utf8_len)); + utf16_to_utf8(str.data(), str.size(), &*utf8.begin(), utf8_len + 1); + return out << utf8; +} + namespace std { template <typename TChar> |