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. 4 5#include "tools/json_schema_compiler/util.h" 6 7#include "base/values.h" 8 9namespace json_schema_compiler { 10namespace util { 11 12bool GetItemFromList(const base::ListValue& from, int index, int* out) { 13 return from.GetInteger(index, out); 14} 15 16bool GetItemFromList(const base::ListValue& from, int index, bool* out) { 17 return from.GetBoolean(index, out); 18} 19 20bool GetItemFromList(const base::ListValue& from, int index, double* out) { 21 return from.GetDouble(index, out); 22} 23 24bool GetItemFromList(const base::ListValue& from, int index, std::string* out) { 25 return from.GetString(index, out); 26} 27 28bool 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; 36} 37 38bool 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; 45} 46 47void AddItemToList(const int from, base::ListValue* out) { 48 out->Append(base::Value::CreateIntegerValue(from)); 49} 50 51void AddItemToList(const bool from, base::ListValue* out) { 52 out->Append(base::Value::CreateBooleanValue(from)); 53} 54 55void AddItemToList(const double from, base::ListValue* out) { 56 out->Append(base::Value::CreateDoubleValue(from)); 57} 58 59void AddItemToList(const std::string& from, base::ListValue* out) { 60 out->Append(base::Value::CreateStringValue(from)); 61} 62 63void AddItemToList(const linked_ptr<base::Value>& from, 64 base::ListValue* out) { 65 out->Append(from->DeepCopy()); 66} 67 68void AddItemToList(const linked_ptr<base::DictionaryValue>& from, 69 base::ListValue* out) { 70 out->Append(static_cast<base::Value*>(from->DeepCopy())); 71} 72 73std::string ValueTypeToString(Value::Type type) { 74 switch(type) { 75 case Value::TYPE_NULL: 76 return "null"; 77 case Value::TYPE_BOOLEAN: 78 return "boolean"; 79 case Value::TYPE_INTEGER: 80 return "integer"; 81 case Value::TYPE_DOUBLE: 82 return "number"; 83 case Value::TYPE_STRING: 84 return "string"; 85 case Value::TYPE_BINARY: 86 return "binary"; 87 case Value::TYPE_DICTIONARY: 88 return "dictionary"; 89 case Value::TYPE_LIST: 90 return "list"; 91 } 92 NOTREACHED(); 93 return ""; 94} 95 96} // namespace api_util 97} // namespace extensions 98