OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_STRING_H_ | 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_STRING_H_ |
6 #define MOJO_PUBLIC_CPP_BINDINGS_STRING_H_ | 6 #define MOJO_PUBLIC_CPP_BINDINGS_STRING_H_ |
7 | 7 |
| 8 #include <iosfwd> |
8 #include <string> | 9 #include <string> |
9 | 10 |
10 #include "mojo/public/cpp/bindings/lib/array_internal.h" | 11 #include "mojo/public/cpp/bindings/lib/array_internal.h" |
11 #include "mojo/public/cpp/bindings/type_converter.h" | 12 #include "mojo/public/cpp/bindings/type_converter.h" |
12 #include "mojo/public/cpp/environment/logging.h" | 13 #include "mojo/public/cpp/environment/logging.h" |
13 | 14 |
14 namespace mojo { | 15 namespace mojo { |
15 | 16 |
16 // A UTF-8 encoded character string that can be null. Provides functions that | 17 // A UTF-8 encoded character string that can be null. Provides functions that |
17 // are similar to std::string, along with access to the underlying std::string | 18 // are similar to std::string, along with access to the underlying std::string |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 inline bool operator!=(const String& a, const String& b) { | 116 inline bool operator!=(const String& a, const String& b) { |
116 return !(a == b); | 117 return !(a == b); |
117 } | 118 } |
118 inline bool operator!=(const char* a, const String& b) { | 119 inline bool operator!=(const char* a, const String& b) { |
119 return !(a == b); | 120 return !(a == b); |
120 } | 121 } |
121 inline bool operator!=(const String& a, const char* b) { | 122 inline bool operator!=(const String& a, const char* b) { |
122 return !(a == b); | 123 return !(a == b); |
123 } | 124 } |
124 | 125 |
| 126 // TODO(jeffbrown): Decide whether this should print a sentinel value |
| 127 // such as "<null>" when formatting null strings. |
125 inline std::ostream& operator<<(std::ostream& out, const String& s) { | 128 inline std::ostream& operator<<(std::ostream& out, const String& s) { |
126 return out << s.get(); | 129 return out << s.get(); |
127 } | 130 } |
128 | 131 |
129 inline bool operator<(const String& a, const String& b) { | 132 inline bool operator<(const String& a, const String& b) { |
130 if (a.is_null()) | 133 if (a.is_null()) |
131 return !b.is_null(); | 134 return !b.is_null(); |
132 if (b.is_null()) | 135 if (b.is_null()) |
133 return false; | 136 return false; |
134 | 137 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 | 169 |
167 template <> | 170 template <> |
168 struct TypeConverter<String, const char*> { | 171 struct TypeConverter<String, const char*> { |
169 // |input| may be null, in which case a null String will be returned. | 172 // |input| may be null, in which case a null String will be returned. |
170 static String Convert(const char* input) { return String(input); } | 173 static String Convert(const char* input) { return String(input); } |
171 }; | 174 }; |
172 | 175 |
173 } // namespace mojo | 176 } // namespace mojo |
174 | 177 |
175 #endif // MOJO_PUBLIC_CPP_BINDINGS_STRING_H_ | 178 #endif // MOJO_PUBLIC_CPP_BINDINGS_STRING_H_ |
OLD | NEW |