media/omx-plugin/include/ics/utils/String16.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /*
     2  * Copyright (C) 2005 The Android Open Source Project
     3  *
     4  * Licensed under the Apache License, Version 2.0 (the "License");
     5  * you may not use this file except in compliance with the License.
     6  * You may obtain a copy of the License at
     7  *
     8  *      http://www.apache.org/licenses/LICENSE-2.0
     9  *
    10  * Unless required by applicable law or agreed to in writing, software
    11  * distributed under the License is distributed on an "AS IS" BASIS,
    12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  * See the License for the specific language governing permissions and
    14  * limitations under the License.
    15  */
    17 #ifndef ANDROID_STRING16_H
    18 #define ANDROID_STRING16_H
    20 #include <utils/Errors.h>
    21 #include <utils/SharedBuffer.h>
    22 #include <utils/Unicode.h>
    24 // ---------------------------------------------------------------------------
    26 extern "C" {
    28 }
    30 // ---------------------------------------------------------------------------
    32 namespace android {
    34 // ---------------------------------------------------------------------------
    36 class String8;
    37 class TextOutput;
    39 //! This is a string holding UTF-16 characters.
    40 class String16
    41 {
    42 public:
    43                                 String16();
    44                                 String16(const String16& o);
    45                                 String16(const String16& o,
    46                                          size_t len,
    47                                          size_t begin=0);
    48     explicit                    String16(const char16_t* o);
    49     explicit                    String16(const char16_t* o, size_t len);
    50     explicit                    String16(const String8& o);
    51     explicit                    String16(const char* o);
    52     explicit                    String16(const char* o, size_t len);
    54                                 ~String16();
    56     inline  const char16_t*     string() const;
    57     inline  size_t              size() const;
    59     inline  const SharedBuffer* sharedBuffer() const;
    61             void                setTo(const String16& other);
    62             status_t            setTo(const char16_t* other);
    63             status_t            setTo(const char16_t* other, size_t len);
    64             status_t            setTo(const String16& other,
    65                                       size_t len,
    66                                       size_t begin=0);
    68             status_t            append(const String16& other);
    69             status_t            append(const char16_t* other, size_t len);
    71     inline  String16&           operator=(const String16& other);
    73     inline  String16&           operator+=(const String16& other);
    74     inline  String16            operator+(const String16& other) const;
    76             status_t            insert(size_t pos, const char16_t* chrs);
    77             status_t            insert(size_t pos,
    78                                        const char16_t* chrs, size_t len);
    80             ssize_t             findFirst(char16_t c) const;
    81             ssize_t             findLast(char16_t c) const;
    83             bool                startsWith(const String16& prefix) const;
    84             bool                startsWith(const char16_t* prefix) const;
    86             status_t            makeLower();
    88             status_t            replaceAll(char16_t replaceThis,
    89                                            char16_t withThis);
    91             status_t            remove(size_t len, size_t begin=0);
    93     inline  int                 compare(const String16& other) const;
    95     inline  bool                operator<(const String16& other) const;
    96     inline  bool                operator<=(const String16& other) const;
    97     inline  bool                operator==(const String16& other) const;
    98     inline  bool                operator!=(const String16& other) const;
    99     inline  bool                operator>=(const String16& other) const;
   100     inline  bool                operator>(const String16& other) const;
   102     inline  bool                operator<(const char16_t* other) const;
   103     inline  bool                operator<=(const char16_t* other) const;
   104     inline  bool                operator==(const char16_t* other) const;
   105     inline  bool                operator!=(const char16_t* other) const;
   106     inline  bool                operator>=(const char16_t* other) const;
   107     inline  bool                operator>(const char16_t* other) const;
   109     inline                      operator const char16_t*() const;
   111 private:
   112             const char16_t*     mString;
   113 };
   115 TextOutput& operator<<(TextOutput& to, const String16& val);
   117 // ---------------------------------------------------------------------------
   118 // No user servicable parts below.
   120 inline int compare_type(const String16& lhs, const String16& rhs)
   121 {
   122     return lhs.compare(rhs);
   123 }
   125 inline int strictly_order_type(const String16& lhs, const String16& rhs)
   126 {
   127     return compare_type(lhs, rhs) < 0;
   128 }
   130 inline const char16_t* String16::string() const
   131 {
   132     return mString;
   133 }
   135 inline size_t String16::size() const
   136 {
   137     return SharedBuffer::sizeFromData(mString)/sizeof(char16_t)-1;
   138 }
   140 inline const SharedBuffer* String16::sharedBuffer() const
   141 {
   142     return SharedBuffer::bufferFromData(mString);
   143 }
   145 inline String16& String16::operator=(const String16& other)
   146 {
   147     setTo(other);
   148     return *this;
   149 }
   151 inline String16& String16::operator+=(const String16& other)
   152 {
   153     append(other);
   154     return *this;
   155 }
   157 inline String16 String16::operator+(const String16& other) const
   158 {
   159     String16 tmp(*this);
   160     tmp += other;
   161     return tmp;
   162 }
   164 inline int String16::compare(const String16& other) const
   165 {
   166     return strzcmp16(mString, size(), other.mString, other.size());
   167 }
   169 inline bool String16::operator<(const String16& other) const
   170 {
   171     return strzcmp16(mString, size(), other.mString, other.size()) < 0;
   172 }
   174 inline bool String16::operator<=(const String16& other) const
   175 {
   176     return strzcmp16(mString, size(), other.mString, other.size()) <= 0;
   177 }
   179 inline bool String16::operator==(const String16& other) const
   180 {
   181     return strzcmp16(mString, size(), other.mString, other.size()) == 0;
   182 }
   184 inline bool String16::operator!=(const String16& other) const
   185 {
   186     return strzcmp16(mString, size(), other.mString, other.size()) != 0;
   187 }
   189 inline bool String16::operator>=(const String16& other) const
   190 {
   191     return strzcmp16(mString, size(), other.mString, other.size()) >= 0;
   192 }
   194 inline bool String16::operator>(const String16& other) const
   195 {
   196     return strzcmp16(mString, size(), other.mString, other.size()) > 0;
   197 }
   199 inline bool String16::operator<(const char16_t* other) const
   200 {
   201     return strcmp16(mString, other) < 0;
   202 }
   204 inline bool String16::operator<=(const char16_t* other) const
   205 {
   206     return strcmp16(mString, other) <= 0;
   207 }
   209 inline bool String16::operator==(const char16_t* other) const
   210 {
   211     return strcmp16(mString, other) == 0;
   212 }
   214 inline bool String16::operator!=(const char16_t* other) const
   215 {
   216     return strcmp16(mString, other) != 0;
   217 }
   219 inline bool String16::operator>=(const char16_t* other) const
   220 {
   221     return strcmp16(mString, other) >= 0;
   222 }
   224 inline bool String16::operator>(const char16_t* other) const
   225 {
   226     return strcmp16(mString, other) > 0;
   227 }
   229 inline String16::operator const char16_t*() const
   230 {
   231     return mString;
   232 }
   234 }; // namespace android
   236 // ---------------------------------------------------------------------------
   238 #endif // ANDROID_STRING16_H

mercurial