OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 intended for | 5 // This file specifies a recursive data storage class called Value intended for |
6 // storing settings and other persistable data. | 6 // storing settings and other persistable data. |
7 // | 7 // |
8 // A Value represents something that can be stored in JSON or passed to/from | 8 // A Value represents something that can be stored in JSON or passed to/from |
9 // JavaScript. As such, it is NOT a generalized variant type, since only the | 9 // JavaScript. As such, it is NOT a generalized variant type, since only the |
10 // types supported by JavaScript/JSON are supported. | 10 // types supported by JavaScript/JSON are supported. |
(...skipping 12 matching lines...) Expand all Loading... |
23 #include <map> | 23 #include <map> |
24 #include <string> | 24 #include <string> |
25 #include <utility> | 25 #include <utility> |
26 #include <vector> | 26 #include <vector> |
27 | 27 |
28 #include "base/base_export.h" | 28 #include "base/base_export.h" |
29 #include "base/basictypes.h" | 29 #include "base/basictypes.h" |
30 #include "base/compiler_specific.h" | 30 #include "base/compiler_specific.h" |
31 #include "base/memory/scoped_ptr.h" | 31 #include "base/memory/scoped_ptr.h" |
32 #include "base/strings/string16.h" | 32 #include "base/strings/string16.h" |
| 33 #include "base/strings/string_piece.h" |
33 | 34 |
34 namespace base { | 35 namespace base { |
35 | 36 |
36 class BinaryValue; | 37 class BinaryValue; |
37 class DictionaryValue; | 38 class DictionaryValue; |
38 class FundamentalValue; | 39 class FundamentalValue; |
39 class ListValue; | 40 class ListValue; |
40 class StringValue; | 41 class StringValue; |
41 class Value; | 42 class Value; |
42 | 43 |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 const string16& in_value); | 264 const string16& in_value); |
264 | 265 |
265 // Gets the Value associated with the given path starting from this object. | 266 // Gets the Value associated with the given path starting from this object. |
266 // A path has the form "<key>" or "<key>.<key>.[...]", where "." indexes | 267 // A path has the form "<key>" or "<key>.<key>.[...]", where "." indexes |
267 // into the next DictionaryValue down. If the path can be resolved | 268 // into the next DictionaryValue down. If the path can be resolved |
268 // successfully, the value for the last key in the path will be returned | 269 // successfully, the value for the last key in the path will be returned |
269 // through the |out_value| parameter, and the function will return true. | 270 // through the |out_value| parameter, and the function will return true. |
270 // Otherwise, it will return false and |out_value| will be untouched. | 271 // Otherwise, it will return false and |out_value| will be untouched. |
271 // Note that the dictionary always owns the value that's returned. | 272 // Note that the dictionary always owns the value that's returned. |
272 // |out_value| is optional and will only be set if non-NULL. | 273 // |out_value| is optional and will only be set if non-NULL. |
273 bool Get(const std::string& path, const Value** out_value) const; | 274 bool Get(StringPiece path, const Value** out_value) const; |
274 bool Get(const std::string& path, Value** out_value); | 275 bool Get(StringPiece path, Value** out_value); |
275 | 276 |
276 // These are convenience forms of Get(). The value will be retrieved | 277 // These are convenience forms of Get(). The value will be retrieved |
277 // and the return value will be true if the path is valid and the value at | 278 // and the return value will be true if the path is valid and the value at |
278 // the end of the path can be returned in the form specified. | 279 // the end of the path can be returned in the form specified. |
279 // |out_value| is optional and will only be set if non-NULL. | 280 // |out_value| is optional and will only be set if non-NULL. |
280 bool GetBoolean(const std::string& path, bool* out_value) const; | 281 bool GetBoolean(const std::string& path, bool* out_value) const; |
281 bool GetInteger(const std::string& path, int* out_value) const; | 282 bool GetInteger(const std::string& path, int* out_value) const; |
282 // Values of both type TYPE_INTEGER and TYPE_DOUBLE can be obtained as | 283 // Values of both type TYPE_INTEGER and TYPE_DOUBLE can be obtained as |
283 // doubles. | 284 // doubles. |
284 bool GetDouble(const std::string& path, double* out_value) const; | 285 bool GetDouble(const std::string& path, double* out_value) const; |
285 bool GetString(const std::string& path, std::string* out_value) const; | 286 bool GetString(const std::string& path, std::string* out_value) const; |
286 bool GetString(const std::string& path, string16* out_value) const; | 287 bool GetString(const std::string& path, string16* out_value) const; |
287 bool GetStringASCII(const std::string& path, std::string* out_value) const; | 288 bool GetStringASCII(const std::string& path, std::string* out_value) const; |
288 bool GetBinary(const std::string& path, const BinaryValue** out_value) const; | 289 bool GetBinary(const std::string& path, const BinaryValue** out_value) const; |
289 bool GetBinary(const std::string& path, BinaryValue** out_value); | 290 bool GetBinary(const std::string& path, BinaryValue** out_value); |
290 bool GetDictionary(const std::string& path, | 291 bool GetDictionary(StringPiece path, const DictionaryValue** out_value) const; |
291 const DictionaryValue** out_value) const; | 292 bool GetDictionary(StringPiece path, DictionaryValue** out_value); |
292 bool GetDictionary(const std::string& path, DictionaryValue** out_value); | |
293 bool GetList(const std::string& path, const ListValue** out_value) const; | 293 bool GetList(const std::string& path, const ListValue** out_value) const; |
294 bool GetList(const std::string& path, ListValue** out_value); | 294 bool GetList(const std::string& path, ListValue** out_value); |
295 | 295 |
296 // Like Get(), but without special treatment of '.'. This allows e.g. URLs to | 296 // Like Get(), but without special treatment of '.'. This allows e.g. URLs to |
297 // be used as paths. | 297 // be used as paths. |
298 bool GetWithoutPathExpansion(const std::string& key, | 298 bool GetWithoutPathExpansion(const std::string& key, |
299 const Value** out_value) const; | 299 const Value** out_value) const; |
300 bool GetWithoutPathExpansion(const std::string& key, Value** out_value); | 300 bool GetWithoutPathExpansion(const std::string& key, Value** out_value); |
301 bool GetBooleanWithoutPathExpansion(const std::string& key, | 301 bool GetBooleanWithoutPathExpansion(const std::string& key, |
302 bool* out_value) const; | 302 bool* out_value) const; |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
549 } | 549 } |
550 | 550 |
551 BASE_EXPORT inline std::ostream& operator<<(std::ostream& out, | 551 BASE_EXPORT inline std::ostream& operator<<(std::ostream& out, |
552 const ListValue& value) { | 552 const ListValue& value) { |
553 return out << static_cast<const Value&>(value); | 553 return out << static_cast<const Value&>(value); |
554 } | 554 } |
555 | 555 |
556 } // namespace base | 556 } // namespace base |
557 | 557 |
558 #endif // BASE_VALUES_H_ | 558 #endif // BASE_VALUES_H_ |
OLD | NEW |