Chromium Code Reviews| Index: mojo/public/cpp/bindings/string.h |
| diff --git a/mojo/public/cpp/bindings/string.h b/mojo/public/cpp/bindings/string.h |
| index 3c1520a679e465de6335c5f35408862294b1c120..2b1f461d28d38469e1ac8563978801fabb90d540 100644 |
| --- a/mojo/public/cpp/bindings/string.h |
| +++ b/mojo/public/cpp/bindings/string.h |
| @@ -25,6 +25,9 @@ class String { |
| } |
| String(const char* chars, size_t num_chars) |
| : value_(chars, num_chars), is_null_(false) {} |
| + String(const mojo::String& str) |
| + : value_(str.value_), is_null_(str.is_null_) {} |
| + |
| template <size_t N> |
| String(const char chars[N]) |
| : value_(chars, N - 1), is_null_(false) {} |
| @@ -39,6 +42,11 @@ class String { |
| return TypeConverter<U, String>::Convert(*this); |
| } |
| + String& operator=(const mojo::String& str) { |
| + value_ = str.value_; |
| + is_null_ = str.is_null_; |
| + return *this; |
| + } |
| String& operator=(const std::string& str) { |
| value_ = str; |
| is_null_ = false; |
| @@ -115,6 +123,18 @@ inline std::ostream& operator<<(std::ostream& out, const String& s) { |
| return out << s.get(); |
| } |
| +inline bool operator<(const String& a, const String& b) { |
| + if (a.is_null() && !b.is_null()) { |
| + // The null string is less than a non-NULL string. |
|
viettrungluu
2014/10/09 22:22:35
nit: lowercase "null" please
|
| + return true; |
| + } else if (a.is_null() || b.is_null()) { |
|
viettrungluu
2014/10/09 22:22:35
nit: no "else"
|
| + // in all other cases where A or B is NULL, |a| is not less than |b|. |
|
viettrungluu
2014/10/09 22:22:35
nit: Capitalize "In" and lowercase "null".
I migh
|
| + return false; |
| + } |
| + |
| + return a.get() < b.get(); |
| +} |
| + |
| // TODO(darin): Add similar variants of operator<,<=,>,>= |
| template <> |