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