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

Side by Side Diff: tools/json_schema_compiler/cc_generator.py

Issue 10796114: Added ToJson to JSON schema compiler. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 4 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 from code import Code 5 from code import Code
6 from model import PropertyType 6 from model import PropertyType
7 import any_helper 7 import any_helper
8 import cpp_util 8 import cpp_util
9 import model 9 import model
10 import schema_util 10 import schema_util
(...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 def _GenerateReturnCase(self, case_value, return_value): 673 def _GenerateReturnCase(self, case_value, return_value):
674 """Generates a single return case for a switch block. 674 """Generates a single return case for a switch block.
675 """ 675 """
676 c = Code() 676 c = Code()
677 (c.Append('case %s:' % case_value) 677 (c.Append('case %s:' % case_value)
678 .Append(' return %s;' % return_value) 678 .Append(' return %s;' % return_value)
679 ) 679 )
680 return c 680 return c
681 681
682 def _GenerateCreateCallbackArguments(self, function_scope, callback): 682 def _GenerateCreateCallbackArguments(self, function_scope, callback):
683 """Generate all functions to create Value parameters for a callback. 683 """Generate all functions to create Value parameters for a callback, and
684 JSON from the Value.
not at google - send to devlin 2012/07/24 23:04:29 We should only generate these for events, not func
mitchellwrosen 2012/07/25 17:08:20 Done.
684 685
685 E.g for function "Bar", generate Bar::Results::Create 686 E.g for function "Bar", generate Bar::Results::Create
686 E.g for event "Baz", generate Baz::Create 687 E.g for event "Baz", generate Baz::Create
687 688
688 function_scope: the function scope path, e.g. Foo::Bar for the function 689 function_scope: the function scope path, e.g. Foo::Bar for the function
689 Foo::Bar::Baz(). 690 Foo::Bar::Baz().
690 callback: the Function object we are creating callback arguments for. 691 callback: the Function object we are creating callback arguments for.
691 """ 692 """
692 c = Code() 693 c = Code()
693 params = callback.params 694 params = callback.params
(...skipping 13 matching lines...) Expand all
707 # scoped_ptr if it's optional. 708 # scoped_ptr if it's optional.
708 param_copy = param.Copy() 709 param_copy = param.Copy()
709 param_copy.optional = False 710 param_copy.optional = False
710 c.Append('create_results->Append(%s);' % 711 c.Append('create_results->Append(%s);' %
711 self._CreateValueFromProperty(param_copy, param_copy.unix_name)) 712 self._CreateValueFromProperty(param_copy, param_copy.unix_name))
712 declaration_list.append("const %s" % cpp_util.GetParameterDeclaration( 713 declaration_list.append("const %s" % cpp_util.GetParameterDeclaration(
713 param_copy, self._cpp_type_generator.GetType(param_copy))) 714 param_copy, self._cpp_type_generator.GetType(param_copy)))
714 715
715 c.Append('return create_results.Pass();') 716 c.Append('return create_results.Pass();')
716 c.Eblock('}') 717 c.Eblock('}')
718 c.Append()
719 (c.Sblock('scoped_ptr<std::string> %(function_scope)s::'
not at google - send to devlin 2012/07/24 23:04:29 as I mentioned in the bug, only need to return a s
mitchellwrosen 2012/07/25 17:08:20 Done.
720 'ToJson(%(declaration_list)s) {')
721 .Append('scoped_ptr<base::ListValue> create_results = '
722 'Create(%(param_list)s);')
723 .Append('scoped_ptr<std::string> json(new std::string());')
724 .Append('base::JSONWriter::Write(create_results.get(), json.get());')
725 .Append('return json.Pass();')
726 )
727 c.Eblock('}')
728
717 c.Substitute({ 729 c.Substitute({
718 'function_scope': function_scope, 730 'function_scope': function_scope,
719 'declaration_list': ', '.join(declaration_list) 731 'declaration_list': ', '.join(declaration_list),
732 'param_list': ', '.join([param.unix_name for param in param_list])
720 }) 733 })
721 734
722 return c 735 return c
723 736
724 def _InitializePropertyToDefault(self, prop, dst): 737 def _InitializePropertyToDefault(self, prop, dst):
725 """Initialize a model.Property to its default value inside an object. 738 """Initialize a model.Property to its default value inside an object.
726 739
727 E.g for optional enum "state", generate dst->state = STATE_NONE; 740 E.g for optional enum "state", generate dst->state = STATE_NONE;
728 741
729 dst: Type* 742 dst: Type*
(...skipping 21 matching lines...) Expand all
751 """ 764 """
752 return (self._cpp_type_generator.GetReferencedProperty(prop).type_ == 765 return (self._cpp_type_generator.GetReferencedProperty(prop).type_ ==
753 PropertyType.ARRAY) 766 PropertyType.ARRAY)
754 767
755 def _IsFundamentalOrFundamentalRef(self, prop): 768 def _IsFundamentalOrFundamentalRef(self, prop):
756 """Determines if this property is a Fundamental type or is a ref to a 769 """Determines if this property is a Fundamental type or is a ref to a
757 Fundamental type. 770 Fundamental type.
758 """ 771 """
759 return (self._cpp_type_generator.GetReferencedProperty(prop).type_. 772 return (self._cpp_type_generator.GetReferencedProperty(prop).type_.
760 is_fundamental) 773 is_fundamental)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698