| 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 |  |