11767c5feSopenharmony_ci// Copyright (C) 2012 The Libphonenumber Authors 21767c5feSopenharmony_ci// 31767c5feSopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License"); 41767c5feSopenharmony_ci// you may not use this file except in compliance with the License. 51767c5feSopenharmony_ci// You may obtain a copy of the License at 61767c5feSopenharmony_ci// 71767c5feSopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0 81767c5feSopenharmony_ci// 91767c5feSopenharmony_ci// Unless required by applicable law or agreed to in writing, software 101767c5feSopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS, 111767c5feSopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121767c5feSopenharmony_ci// See the License for the specific language governing permissions and 131767c5feSopenharmony_ci// limitations under the License. 141767c5feSopenharmony_ci 151767c5feSopenharmony_ci// We need this because when ICU is built without std::string support, 161767c5feSopenharmony_ci// UnicodeString::toUTF8String() is not available. The alternative, 171767c5feSopenharmony_ci// UnicodeString::toUTF8(), requires an implementation of a string byte sink. 181767c5feSopenharmony_ci// See unicode/unistr.h and unicode/bytestream.h in ICU for more details. 191767c5feSopenharmony_ci 201767c5feSopenharmony_ci#include <string> 211767c5feSopenharmony_ci 221767c5feSopenharmony_ci#include <unicode/unistr.h> 231767c5feSopenharmony_ci 241767c5feSopenharmony_cinamespace i18n { 251767c5feSopenharmony_cinamespace phonenumbers { 261767c5feSopenharmony_ci 271767c5feSopenharmony_ciclass StringByteSink : public icu::ByteSink { 281767c5feSopenharmony_ci public: 291767c5feSopenharmony_ci // Constructs a ByteSink that will append bytes to the dest string. 301767c5feSopenharmony_ci explicit StringByteSink(std::string* dest); 311767c5feSopenharmony_ci virtual ~StringByteSink(); 321767c5feSopenharmony_ci 331767c5feSopenharmony_ci virtual void Append(const char* data, int32_t n); 341767c5feSopenharmony_ci 351767c5feSopenharmony_ci private: 361767c5feSopenharmony_ci std::string* const dest_; 371767c5feSopenharmony_ci}; 381767c5feSopenharmony_ci 391767c5feSopenharmony_ci} // namespace phonenumbers 401767c5feSopenharmony_ci} // namespace i18n 41