Home | History | Annotate | Download | only in phonenumbers
      1 // Copyright (C) 2012 The Libphonenumber Authors
      2 //
      3 // Licensed under the Apache License, Version 2.0 (the "License");
      4 // you may not use this file except in compliance with the License.
      5 // You may obtain a copy of the License at
      6 //
      7 // http://www.apache.org/licenses/LICENSE-2.0
      8 //
      9 // Unless required by applicable law or agreed to in writing, software
     10 // distributed under the License is distributed on an "AS IS" BASIS,
     11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 // See the License for the specific language governing permissions and
     13 // limitations under the License.
     14 
     15 // We need this because when ICU is built without std::string support,
     16 // UnicodeString::toUTF8String() is not available. The alternative,
     17 // UnicodeString::toUTF8(), requires an implementation of a string byte sink.
     18 // See unicode/unistr.h and unicode/bytestream.h in ICU for more details.
     19 
     20 #include <string>
     21 
     22 #include <unicode/unistr.h>
     23 
     24 namespace i18n {
     25 namespace phonenumbers {
     26 
     27 class StringByteSink : public icu::ByteSink {
     28  public:
     29   // Constructs a ByteSink that will append bytes to the dest string.
     30   explicit StringByteSink(std::string* dest);
     31   virtual ~StringByteSink();
     32 
     33   virtual void Append(const char* data, int32_t n);
     34 
     35  private:
     36   std::string* const dest_;
     37 };
     38 
     39 }  // namespace phonenumbers
     40 }  // namespace i18n
     41