Roll src/third_party/WebKit f007c95:0171005 (svn 185074:185088)
[chromium-blink-merge.git] / tools / json_schema_compiler / util.cc
blob2806cfcf0f923c268dc1d9dd284fbe67f136342f
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
3 // found in the LICENSE file.
5 #include "tools/json_schema_compiler/util.h"
7 #include "base/values.h"
9 namespace json_schema_compiler {
10 namespace util {
12 bool GetItemFromList(const base::ListValue& from, int index, int* out) {
13 return from.GetInteger(index, out);
16 bool GetItemFromList(const base::ListValue& from, int index, bool* out) {
17 return from.GetBoolean(index, out);
20 bool GetItemFromList(const base::ListValue& from, int index, double* out) {
21 return from.GetDouble(index, out);
24 bool GetItemFromList(const base::ListValue& from, int index, std::string* out) {
25 return from.GetString(index, out);
28 bool GetItemFromList(const base::ListValue& from,
29 int index,
30 linked_ptr<base::Value>* out) {
31 const base::Value* value = NULL;
32 if (!from.Get(index, &value))
33 return false;
34 *out = make_linked_ptr(value->DeepCopy());
35 return true;
38 bool GetItemFromList(const base::ListValue& from, int index,
39 linked_ptr<base::DictionaryValue>* out) {
40 const base::DictionaryValue* dict = NULL;
41 if (!from.GetDictionary(index, &dict))
42 return false;
43 *out = make_linked_ptr(dict->DeepCopy());
44 return true;
47 void AddItemToList(const int from, base::ListValue* out) {
48 out->Append(new base::FundamentalValue(from));
51 void AddItemToList(const bool from, base::ListValue* out) {
52 out->Append(new base::FundamentalValue(from));
55 void AddItemToList(const double from, base::ListValue* out) {
56 out->Append(new base::FundamentalValue(from));
59 void AddItemToList(const std::string& from, base::ListValue* out) {
60 out->Append(new base::StringValue(from));
63 void AddItemToList(const linked_ptr<base::Value>& from,
64 base::ListValue* out) {
65 out->Append(from->DeepCopy());
68 void AddItemToList(const linked_ptr<base::DictionaryValue>& from,
69 base::ListValue* out) {
70 out->Append(static_cast<base::Value*>(from->DeepCopy()));
73 std::string ValueTypeToString(base::Value::Type type) {
74 switch(type) {
75 case base::Value::TYPE_NULL:
76 return "null";
77 case base::Value::TYPE_BOOLEAN:
78 return "boolean";
79 case base::Value::TYPE_INTEGER:
80 return "integer";
81 case base::Value::TYPE_DOUBLE:
82 return "number";
83 case base::Value::TYPE_STRING:
84 return "string";
85 case base::Value::TYPE_BINARY:
86 return "binary";
87 case base::Value::TYPE_DICTIONARY:
88 return "dictionary";
89 case base::Value::TYPE_LIST:
90 return "list";
92 NOTREACHED();
93 return "";
96 } // namespace api_util
97 } // namespace extensions