15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "tools/json_schema_compiler/util.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace json_schema_compiler { 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace util { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool GetItemFromList(const base::ListValue& from, int index, int* out) { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return from.GetInteger(index, out); 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool GetItemFromList(const base::ListValue& from, int index, bool* out) { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return from.GetBoolean(index, out); 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool GetItemFromList(const base::ListValue& from, int index, double* out) { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return from.GetDouble(index, out); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool GetItemFromList(const base::ListValue& from, int index, std::string* out) { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return from.GetString(index, out); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool GetItemFromList(const base::ListValue& from, 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int index, 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) linked_ptr<base::Value>* out) { 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::Value* value = NULL; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!from.Get(index, &value)) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *out = make_linked_ptr(value->DeepCopy()); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool GetItemFromList(const base::ListValue& from, int index, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) linked_ptr<base::DictionaryValue>* out) { 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const base::DictionaryValue* dict = NULL; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!from.GetDictionary(index, &dict)) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return false; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *out = make_linked_ptr(dict->DeepCopy()); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AddItemToList(const int from, base::ListValue* out) { 483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) out->Append(new base::FundamentalValue(from)); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AddItemToList(const bool from, base::ListValue* out) { 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) out->Append(new base::FundamentalValue(from)); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AddItemToList(const double from, base::ListValue* out) { 563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) out->Append(new base::FundamentalValue(from)); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AddItemToList(const std::string& from, base::ListValue* out) { 603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) out->Append(new base::StringValue(from)); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void AddItemToList(const linked_ptr<base::Value>& from, 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ListValue* out) { 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) out->Append(from->DeepCopy()); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AddItemToList(const linked_ptr<base::DictionaryValue>& from, 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ListValue* out) { 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch out->Append(static_cast<base::Value*>(from->DeepCopy())); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)std::string ValueTypeToString(base::Value::Type type) { 74c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch switch(type) { 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case base::Value::TYPE_NULL: 76c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch return "null"; 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case base::Value::TYPE_BOOLEAN: 78c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch return "boolean"; 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case base::Value::TYPE_INTEGER: 80c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch return "integer"; 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case base::Value::TYPE_DOUBLE: 82c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch return "number"; 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case base::Value::TYPE_STRING: 84c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch return "string"; 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case base::Value::TYPE_BINARY: 86c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch return "binary"; 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case base::Value::TYPE_DICTIONARY: 88c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch return "dictionary"; 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) case base::Value::TYPE_LIST: 90c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch return "list"; 91c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch } 92c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch NOTREACHED(); 93c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch return ""; 94c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch} 95c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace api_util 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace extensions 98