Chromium Code Reviews| Index: tools/json_schema_compiler/cc_generator.py |
| diff --git a/tools/json_schema_compiler/cc_generator.py b/tools/json_schema_compiler/cc_generator.py |
| index d5d7021ddfbb65cae2e056ab84ad6e48aa609a82..5e894484f4c9ad385e57a0ea963413cb417c5b82 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;') |
|
not at google - send to devlin
2012/06/12 18:34:38
why?
This is a cc file. I would prefer to keep th
benjhayden
2012/06/12 20:15:42
I ran into a very confusing name collision with an
|
| - .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 |
| @@ -354,13 +352,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): |
| @@ -389,14 +387,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());') |
| ) |
| @@ -413,9 +411,9 @@ class CCGenerator(object): |
| failure_value = 'scoped_ptr<Params>()' |
| c.Append() |
| value_var = param.unix_name + '_value' |
| - (c.Append('Value* %(value_var)s = NULL;') |
| + (c.Append('base::Value* %(value_var)s = NULL;') |
| .Append('if (args.Get(%(i)s, &%(value_var)s) && ' |
| - '!%(value_var)s->IsType(Value::TYPE_NULL))') |
| + '!%(value_var)s->IsType(base::Value::TYPE_NULL))') |
| .Sblock('{') |
| .Concat(self._GeneratePopulatePropertyFromValue( |
| param, value_var, 'params', failure_value)) |
| @@ -437,16 +435,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('{') |
| @@ -472,7 +471,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());') |
| @@ -481,7 +480,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( |
| @@ -490,11 +489,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 + '());') |
|
not at google - send to devlin
2012/06/12 18:34:38
Is this the only non *Value -> base::*Value change
benjhayden
2012/06/12 20:15:42
See my response to your other comment in this file
|
| 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;') |
| .Append('if (!%s)' % self._util_cc_helper.PopulateArrayFromList( |
| @@ -540,12 +539,13 @@ class CCGenerator(object): |
| ) |
| 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_) |
| @@ -591,8 +591,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: |
| @@ -607,13 +607,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('}') |