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

Side by Side Diff: base/values.h

Issue 13230: Added std::string to Value via Set/GetString overloading. (Closed)
Patch Set: Final upload check. Created 12 years 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
« no previous file with comments | « no previous file | base/values.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 // This file specifies a recursive data storage class called Value 5 // This file specifies a recursive data storage class called Value
6 // intended for storing setting and other persistable data. 6 // intended for storing setting and other persistable data.
7 // It includes the ability to specify (recursive) lists and dictionaries, so 7 // It includes the ability to specify (recursive) lists and dictionaries, so
8 // it's fairly expressive. However, the API is optimized for the common case, 8 // it's fairly expressive. However, the API is optimized for the common case,
9 // namely storing a hierarchical tree of simple values. Given a 9 // namely storing a hierarchical tree of simple values. Given a
10 // DictionaryValue root, you can easily do things like: 10 // DictionaryValue root, you can easily do things like:
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 public: 45 public:
46 virtual ~Value(); 46 virtual ~Value();
47 47
48 // Convenience methods for creating Value objects for various 48 // Convenience methods for creating Value objects for various
49 // kinds of values without thinking about which class implements them. 49 // kinds of values without thinking about which class implements them.
50 // These can always be expected to return a valid Value*. 50 // These can always be expected to return a valid Value*.
51 static Value* CreateNullValue(); 51 static Value* CreateNullValue();
52 static Value* CreateBooleanValue(bool in_value); 52 static Value* CreateBooleanValue(bool in_value);
53 static Value* CreateIntegerValue(int in_value); 53 static Value* CreateIntegerValue(int in_value);
54 static Value* CreateRealValue(double in_value); 54 static Value* CreateRealValue(double in_value);
55 static Value* CreateStringValue(const std::string& in_value);
55 static Value* CreateStringValue(const std::wstring& in_value); 56 static Value* CreateStringValue(const std::wstring& in_value);
56 57
57 // This one can return NULL if the input isn't valid. If the return value 58 // This one can return NULL if the input isn't valid. If the return value
58 // is non-null, the new object has taken ownership of the buffer pointer. 59 // is non-null, the new object has taken ownership of the buffer pointer.
59 static BinaryValue* CreateBinaryValue(char* buffer, size_t size); 60 static BinaryValue* CreateBinaryValue(char* buffer, size_t size);
60 61
61 typedef enum { 62 typedef enum {
62 TYPE_NULL = 0, 63 TYPE_NULL = 0,
63 TYPE_BOOLEAN, 64 TYPE_BOOLEAN,
64 TYPE_INTEGER, 65 TYPE_INTEGER,
(...skipping 14 matching lines...) Expand all
79 // Returns true if the current object represents a given type. 80 // Returns true if the current object represents a given type.
80 bool IsType(ValueType type) const { return type == type_; } 81 bool IsType(ValueType type) const { return type == type_; }
81 82
82 // These methods allow the convenient retrieval of settings. 83 // These methods allow the convenient retrieval of settings.
83 // If the current setting object can be converted into the given type, 84 // If the current setting object can be converted into the given type,
84 // the value is returned through the "value" parameter and true is returned; 85 // the value is returned through the "value" parameter and true is returned;
85 // otherwise, false is returned and "value" is unchanged. 86 // otherwise, false is returned and "value" is unchanged.
86 virtual bool GetAsBoolean(bool* out_value) const; 87 virtual bool GetAsBoolean(bool* out_value) const;
87 virtual bool GetAsInteger(int* out_value) const; 88 virtual bool GetAsInteger(int* out_value) const;
88 virtual bool GetAsReal(double* out_value) const; 89 virtual bool GetAsReal(double* out_value) const;
90 virtual bool GetAsString(std::string* out_value) const;
89 virtual bool GetAsString(std::wstring* out_value) const; 91 virtual bool GetAsString(std::wstring* out_value) const;
90 92
91 // This creates a deep copy of the entire Value tree, and returns a pointer 93 // This creates a deep copy of the entire Value tree, and returns a pointer
92 // to the copy. The caller gets ownership of the copy, of course. 94 // to the copy. The caller gets ownership of the copy, of course.
93 virtual Value* DeepCopy() const; 95 virtual Value* DeepCopy() const;
94 96
95 // Compares if two Value objects have equal contents. 97 // Compares if two Value objects have equal contents.
96 virtual bool Equals(const Value* other) const; 98 virtual bool Equals(const Value* other) const;
97 99
98 protected: 100 protected:
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 132
131 union { 133 union {
132 bool boolean_value_; 134 bool boolean_value_;
133 int integer_value_; 135 int integer_value_;
134 double real_value_; 136 double real_value_;
135 }; 137 };
136 }; 138 };
137 139
138 class StringValue : public Value { 140 class StringValue : public Value {
139 public: 141 public:
140 StringValue(const std::wstring& in_value) 142 // Initializes a StringValue with a UTF-8 narrow character string.
141 : Value(TYPE_STRING), value_(in_value) {} 143 StringValue(const std::string& in_value);
144
145 // Initializes a StringValue with a wide character string.
146 StringValue(const std::wstring& in_value);
147
142 ~StringValue(); 148 ~StringValue();
143 149
144 // Subclassed methods 150 // Subclassed methods
151 bool GetAsString(std::string* out_value) const;
145 bool GetAsString(std::wstring* out_value) const; 152 bool GetAsString(std::wstring* out_value) const;
146 Value* DeepCopy() const; 153 Value* DeepCopy() const;
147 virtual bool Equals(const Value* other) const; 154 virtual bool Equals(const Value* other) const;
148 155
149 private: 156 private:
150 DISALLOW_EVIL_CONSTRUCTORS(StringValue); 157 DISALLOW_EVIL_CONSTRUCTORS(StringValue);
151 158
152 std::wstring value_; 159 std::string value_;
153 }; 160 };
154 161
155 class BinaryValue: public Value { 162 class BinaryValue: public Value {
156 public: 163 public:
157 // Creates a Value to represent a binary buffer. The new object takes 164 // Creates a Value to represent a binary buffer. The new object takes
158 // ownership of the pointer passed in, if successful. 165 // ownership of the pointer passed in, if successful.
159 // Returns NULL if buffer is NULL. 166 // Returns NULL if buffer is NULL.
160 static BinaryValue* Create(char* buffer, size_t size); 167 static BinaryValue* Create(char* buffer, size_t size);
161 168
162 // For situations where you want to keep ownership of your buffer, this 169 // For situations where you want to keep ownership of your buffer, this
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 // to the path in that location. 216 // to the path in that location.
210 // Note that the dictionary takes ownership of the value 217 // Note that the dictionary takes ownership of the value
211 // referenced by in_value. 218 // referenced by in_value.
212 bool Set(const std::wstring& path, Value* in_value); 219 bool Set(const std::wstring& path, Value* in_value);
213 220
214 // Convenience forms of Set(). These methods will replace any existing 221 // Convenience forms of Set(). These methods will replace any existing
215 // value at that path, even if it has a different type. 222 // value at that path, even if it has a different type.
216 bool SetBoolean(const std::wstring& path, bool in_value); 223 bool SetBoolean(const std::wstring& path, bool in_value);
217 bool SetInteger(const std::wstring& path, int in_value); 224 bool SetInteger(const std::wstring& path, int in_value);
218 bool SetReal(const std::wstring& path, double in_value); 225 bool SetReal(const std::wstring& path, double in_value);
226 bool SetString(const std::wstring& path, const std::string& in_value);
219 bool SetString(const std::wstring& path, const std::wstring& in_value); 227 bool SetString(const std::wstring& path, const std::wstring& in_value);
220 228
221 // Gets the Value associated with the given path starting from this object. 229 // Gets the Value associated with the given path starting from this object.
222 // A path has the form "<key>" or "<key>.<key>.[...]", where "." indexes 230 // A path has the form "<key>" or "<key>.<key>.[...]", where "." indexes
223 // into the next DictionaryValue down. If the path can be resolved 231 // into the next DictionaryValue down. If the path can be resolved
224 // successfully, the value for the last key in the path will be returned 232 // successfully, the value for the last key in the path will be returned
225 // through the "value" parameter, and the function will return true. 233 // through the "value" parameter, and the function will return true.
226 // Otherwise, it will return false and "value" will be untouched. 234 // Otherwise, it will return false and "value" will be untouched.
227 // Note that the dictionary always owns the value that's returned. 235 // Note that the dictionary always owns the value that's returned.
228 bool Get(const std::wstring& path, Value** out_value) const; 236 bool Get(const std::wstring& path, Value** out_value) const;
229 237
230 // These are convenience forms of Get(). The value will be retrieved 238 // These are convenience forms of Get(). The value will be retrieved
231 // and the return value will be true if the path is valid and the value at 239 // and the return value will be true if the path is valid and the value at
232 // the end of the path can be returned in the form specified. 240 // the end of the path can be returned in the form specified.
233 bool GetBoolean(const std::wstring& path, bool* out_value) const; 241 bool GetBoolean(const std::wstring& path, bool* out_value) const;
234 bool GetInteger(const std::wstring& path, int* out_value) const; 242 bool GetInteger(const std::wstring& path, int* out_value) const;
235 bool GetReal(const std::wstring& path, double* out_value) const; 243 bool GetReal(const std::wstring& path, double* out_value) const;
244 bool GetString(const std::wstring& path, std::string* out_value) const;
236 bool GetString(const std::wstring& path, std::wstring* out_value) const; 245 bool GetString(const std::wstring& path, std::wstring* out_value) const;
237 bool GetBinary(const std::wstring& path, BinaryValue** out_value) const; 246 bool GetBinary(const std::wstring& path, BinaryValue** out_value) const;
238 bool GetDictionary(const std::wstring& path, 247 bool GetDictionary(const std::wstring& path,
239 DictionaryValue** out_value) const; 248 DictionaryValue** out_value) const;
240 bool GetList(const std::wstring& path, ListValue** out_value) const; 249 bool GetList(const std::wstring& path, ListValue** out_value) const;
241 250
242 // Removes the Value with the specified path from this dictionary (or one 251 // Removes the Value with the specified path from this dictionary (or one
243 // of its child dictionaries, if the path is more than just a local key). 252 // of its child dictionaries, if the path is more than just a local key).
244 // If |out_value| is non-NULL, the removed Value AND ITS OWNERSHIP will be 253 // If |out_value| is non-NULL, the removed Value AND ITS OWNERSHIP will be
245 // passed out via out_value. If |out_value| is NULL, the removed value will 254 // passed out via out_value. If |out_value| is NULL, the removed value will
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 // The method should return true if and only if the root parameter is set 361 // The method should return true if and only if the root parameter is set
353 // to a complete Value representation of the serialized form. If the 362 // to a complete Value representation of the serialized form. If the
354 // return value is true, the caller takes ownership of the objects pointed 363 // return value is true, the caller takes ownership of the objects pointed
355 // to by root. If the return value is false, root should be unchanged and if 364 // to by root. If the return value is false, root should be unchanged and if
356 // error_message is non-null, it should be filled with a message describing 365 // error_message is non-null, it should be filled with a message describing
357 // the error. 366 // the error.
358 virtual bool Deserialize(Value** root, std::string* error_message) = 0; 367 virtual bool Deserialize(Value** root, std::string* error_message) = 0;
359 }; 368 };
360 369
361 #endif // BASE_VALUES_H_ 370 #endif // BASE_VALUES_H_
OLDNEW
« no previous file with comments | « no previous file | base/values.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698