String16.h revision 9d589aa0d63e1eb088b10f065ee7fb0765d2e285
1cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project/* 2cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project * Copyright (C) 2005 The Android Open Source Project 3cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project * 4cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project * you may not use this file except in compliance with the License. 6cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project * You may obtain a copy of the License at 7cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project * 8cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project * 10cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project * See the License for the specific language governing permissions and 14cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project * limitations under the License. 15cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project */ 16cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 17cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project#ifndef ANDROID_STRING16_H 18cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project#define ANDROID_STRING16_H 19cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 20cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project#include <utils/Errors.h> 21cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project#include <utils/SharedBuffer.h> 22cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 23cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project#include <stdint.h> 24cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project#include <sys/types.h> 25cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 26cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// --------------------------------------------------------------------------- 27cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 28cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectextern "C" { 29cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 30cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projecttypedef uint16_t char16_t; 31cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 32cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// Standard string functions on char16 strings. 33cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectint strcmp16(const char16_t *, const char16_t *); 34cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectint strncmp16(const char16_t *s1, const char16_t *s2, size_t n); 35cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectsize_t strlen16(const char16_t *); 36cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectsize_t strnlen16(const char16_t *, size_t); 37cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectchar16_t *strcpy16(char16_t *, const char16_t *); 38cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectchar16_t *strncpy16(char16_t *, const char16_t *, size_t); 39cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 40cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// Version of comparison that supports embedded nulls. 41cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// This is different than strncmp() because we don't stop 42cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// at a nul character and consider the strings to be different 43cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// if the lengths are different (thus we need to supply the 44cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// lengths of both strings). This can also be used when 45cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// your string is not nul-terminated as it will have the 46cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// equivalent result as strcmp16 (unlike strncmp16). 47cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectint strzcmp16(const char16_t *s1, size_t n1, const char16_t *s2, size_t n2); 48cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 49cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// Version of strzcmp16 for comparing strings in different endianness. 50cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectint strzcmp16_h_n(const char16_t *s1H, size_t n1, const char16_t *s2N, size_t n2); 51cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 529a2d83e698b16ec86ad2751b6e7cf103ad645cceKenny Root// Convert UTF-8 to UTF-16 including surrogate pairs 539a2d83e698b16ec86ad2751b6e7cf103ad645cceKenny Rootvoid utf8_to_utf16(const uint8_t *src, size_t srcLen, char16_t* dst, const size_t dstLen); 549a2d83e698b16ec86ad2751b6e7cf103ad645cceKenny Root 55cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 56cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 57cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// --------------------------------------------------------------------------- 58cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 59cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectnamespace android { 60cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 619a2d83e698b16ec86ad2751b6e7cf103ad645cceKenny Root// --------------------------------------------------------------------------- 629a2d83e698b16ec86ad2751b6e7cf103ad645cceKenny Root 63cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectclass String8; 64cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectclass TextOutput; 65cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 66cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project//! This is a string holding UTF-16 characters. 67cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectclass String16 68cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 69cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectpublic: 70cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project String16(); 71cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project String16(const String16& o); 72cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project String16(const String16& o, 73cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project size_t len, 74cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project size_t begin=0); 75cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project explicit String16(const char16_t* o); 76cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project explicit String16(const char16_t* o, size_t len); 77cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project explicit String16(const String8& o); 78cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project explicit String16(const char* o); 79cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project explicit String16(const char* o, size_t len); 80cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 81cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project ~String16(); 82cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 83cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline const char16_t* string() const; 84cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline size_t size() const; 85cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 86cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline const SharedBuffer* sharedBuffer() const; 87cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 88cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project void setTo(const String16& other); 89cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project status_t setTo(const char16_t* other); 90cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project status_t setTo(const char16_t* other, size_t len); 91cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project status_t setTo(const String16& other, 92cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project size_t len, 93cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project size_t begin=0); 94cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 95cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project status_t append(const String16& other); 96cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project status_t append(const char16_t* other, size_t len); 97cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 98cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline String16& operator=(const String16& other); 99cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 100cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline String16& operator+=(const String16& other); 101cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline String16 operator+(const String16& other) const; 102cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 103cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project status_t insert(size_t pos, const char16_t* chrs); 104cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project status_t insert(size_t pos, 105cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project const char16_t* chrs, size_t len); 106cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 107cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project ssize_t findFirst(char16_t c) const; 108cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project ssize_t findLast(char16_t c) const; 109cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 110cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project bool startsWith(const String16& prefix) const; 111cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project bool startsWith(const char16_t* prefix) const; 112cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 113cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project status_t makeLower(); 114cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 115cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project status_t replaceAll(char16_t replaceThis, 116cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project char16_t withThis); 117cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 118cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project status_t remove(size_t len, size_t begin=0); 119cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 120cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline int compare(const String16& other) const; 121cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 122cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline bool operator<(const String16& other) const; 123cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline bool operator<=(const String16& other) const; 124cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline bool operator==(const String16& other) const; 125cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline bool operator!=(const String16& other) const; 126cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline bool operator>=(const String16& other) const; 127cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline bool operator>(const String16& other) const; 128cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 129cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline bool operator<(const char16_t* other) const; 130cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline bool operator<=(const char16_t* other) const; 131cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline bool operator==(const char16_t* other) const; 132cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline bool operator!=(const char16_t* other) const; 133cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline bool operator>=(const char16_t* other) const; 134cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline bool operator>(const char16_t* other) const; 135cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 136cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project inline operator const char16_t*() const; 137cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 138cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectprivate: 139cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project const char16_t* mString; 140cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project}; 141cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 142cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source ProjectTextOutput& operator<<(TextOutput& to, const String16& val); 143cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 144cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// --------------------------------------------------------------------------- 145cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// No user servicable parts below. 146cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 147cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline int compare_type(const String16& lhs, const String16& rhs) 148cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 149cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return lhs.compare(rhs); 150cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 151cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 152cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline int strictly_order_type(const String16& lhs, const String16& rhs) 153cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 154cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return compare_type(lhs, rhs) < 0; 155cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 156cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 157cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline const char16_t* String16::string() const 158cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 159cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return mString; 160cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 161cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 162cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline size_t String16::size() const 163cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 164cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return SharedBuffer::sizeFromData(mString)/sizeof(char16_t)-1; 165cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 166cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 167cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline const SharedBuffer* String16::sharedBuffer() const 168cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 169cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return SharedBuffer::bufferFromData(mString); 170cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 171cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 172cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline String16& String16::operator=(const String16& other) 173cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 174cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project setTo(other); 175cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return *this; 176cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 177cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 178cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline String16& String16::operator+=(const String16& other) 179cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 180cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project append(other); 181cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return *this; 182cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 183cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 184cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline String16 String16::operator+(const String16& other) const 185cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 186cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project String16 tmp; 187cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project tmp += other; 188cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return tmp; 189cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 190cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 191cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline int String16::compare(const String16& other) const 192cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 193cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return strzcmp16(mString, size(), other.mString, other.size()); 194cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 195cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 196cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline bool String16::operator<(const String16& other) const 197cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 198cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return strzcmp16(mString, size(), other.mString, other.size()) < 0; 199cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 200cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 201cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline bool String16::operator<=(const String16& other) const 202cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 203cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return strzcmp16(mString, size(), other.mString, other.size()) <= 0; 204cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 205cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 206cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline bool String16::operator==(const String16& other) const 207cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 2089d589aa0d63e1eb088b10f065ee7fb0765d2e285Brad Fitzpatrick return strzcmp16(mString, size(), other.mString, other.size()) == 0; 209cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 210cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 211cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline bool String16::operator!=(const String16& other) const 212cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 213cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return strzcmp16(mString, size(), other.mString, other.size()) != 0; 214cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 215cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 216cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline bool String16::operator>=(const String16& other) const 217cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 218cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return strzcmp16(mString, size(), other.mString, other.size()) >= 0; 219cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 220cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 221cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline bool String16::operator>(const String16& other) const 222cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 223cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return strzcmp16(mString, size(), other.mString, other.size()) > 0; 224cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 225cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 226cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline bool String16::operator<(const char16_t* other) const 227cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 228cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return strcmp16(mString, other) < 0; 229cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 230cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 231cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline bool String16::operator<=(const char16_t* other) const 232cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 233cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return strcmp16(mString, other) <= 0; 234cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 235cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 236cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline bool String16::operator==(const char16_t* other) const 237cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 238cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return strcmp16(mString, other) == 0; 239cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 240cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 241cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline bool String16::operator!=(const char16_t* other) const 242cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 243cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return strcmp16(mString, other) != 0; 244cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 245cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 246cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline bool String16::operator>=(const char16_t* other) const 247cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 248cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return strcmp16(mString, other) >= 0; 249cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 250cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 251cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline bool String16::operator>(const char16_t* other) const 252cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 253cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return strcmp16(mString, other) > 0; 254cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 255cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 256cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Projectinline String16::operator const char16_t*() const 257cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project{ 258cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project return mString; 259cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project} 260cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 261cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project}; // namespace android 262cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 263cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project// --------------------------------------------------------------------------- 264cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project 265cbb1011c95e0c25c29e40e203a6a31bccd029da3The Android Open Source Project#endif // ANDROID_STRING16_H 266