summaryrefslogtreecommitdiffstats
path: root/tools/json_schema_compiler/cc_generator.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/json_schema_compiler/cc_generator.py')
-rw-r--r--tools/json_schema_compiler/cc_generator.py101
1 files changed, 51 insertions, 50 deletions
diff --git a/tools/json_schema_compiler/cc_generator.py b/tools/json_schema_compiler/cc_generator.py
index 1a7f80c..99e0eb3 100644
--- a/tools/json_schema_compiler/cc_generator.py
+++ b/tools/json_schema_compiler/cc_generator.py
@@ -42,12 +42,6 @@ class CCGenerator(object):
)
(c.Append()
- .Append('using base::Value;')
- .Append('using base::DictionaryValue;')
- .Append('using base::ListValue;')
- .Append('using base::BinaryValue;')
- .Append('using %s;' % any_helper.ANY_CLASS)
- .Append()
.Concat(self._cpp_type_generator.GetRootNamespaceStart())
.Concat(self._cpp_type_generator.GetNamespaceStart())
.Append()
@@ -173,13 +167,13 @@ class CCGenerator(object):
c = Code()
(c.Append('// static')
.Sblock('bool %(namespace)s::Populate'
- '(const Value& value, %(name)s* out) {')
- .Append('if (!value.IsType(Value::TYPE_DICTIONARY))')
+ '(const base::Value& value, %(name)s* out) {')
+ .Append('if (!value.IsType(base::Value::TYPE_DICTIONARY))')
.Append(' return false;')
)
if type_.properties:
- (c.Append('const DictionaryValue* dict = '
- 'static_cast<const DictionaryValue*>(&value);')
+ (c.Append('const base::DictionaryValue* dict = '
+ 'static_cast<const base::DictionaryValue*>(&value);')
.Append()
)
for prop in type_.properties.values():
@@ -204,12 +198,12 @@ class CCGenerator(object):
def _GenerateTypePopulateProperty(self, prop, src, dst):
"""Generate the code to populate a single property in a type.
- src: DictionaryValue*
+ src: base::DictionaryValue*
dst: Type*
"""
c = Code()
value_var = prop.unix_name + '_value'
- c.Append('Value* %(value_var)s = NULL;')
+ c.Append('base::Value* %(value_var)s = NULL;')
if prop.optional:
(c.Sblock(
'if (%(src)s->GetWithoutPathExpansion("%(key)s", &%(value_var)s)) {'
@@ -230,14 +224,16 @@ class CCGenerator(object):
return c
def _GenerateTypeToValue(self, cpp_namespace, type_):
- """Generates a function that serializes the type into a |DictionaryValue|.
+ """Generates a function that serializes the type into a
+ |base::DictionaryValue|.
E.g. for type "Foo" generates Foo::ToValue()
"""
c = Code()
- (c.Sblock('scoped_ptr<DictionaryValue> %s::ToValue() const {' %
+ (c.Sblock('scoped_ptr<base::DictionaryValue> %s::ToValue() const {' %
cpp_namespace)
- .Append('scoped_ptr<DictionaryValue> value(new DictionaryValue());')
+ .Append('scoped_ptr<base::DictionaryValue> value('
+ 'new base::DictionaryValue());')
.Append()
)
for prop in type_.properties.values():
@@ -287,27 +283,29 @@ class CCGenerator(object):
return c
def _GenerateCreateEnumValue(self, cpp_namespace, prop):
- """Generates CreateEnumValue() that returns the |StringValue|
+ """Generates CreateEnumValue() that returns the |base::StringValue|
representation of an enum.
"""
c = Code()
c.Append('// static')
- c.Sblock('scoped_ptr<Value> %(cpp_namespace)s::CreateEnumValue(%(arg)s) {')
+ c.Sblock('scoped_ptr<base::Value> %(cpp_namespace)s::CreateEnumValue('
+ '%(arg)s) {')
c.Sblock('switch (%s) {' % prop.unix_name)
if prop.optional:
(c.Append('case %s: {' % self._cpp_type_generator.GetEnumNoneValue(prop))
- .Append(' return scoped_ptr<Value>();')
+ .Append(' return scoped_ptr<base::Value>();')
.Append('}')
)
for enum_value in prop.enum_values:
(c.Append('case %s: {' %
self._cpp_type_generator.GetEnumValue(prop, enum_value))
- .Append(' return scoped_ptr<Value>(Value::CreateStringValue("%s"));' %
- enum_value)
+ .Append(' return scoped_ptr<base::Value>('
+ 'base::Value::CreateStringValue("%s"));' %
+ enum_value)
.Append('}')
)
(c.Append('default: {')
- .Append(' return scoped_ptr<Value>();')
+ .Append(' return scoped_ptr<base::Value>();')
.Append('}')
)
c.Eblock('}')
@@ -320,20 +318,20 @@ class CCGenerator(object):
return c
def _CreateValueFromProperty(self, prop, var):
- """Creates a Value given a property. Generated code passes ownership
+ """Creates a base::Value given a property. Generated code passes ownership
to caller.
var: variable or variable*
- E.g for std::string, generate Value::CreateStringValue(var)
+ E.g for std::string, generate base::Value::CreateStringValue(var)
"""
if prop.type_ == PropertyType.CHOICES:
# CHOICES conversion not implemented. If needed, write something to
- # generate a function that returns a scoped_ptr<Value> and put it in
+ # generate a function that returns a scoped_ptr<base::Value> and put it in
# _GeneratePropertyFunctions, then use it here. Look at CreateEnumValue()
# for reference.
raise NotImplementedError(
- 'Conversion of CHOICES to Value not implemented')
+ 'Conversion of CHOICES to base::Value not implemented')
if self._IsObjectOrObjectRef(prop):
if prop.optional:
return '%s->ToValue().release()' % var
@@ -356,13 +354,13 @@ class CCGenerator(object):
var = '*' + var
prop = self._cpp_type_generator.GetReferencedProperty(prop);
return {
- PropertyType.STRING: 'Value::CreateStringValue(%s)',
- PropertyType.BOOLEAN: 'Value::CreateBooleanValue(%s)',
- PropertyType.INTEGER: 'Value::CreateIntegerValue(%s)',
- PropertyType.DOUBLE: 'Value::CreateDoubleValue(%s)',
+ PropertyType.STRING: 'base::Value::CreateStringValue(%s)',
+ PropertyType.BOOLEAN: 'base::Value::CreateBooleanValue(%s)',
+ PropertyType.INTEGER: 'base::Value::CreateIntegerValue(%s)',
+ PropertyType.DOUBLE: 'base::Value::CreateDoubleValue(%s)',
}[prop.type_] % var
else:
- raise NotImplementedError('Conversion of %s to Value not '
+ raise NotImplementedError('Conversion of %s to base::Value not '
'implemented' % repr(prop.type_))
def _GenerateParamsCheck(self, function, var):
@@ -391,14 +389,14 @@ class CCGenerator(object):
def _GenerateFunctionParamsCreate(self, cpp_namespace, function):
"""Generate function to create an instance of Params. The generated
- function takes a ListValue of arguments.
+ function takes a base::ListValue of arguments.
E.g for function "Bar", generate Bar::Params::Create()
"""
c = Code()
(c.Append('// static')
.Sblock('scoped_ptr<%(cpp_namespace)s::Params> '
- '%(cpp_namespace)s::Params::Create(const ListValue& args) {')
+ '%(cpp_namespace)s::Params::Create(const base::ListValue& args) {')
.Concat(self._GenerateParamsCheck(function, 'args'))
.Append('scoped_ptr<Params> params(new Params());')
)
@@ -415,9 +413,9 @@ class CCGenerator(object):
failure_value = 'scoped_ptr<Params>()'
c.Append()
value_var = param.unix_name + '_value'
- (c.Append('Value* %(value_var)s = NULL;')
- .Append('if (args.Get(%(i)s, &%(value_var)s) && '
- '!%(value_var)s->IsType(Value::TYPE_NULL))')
+ (c.Append('base::Value* %(value_var)s = NULL;')
+ .Append('if (args.Get(%(i)s, &%(value_var)s) &&\n'
+ ' !%(value_var)s->IsType(base::Value::TYPE_NULL))')
.Sblock('{')
.Concat(self._GeneratePopulatePropertyFromValue(
param, value_var, 'params', failure_value))
@@ -439,16 +437,17 @@ class CCGenerator(object):
def _GeneratePopulatePropertyFromValue(
self, prop, value_var, dst, failure_value, check_type=True):
- """Generates code to populate a model.Property given a Value*. The
- existence of data inside the Value* is assumed so checks for existence
+ """Generates code to populate a model.Property given a base::Value*. The
+ existence of data inside the base::Value* is assumed so checks for existence
should be performed before the code this generates.
prop: the property the code is populating.
- value_var: a Value* that should represent |prop|.
+ value_var: a base::Value* that should represent |prop|.
dst: the object with |prop| as a member.
failure_value: the value to return if |prop| cannot be extracted from
|value_var|
- check_type: if true, will check if |value_var| is the correct Value::Type
+ check_type: if true, will check if |value_var| is the correct
+ base::Value::Type
"""
c = Code()
c.Sblock('{')
@@ -474,7 +473,7 @@ class CCGenerator(object):
)
elif self._IsObjectOrObjectRef(prop):
if prop.optional:
- (c.Append('DictionaryValue* dictionary = NULL;')
+ (c.Append('base::DictionaryValue* dictionary = NULL;')
.Append('if (!%(value_var)s->GetAsDictionary(&dictionary))')
.Append(' return %(failure_value)s;')
.Append('scoped_ptr<%(ctype)s> temp(new %(ctype)s());')
@@ -483,7 +482,7 @@ class CCGenerator(object):
.Append('%(dst)s->%(name)s = temp.Pass();')
)
else:
- (c.Append('DictionaryValue* dictionary = NULL;')
+ (c.Append('base::DictionaryValue* dictionary = NULL;')
.Append('if (!%(value_var)s->GetAsDictionary(&dictionary))')
.Append(' return %(failure_value)s;')
.Append(
@@ -492,11 +491,11 @@ class CCGenerator(object):
)
elif prop.type_ == PropertyType.ANY:
if prop.optional:
- c.Append('%(dst)s->%(name)s.reset(new Any());')
+ c.Append('%(dst)s->%(name)s.reset(new ' + any_helper.ANY_CLASS + '());')
c.Append(self._any_helper.Init(prop, value_var, dst) + ';')
elif self._IsArrayOrArrayRef(prop):
# util_cc_helper deals with optional and required arrays
- (c.Append('ListValue* list = NULL;')
+ (c.Append('base::ListValue* list = NULL;')
.Append('if (!%(value_var)s->GetAsList(&list))')
.Append(' return %(failure_value)s;'))
if prop.item_type.type_ == PropertyType.ENUM:
@@ -533,12 +532,13 @@ class CCGenerator(object):
c.Eblock('}')
elif prop.type_ == PropertyType.BINARY:
# This is the same if the property is optional or not. We need a pointer
- # to the BinaryValue to be able to populate it, so a scoped_ptr is used
- # whether it is optional or required.
+ # to the base::BinaryValue to be able to populate it, so a scoped_ptr is
+ # used whether it is optional or required.
(c.Append('if (!%(value_var)s->IsType(%(value_type)s))')
.Append(' return %(failure_value)s;')
.Append('%(dst)s->%(name)s.reset(')
- .Append(' static_cast<BinaryValue*>(%(value_var)s)->DeepCopy());')
+ .Append(' static_cast<base::BinaryValue*>(%(value_var)s)'
+ '->DeepCopy());')
)
else:
raise NotImplementedError(prop.type_)
@@ -632,8 +632,8 @@ class CCGenerator(object):
params = function.callback.params
if not params:
- (c.Append('Value* %s::Result::Create() {' % cpp_namespace)
- .Append(' return Value::CreateNullValue();')
+ (c.Append('base::Value* %s::Result::Create() {' % cpp_namespace)
+ .Append(' return base::Value::CreateNullValue();')
.Append('}')
)
else:
@@ -648,13 +648,14 @@ class CCGenerator(object):
# time.
for param in expanded_params:
if param.type_ == PropertyType.ANY:
- # Generation of Value* Create(Value*) is redundant.
+ # Generation of base::Value* Create(base::Value*) is redundant.
continue
# We treat this argument as 'required' to avoid wrapping it in a
# scoped_ptr if it's optional.
param_copy = param.Copy()
param_copy.optional = False
- c.Sblock('Value* %(cpp_namespace)s::Result::Create(const %(arg)s) {')
+ c.Sblock('base::Value* %(cpp_namespace)s::Result::Create('
+ 'const %(arg)s) {')
c.Append('return %s;' %
self._CreateValueFromProperty(param_copy, param_copy.unix_name))
c.Eblock('}')