Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(152)

Side by Side Diff: mojo/public/cpp/bindings/string.h

Issue 611633002: mojom: Add associative arrays to the mojom language. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <string> 8 #include <string>
9 9
10 #include "mojo/public/cpp/bindings/lib/array_internal.h" 10 #include "mojo/public/cpp/bindings/lib/array_internal.h"
(...skipping 22 matching lines...) Expand all
33 template <typename U> 33 template <typename U>
34 static String From(const U& other) { 34 static String From(const U& other) {
35 return TypeConverter<String, U>::Convert(other); 35 return TypeConverter<String, U>::Convert(other);
36 } 36 }
37 37
38 template <typename U> 38 template <typename U>
39 U To() const { 39 U To() const {
40 return TypeConverter<U, String>::Convert(*this); 40 return TypeConverter<U, String>::Convert(*this);
41 } 41 }
42 42
43 String& operator=(const mojo::String& str) {
yzshen1 2014/09/27 00:01:58 Do you also want to add a copy constructor?
Elliot Glaysher 2014/10/02 19:54:03 Done.
44 value_ = str.value_;
45 is_null_ = str.is_null_;
46 return *this;
47 }
43 String& operator=(const std::string& str) { 48 String& operator=(const std::string& str) {
44 value_ = str; 49 value_ = str;
45 is_null_ = false; 50 is_null_ = false;
46 return *this; 51 return *this;
47 } 52 }
48 String& operator=(const char* chars) { 53 String& operator=(const char* chars) {
49 is_null_ = !chars; 54 is_null_ = !chars;
50 if (chars) { 55 if (chars) {
51 value_ = chars; 56 value_ = chars;
52 } else { 57 } else {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 return !a.is_null() && a.get() == b; 108 return !a.is_null() && a.get() == b;
104 } 109 }
105 inline bool operator!=(const String& a, const String& b) { return !(a == b); } 110 inline bool operator!=(const String& a, const String& b) { return !(a == b); }
106 inline bool operator!=(const char* a, const String& b) { return !(a == b); } 111 inline bool operator!=(const char* a, const String& b) { return !(a == b); }
107 inline bool operator!=(const String& a, const char* b) { return !(a == b); } 112 inline bool operator!=(const String& a, const char* b) { return !(a == b); }
108 113
109 inline std::ostream& operator<<(std::ostream& out, const String& s) { 114 inline std::ostream& operator<<(std::ostream& out, const String& s) {
110 return out << s.get(); 115 return out << s.get();
111 } 116 }
112 117
118 inline bool operator<(const String& a, const String& b) {
119 // TODO(erg): This needs a test.
120 if (a.is_null() && !b.is_null()) {
121 // The null string is less than a non-NULL string.
122 return true;
123 } else if (a.is_null() || b.is_null()) {
124 // in all other cases where A or B is NULL, |a| is not less than |b|.
125 return false;
126 }
127
128 return a.get() < b.get();
129 }
130
113 // TODO(darin): Add similar variants of operator<,<=,>,>= 131 // TODO(darin): Add similar variants of operator<,<=,>,>=
114 132
115 template <> 133 template <>
116 struct TypeConverter<String, std::string> { 134 struct TypeConverter<String, std::string> {
117 static String Convert(const std::string& input) { return String(input); } 135 static String Convert(const std::string& input) { return String(input); }
118 }; 136 };
119 137
120 template <> 138 template <>
121 struct TypeConverter<std::string, String> { 139 struct TypeConverter<std::string, String> {
122 static std::string Convert(const String& input) { return input; } 140 static std::string Convert(const String& input) { return input; }
(...skipping 18 matching lines...) Expand all
141 159
142 template <> 160 template <>
143 struct TypeConverter<String, const char*> { 161 struct TypeConverter<String, const char*> {
144 // |input| may be null, in which case a null String will be returned. 162 // |input| may be null, in which case a null String will be returned.
145 static String Convert(const char* input) { return String(input); } 163 static String Convert(const char* input) { return String(input); }
146 }; 164 };
147 165
148 } // namespace mojo 166 } // namespace mojo
149 167
150 #endif // MOJO_PUBLIC_CPP_BINDINGS_STRING_H_ 168 #endif // MOJO_PUBLIC_CPP_BINDINGS_STRING_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698