LCOV - code coverage report
Current view: top level - media/libstagefright/system/core/include/utils - String16.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 6 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 3 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       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             :  */
      16             : 
      17             : #ifndef ANDROID_STRING16_H
      18             : #define ANDROID_STRING16_H
      19             : 
      20             : #include <utils/Errors.h>
      21             : #include <utils/SharedBuffer.h>
      22             : #include <utils/Unicode.h>
      23             : #include <utils/TypeHelpers.h>
      24             : 
      25             : // ---------------------------------------------------------------------------
      26             : 
      27             : extern "C" {
      28             : 
      29             : }
      30             : 
      31             : // ---------------------------------------------------------------------------
      32             : 
      33             : namespace stagefright {
      34             : 
      35             : // ---------------------------------------------------------------------------
      36             : 
      37             : class String8;
      38             : class TextOutput;
      39             : 
      40             : //! This is a string holding UTF-16 characters.
      41             : class String16
      42             : {
      43             : public:
      44             :     /* use String16(StaticLinkage) if you're statically linking against
      45             :      * libutils and declaring an empty static String16, e.g.:
      46             :      *
      47             :      *   static String16 sAStaticEmptyString(String16::kEmptyString);
      48             :      *   static String16 sAnotherStaticEmptyString(sAStaticEmptyString);
      49             :      */
      50             :     enum StaticLinkage { kEmptyString };
      51             : 
      52             :                                 String16();
      53             :     explicit                    String16(StaticLinkage);
      54             :                                 String16(const String16& o);
      55             :                                 String16(const String16& o,
      56             :                                          size_t len,
      57             :                                          size_t begin=0);
      58             :     explicit                    String16(const char16_t* o);
      59             :     explicit                    String16(const char16_t* o, size_t len);
      60             :     explicit                    String16(const String8& o);
      61             :     explicit                    String16(const char* o);
      62             :     explicit                    String16(const char* o, size_t len);
      63             : 
      64             :                                 ~String16();
      65             :     
      66             :     inline  const char16_t*     string() const;
      67             :     inline  size_t              size() const;
      68             :     
      69             :     inline  const SharedBuffer* sharedBuffer() const;
      70             :     
      71             :             void                setTo(const String16& other);
      72             :             status_t            setTo(const char16_t* other);
      73             :             status_t            setTo(const char16_t* other, size_t len);
      74             :             status_t            setTo(const String16& other,
      75             :                                       size_t len,
      76             :                                       size_t begin=0);
      77             :     
      78             :             status_t            append(const String16& other);
      79             :             status_t            append(const char16_t* other, size_t len);
      80             :             
      81             :     inline  String16&           operator=(const String16& other);
      82             :     
      83             :     inline  String16&           operator+=(const String16& other);
      84             :     inline  String16            operator+(const String16& other) const;
      85             : 
      86             :             status_t            insert(size_t pos, const char16_t* chrs);
      87             :             status_t            insert(size_t pos,
      88             :                                        const char16_t* chrs, size_t len);
      89             : 
      90             :             ssize_t             findFirst(char16_t c) const;
      91             :             ssize_t             findLast(char16_t c) const;
      92             : 
      93             :             bool                startsWith(const String16& prefix) const;
      94             :             bool                startsWith(const char16_t* prefix) const;
      95             :             
      96             :             status_t            makeLower();
      97             : 
      98             :             status_t            replaceAll(char16_t replaceThis,
      99             :                                            char16_t withThis);
     100             : 
     101             :             status_t            remove(size_t len, size_t begin=0);
     102             : 
     103             :     inline  int                 compare(const String16& other) const;
     104             : 
     105             :     inline  bool                operator<(const String16& other) const;
     106             :     inline  bool                operator<=(const String16& other) const;
     107             :     inline  bool                operator==(const String16& other) const;
     108             :     inline  bool                operator!=(const String16& other) const;
     109             :     inline  bool                operator>=(const String16& other) const;
     110             :     inline  bool                operator>(const String16& other) const;
     111             :     
     112             :     inline  bool                operator<(const char16_t* other) const;
     113             :     inline  bool                operator<=(const char16_t* other) const;
     114             :     inline  bool                operator==(const char16_t* other) const;
     115             :     inline  bool                operator!=(const char16_t* other) const;
     116             :     inline  bool                operator>=(const char16_t* other) const;
     117             :     inline  bool                operator>(const char16_t* other) const;
     118             :     
     119             :     inline                      operator const char16_t*() const;
     120             :     
     121             : private:
     122             :             const char16_t*     mString;
     123             : };
     124             : 
     125             : // String16 can be trivially moved using memcpy() because moving does not
     126             : // require any change to the underlying SharedBuffer contents or reference count.
     127             : ANDROID_TRIVIAL_MOVE_TRAIT(String16)
     128             : 
     129             : // ---------------------------------------------------------------------------
     130             : // No user servicable parts below.
     131             : 
     132             : inline int compare_type(const String16& lhs, const String16& rhs)
     133             : {
     134             :     return lhs.compare(rhs);
     135             : }
     136             : 
     137             : inline int strictly_order_type(const String16& lhs, const String16& rhs)
     138             : {
     139             :     return compare_type(lhs, rhs) < 0;
     140             : }
     141             : 
     142           0 : inline const char16_t* String16::string() const
     143             : {
     144           0 :     return mString;
     145             : }
     146             : 
     147           0 : inline size_t String16::size() const
     148             : {
     149           0 :     return SharedBuffer::sizeFromData(mString)/sizeof(char16_t)-1;
     150             : }
     151             : 
     152             : inline const SharedBuffer* String16::sharedBuffer() const
     153             : {
     154             :     return SharedBuffer::bufferFromData(mString);
     155             : }
     156             : 
     157             : inline String16& String16::operator=(const String16& other)
     158             : {
     159             :     setTo(other);
     160             :     return *this;
     161             : }
     162             : 
     163             : inline String16& String16::operator+=(const String16& other)
     164             : {
     165             :     append(other);
     166             :     return *this;
     167             : }
     168             : 
     169             : inline String16 String16::operator+(const String16& other) const
     170             : {
     171             :     String16 tmp(*this);
     172             :     tmp += other;
     173             :     return tmp;
     174             : }
     175             : 
     176             : inline int String16::compare(const String16& other) const
     177             : {
     178             :     return strzcmp16(mString, size(), other.mString, other.size());
     179             : }
     180             : 
     181             : inline bool String16::operator<(const String16& other) const
     182             : {
     183             :     return strzcmp16(mString, size(), other.mString, other.size()) < 0;
     184             : }
     185             : 
     186             : inline bool String16::operator<=(const String16& other) const
     187             : {
     188             :     return strzcmp16(mString, size(), other.mString, other.size()) <= 0;
     189             : }
     190             : 
     191             : inline bool String16::operator==(const String16& other) const
     192             : {
     193             :     return strzcmp16(mString, size(), other.mString, other.size()) == 0;
     194             : }
     195             : 
     196             : inline bool String16::operator!=(const String16& other) const
     197             : {
     198             :     return strzcmp16(mString, size(), other.mString, other.size()) != 0;
     199             : }
     200             : 
     201             : inline bool String16::operator>=(const String16& other) const
     202             : {
     203             :     return strzcmp16(mString, size(), other.mString, other.size()) >= 0;
     204             : }
     205             : 
     206             : inline bool String16::operator>(const String16& other) const
     207             : {
     208             :     return strzcmp16(mString, size(), other.mString, other.size()) > 0;
     209             : }
     210             : 
     211             : inline bool String16::operator<(const char16_t* other) const
     212             : {
     213             :     return strcmp16(mString, other) < 0;
     214             : }
     215             : 
     216             : inline bool String16::operator<=(const char16_t* other) const
     217             : {
     218             :     return strcmp16(mString, other) <= 0;
     219             : }
     220             : 
     221             : inline bool String16::operator==(const char16_t* other) const
     222             : {
     223             :     return strcmp16(mString, other) == 0;
     224             : }
     225             : 
     226             : inline bool String16::operator!=(const char16_t* other) const
     227             : {
     228             :     return strcmp16(mString, other) != 0;
     229             : }
     230             : 
     231             : inline bool String16::operator>=(const char16_t* other) const
     232             : {
     233             :     return strcmp16(mString, other) >= 0;
     234             : }
     235             : 
     236             : inline bool String16::operator>(const char16_t* other) const
     237             : {
     238             :     return strcmp16(mString, other) > 0;
     239             : }
     240             : 
     241           0 : inline String16::operator const char16_t*() const
     242             : {
     243           0 :     return mString;
     244             : }
     245             : 
     246             : }; // namespace stagefright
     247             : 
     248             : // ---------------------------------------------------------------------------
     249             : 
     250             : #endif // ANDROID_STRING16_H

Generated by: LCOV version 1.13