license.bot | f003cfe | 2008-08-24 09:55:55 +0900 | [diff] [blame^] | 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 |
| 3 | // found in the LICENSE file. |
initial.commit | 3f4a732 | 2008-07-27 06:49:38 +0900 | [diff] [blame] | 4 | |
mmentovai@google.com | ef3ae5a | 2008-08-07 00:46:49 +0900 | [diff] [blame] | 5 | #ifndef BASE_JSON_WRITER_H_ |
| 6 | #define BASE_JSON_WRITER_H_ |
initial.commit | 3f4a732 | 2008-07-27 06:49:38 +0900 | [diff] [blame] | 7 | |
| 8 | #include <string> |
| 9 | |
| 10 | #include "base/basictypes.h" |
| 11 | |
| 12 | class Value; |
| 13 | |
| 14 | class JSONWriter { |
| 15 | public: |
| 16 | // Given a root node, generates a JSON string and puts it into |json|. |
| 17 | // If |pretty_print| is true, return a slightly nicer formated json string |
| 18 | // (pads with whitespace to help readability). If |pretty_print| is false, |
| 19 | // we try to generate as compact a string as possible. |
| 20 | // TODO(tc): Should we generate json if it would be invalid json (e.g., |
| 21 | // |node| is not a DictionaryValue/ListValue or if there are inf/-inf float |
| 22 | // values)? |
| 23 | static void Write(const Value* const node, bool pretty_print, |
| 24 | std::string* json); |
| 25 | |
| 26 | private: |
| 27 | JSONWriter(bool pretty_print, std::string* json); |
initial.commit | 3f4a732 | 2008-07-27 06:49:38 +0900 | [diff] [blame] | 28 | |
| 29 | // Called recursively to build the JSON string. Whe completed, value is |
| 30 | // json_string_ will contain the JSON. |
| 31 | void BuildJSONString(const Value* const node, int depth); |
| 32 | |
| 33 | // Appends a quoted, escaped, version of str to json_string_. |
| 34 | void AppendQuotedString(const std::wstring& str); |
| 35 | |
| 36 | // Adds space to json_string_ for the indent level. |
| 37 | void IndentLine(int depth); |
| 38 | |
| 39 | // Where we write JSON data as we generate it. |
| 40 | std::string* json_string_; |
| 41 | |
| 42 | bool pretty_print_; |
mmentovai@google.com | ef3ae5a | 2008-08-07 00:46:49 +0900 | [diff] [blame] | 43 | |
| 44 | DISALLOW_COPY_AND_ASSIGN(JSONWriter); |
initial.commit | 3f4a732 | 2008-07-27 06:49:38 +0900 | [diff] [blame] | 45 | }; |
| 46 | |
mmentovai@google.com | ef3ae5a | 2008-08-07 00:46:49 +0900 | [diff] [blame] | 47 | #endif // BASE_JSON_WRITER_H_ |
license.bot | f003cfe | 2008-08-24 09:55:55 +0900 | [diff] [blame^] | 48 | |