Index: tools/json_schema_compiler/h_generator.py |
diff --git a/tools/json_schema_compiler/h_generator.py b/tools/json_schema_compiler/h_generator.py |
index 3af7ccf3c1eba6f723653f75896fba339c6ba81f..fbff46235b4cbfeb9e4cf59e42f0c74fa3662326 100644 |
--- a/tools/json_schema_compiler/h_generator.py |
+++ b/tools/json_schema_compiler/h_generator.py |
@@ -38,6 +38,7 @@ class HGenerator(object): |
.Append('#include "base/memory/linked_ptr.h"') |
.Append('#include "base/memory/scoped_ptr.h"') |
.Append('#include "base/values.h"') |
+ .Append('#include "tools/json_schema_compiler/any.h"') |
.Append() |
) |
@@ -76,8 +77,7 @@ class HGenerator(object): |
(c.Concat(self._GenerateFunction(function)) |
.Append() |
) |
- (c.Append() |
- .Concat(self._cpp_type_generator.GetNamespaceEnd()) |
+ (c.Concat(self._cpp_type_generator.GetNamespaceEnd()) |
.Concat(self._cpp_type_generator.GetRootNamespaceEnd()) |
.Append() |
.Append('#endif // %s' % ifndef_name) |
@@ -123,33 +123,46 @@ class HGenerator(object): |
""" |
classname = cpp_util.Classname(type_.name) |
c = code.Code() |
- if type_.description: |
- c.Comment(type_.description) |
- (c.Sblock('struct %(classname)s {') |
- .Append('~%(classname)s();') |
- .Append('%(classname)s();') |
- .Append() |
- .Concat(self._GeneratePropertyStructures(type_.properties.values())) |
- .Concat(self._GenerateFields(type_.properties.values())) |
- ) |
- if type_.from_json: |
- (c.Comment('Populates a %s object from a Value. Returns' |
- ' whether |out| was successfully populated.' % classname) |
- .Append('static bool Populate(const Value& value, %(classname)s* out);') |
- .Append() |
+ # Functions on types cannot have properties on them and are not |
+ # instantiable because they're dealt with renderer side. |
not at google - send to devlin
2012/02/28 22:41:17
See my comment about this comment in model.py. Ma
calamity
2012/03/01 04:47:09
Done.
|
+ if type_.functions: |
+ assert not type_.properties |
not at google - send to devlin
2012/02/28 22:41:17
Also: again, asserts are for internal errors not e
calamity
2012/03/01 04:47:09
Done.
|
+ c.Sblock('namespace %(classname)s {') |
+ for function in type_.functions.values(): |
+ (c.Concat(self._GenerateFunction(function)) |
+ .Append() |
+ ) |
+ c.Eblock('}') |
+ else: |
+ if type_.description: |
+ c.Comment(type_.description) |
+ (c.Sblock('struct %(classname)s {') |
+ .Append('~%(classname)s();') |
+ .Append('%(classname)s();') |
+ .Append() |
+ .Concat(self._GeneratePropertyStructures(type_.properties.values())) |
+ .Concat(self._GenerateFields(type_.properties.values())) |
) |
+ if type_.from_json: |
+ (c.Comment('Populates a %s object from a Value. Returns' |
+ ' whether |out| was successfully populated.' % classname) |
+ .Append( |
+ 'static bool Populate(const Value& value, %(classname)s* out);') |
+ .Append() |
+ ) |
+ |
+ if type_.from_client: |
+ (c.Comment('Returns a new DictionaryValue representing the' |
+ ' serialized form of this %s object. Passes ' |
+ 'ownership to caller.' % classname) |
+ .Append('scoped_ptr<DictionaryValue> ToValue() const;') |
+ ) |
- if type_.from_client: |
- (c.Comment('Returns a new DictionaryValue representing the' |
- ' serialized form of this %s object. Passes ' |
- 'ownership to caller.' % classname) |
- .Append('scoped_ptr<DictionaryValue> ToValue() const;') |
+ (c.Eblock() |
+ .Sblock(' private:') |
+ .Append('DISALLOW_COPY_AND_ASSIGN(%(classname)s);') |
+ .Eblock('};') |
) |
- (c.Eblock() |
- .Sblock(' private:') |
- .Append('DISALLOW_COPY_AND_ASSIGN(%(classname)s);') |
- .Eblock('};') |
- ) |
c.Substitute({'classname': classname}) |
return c |
@@ -234,6 +247,10 @@ class HGenerator(object): |
for param in self._cpp_type_generator.GetExpandedChoicesInParams(params): |
if param.description: |
c.Comment(param.description) |
+ if param.type_ == PropertyType.ANY: |
+ c.Comment("Value* Result::Create(Value*) not generated " |
+ "because it's redundant.") |
Yoyo Zhou
2012/02/28 22:23:41
nit: indent to paren
calamity
2012/03/01 04:47:09
Done.
|
+ continue |
c.Append('Value* Create(const %s);' % cpp_util.GetParameterDeclaration( |
param, self._cpp_type_generator.GetType(param))) |
c.Eblock('};') |