Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(271)

Side by Side Diff: tools/json_schema_compiler/util.h

Issue 9491002: json_schema_compiler: any, additionalProperties, functions on types (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: add any in arrays to util.h Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef TOOLS_JSON_SCHEMA_COMPILER_UTIL_H__ 5 #ifndef TOOLS_JSON_SCHEMA_COMPILER_UTIL_H__
6 #define TOOLS_JSON_SCHEMA_COMPILER_UTIL_H__ 6 #define TOOLS_JSON_SCHEMA_COMPILER_UTIL_H__
7 #pragma once 7 #pragma once
8 8
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/memory/linked_ptr.h" 12 #include "base/memory/linked_ptr.h"
13 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
14 #include "base/values.h" 14 #include "base/values.h"
15 15
16 namespace json_schema_compiler { 16 namespace json_schema_compiler {
17
18 namespace any {
19 class Any;
20 }
21
17 namespace util { 22 namespace util {
18 23
19 // Creates a new item at |out| from |from|[|index|]. These are used by template 24 // Creates a new item at |out| from |from|[|index|]. These are used by template
20 // specializations of |Get(Optional)ArrayFromList|. 25 // specializations of |Get(Optional)ArrayFromList|.
21 bool GetItemFromList(const ListValue& from, int index, int* out); 26 bool GetItemFromList(const ListValue& from, int index, int* out);
22 bool GetItemFromList(const ListValue& from, int index, bool* out); 27 bool GetItemFromList(const ListValue& from, int index, bool* out);
23 bool GetItemFromList(const ListValue& from, int index, double* out); 28 bool GetItemFromList(const ListValue& from, int index, double* out);
24 bool GetItemFromList(const ListValue& from, int index, std::string* out); 29 bool GetItemFromList(const ListValue& from, int index, std::string* out);
25 bool GetItemFromList(const ListValue& from, int index, 30 bool GetItemFromList(const ListValue& from, int index,
26 linked_ptr<base::DictionaryValue>* out); 31 linked_ptr<base::DictionaryValue>* out);
32 bool GetItemFromList(const ListValue& from, int index,
33 linked_ptr<any::Any>* out);
27 34
28 // This template is used for types generated by tools/json_schema_compiler. 35 // This template is used for types generated by tools/json_schema_compiler.
29 template<class T> 36 template<class T>
30 bool GetItemFromList(const ListValue& from, int index, linked_ptr<T>* out) { 37 bool GetItemFromList(const ListValue& from, int index, linked_ptr<T>* out) {
31 DictionaryValue* dict; 38 DictionaryValue* dict;
32 if (!from.GetDictionary(index, &dict)) 39 if (!from.GetDictionary(index, &dict))
33 return false; 40 return false;
34 scoped_ptr<T> obj(new T()); 41 scoped_ptr<T> obj(new T());
35 if (!T::Populate(*dict, obj.get())) 42 if (!T::Populate(*dict, obj.get()))
36 return false; 43 return false;
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 } 119 }
113 120
114 // Appends a Value newly created from |from| to |out|. These used by template 121 // Appends a Value newly created from |from| to |out|. These used by template
115 // specializations of |Set(Optional)ArrayToList|. 122 // specializations of |Set(Optional)ArrayToList|.
116 void AddItemToList(const int from, base::ListValue* out); 123 void AddItemToList(const int from, base::ListValue* out);
117 void AddItemToList(const bool from, base::ListValue* out); 124 void AddItemToList(const bool from, base::ListValue* out);
118 void AddItemToList(const double from, base::ListValue* out); 125 void AddItemToList(const double from, base::ListValue* out);
119 void AddItemToList(const std::string& from, base::ListValue* out); 126 void AddItemToList(const std::string& from, base::ListValue* out);
120 void AddItemToList(const linked_ptr<base::DictionaryValue>& from, 127 void AddItemToList(const linked_ptr<base::DictionaryValue>& from,
121 base::ListValue* out); 128 base::ListValue* out);
129 void AddItemToList(const linked_ptr<any::Any>& from,
130 base::ListValue* out);
122 131
123 // This template is used for types generated by tools/json_schema_compiler. 132 // This template is used for types generated by tools/json_schema_compiler.
124 template<class T> 133 template<class T>
125 void AddItemToList(const linked_ptr<T>& from, ListValue* out) { 134 void AddItemToList(const linked_ptr<T>& from, ListValue* out) {
126 out->Append(from->ToValue().release()); 135 out->Append(from->ToValue().release());
127 } 136 }
128 137
129 // Set |out| to the the contents of |from|. Requires GetItemFromList to be 138 // Set |out| to the the contents of |from|. Requires GetItemFromList to be
130 // implemented for |T|. 139 // implemented for |T|.
131 template <class T> 140 template <class T>
(...skipping 27 matching lines...) Expand all
159 } 168 }
160 169
161 template <class T> 170 template <class T>
162 scoped_ptr<Value> CreateValueFromOptionalArray( 171 scoped_ptr<Value> CreateValueFromOptionalArray(
163 const scoped_ptr<std::vector<T> >& from) { 172 const scoped_ptr<std::vector<T> >& from) {
164 if (from.get()) 173 if (from.get())
165 return CreateValueFromArray(*from); 174 return CreateValueFromArray(*from);
166 return scoped_ptr<Value>(); 175 return scoped_ptr<Value>();
167 } 176 }
168 177
169 } // namespace api_util 178 } // namespace util
170 } // namespace extensions 179 } // namespace json_schema_compiler
171 180
172 #endif // TOOLS_JSON_SCHEMA_COMPILER_UTIL_H__ 181 #endif // TOOLS_JSON_SCHEMA_COMPILER_UTIL_H__
OLDNEW
« no previous file with comments | « tools/json_schema_compiler/test/json_schema_compiler_tests.gyp ('k') | tools/json_schema_compiler/util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698