| 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.
|
| + return true;
|
| + } else if (a.is_null() || b.is_null()) {
|
| + // in all other cases where A or B is NULL, |a| is not less than |b|.
|
| + return false;
|
| + }
|
| +
|
| + return a.get() < b.get();
|
| +}
|
| +
|
| // TODO(darin): Add similar variants of operator<,<=,>,>=
|
|
|
| template <>
|
|
|