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

Side by Side Diff: client/dom/scripts/dartgenerator.py

Issue 9428050: Automatically generate most constructors (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: add test Created 8 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « client/dom/generated/src/interface/XPathEvaluator.dart ('k') | client/dom/scripts/generator.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
3 # for details. All rights reserved. Use of this source code is governed by a 3 # for details. All rights reserved. Use of this source code is governed by a
4 # BSD-style license that can be found in the LICENSE file. 4 # BSD-style license that can be found in the LICENSE file.
5 5
6 """This module generates Dart APIs from the IDL database.""" 6 """This module generates Dart APIs from the IDL database."""
7 7
8 import emitter 8 import emitter
9 import idlnode 9 import idlnode
10 import logging 10 import logging
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 622
623 class DummyImplementationSystem(System): 623 class DummyImplementationSystem(System):
624 """Generates a dummy implementation for use by the editor analysis. 624 """Generates a dummy implementation for use by the editor analysis.
625 625
626 All the code comes from hand-written library files. 626 All the code comes from hand-written library files.
627 """ 627 """
628 628
629 def __init__(self, templates, database, emitters, output_dir): 629 def __init__(self, templates, database, emitters, output_dir):
630 super(DummyImplementationSystem, self).__init__( 630 super(DummyImplementationSystem, self).__init__(
631 templates, database, emitters, output_dir) 631 templates, database, emitters, output_dir)
632 factory_providers_file = os.path.join(self._output_dir, 'src', 'dummy',
633 'RegularFactoryProviders.dart')
634 self._factory_providers_emitter = self._emitters.FileEmitter(
635 factory_providers_file)
636 self._impl_file_paths = [factory_providers_file]
632 637
633 def InterfaceGenerator(self, 638 def InterfaceGenerator(self,
634 interface, 639 interface,
635 common_prefix, 640 common_prefix,
636 super_interface_name, 641 super_interface_name,
637 source_filter): 642 source_filter):
638 return DummyInterfaceGenerator(self, interface) 643 return DummyInterfaceGenerator(self, interface)
639 644
640 def ProcessCallback(self, interface, info): 645 def ProcessCallback(self, interface, info):
641 pass 646 pass
642 647
643 def GenerateLibraries(self, lib_dir): 648 def GenerateLibraries(self, lib_dir):
644 # Library generated for implementation. 649 # Library generated for implementation.
645 self._GenerateLibFile( 650 self._GenerateLibFile(
646 'dom_dummy.darttemplate', 651 'dom_dummy.darttemplate',
647 os.path.join(lib_dir, 'dom_dummy.dart'), 652 os.path.join(lib_dir, 'dom_dummy.dart'),
648 (self._interface_system._dart_interface_file_paths + 653 (self._interface_system._dart_interface_file_paths +
649 self._interface_system._dart_callback_file_paths + 654 self._interface_system._dart_callback_file_paths +
650 [] 655 self._impl_file_paths))
651 # FIXME: Move the implementation to a separate library. 656
652 # self._dart_wrapping_file_paths
653 ))
654 657
655 # ------------------------------------------------------------------------------ 658 # ------------------------------------------------------------------------------
656 659
657 class DummyInterfaceGenerator(object): 660 class DummyInterfaceGenerator(object):
658 """Generates nothing.""" 661 """Generates dummy implementation."""
659 662
660 def __init__(self, system, interface): 663 def __init__(self, system, interface):
661 pass 664 self._system = system
665 self._interface = interface
662 666
663 def StartInterface(self): 667 def StartInterface(self):
664 pass 668 # There is no implementation to match the interface, but there might be a
669 # factory constructor for the Dart interface.
670 constructor_info = AnalyzeConstructor(self._interface)
671 if constructor_info:
672 dart_interface_name = self._interface.id
673 self._EmitFactoryProvider(dart_interface_name, constructor_info)
674
675 def _EmitFactoryProvider(self, interface_name, constructor_info):
676 factory_provider = '_' + interface_name + 'FactoryProvider'
677 self._system._factory_providers_emitter.Emit(
678 self._system._templates.Load('factoryprovider.darttemplate'),
679 FACTORYPROVIDER=factory_provider,
680 CONSTRUCTOR=interface_name,
681 PARAMETERS=constructor_info.ParametersImplementationDeclaration())
665 682
666 def FinishInterface(self): 683 def FinishInterface(self):
667 pass 684 pass
668 685
669 def AddConstant(self, constant): 686 def AddConstant(self, constant):
670 pass 687 pass
671 688
672 def AddAttribute(self, getter, setter): 689 def AddAttribute(self, getter, setter):
673 pass 690 pass
674 691
675 def AddSecondaryAttribute(self, interface, getter, setter): 692 def AddSecondaryAttribute(self, interface, getter, setter):
676 pass 693 pass
677 694
678 def AddSecondaryOperation(self, interface, info): 695 def AddSecondaryOperation(self, interface, info):
679 pass 696 pass
680 697
681 def AddIndexer(self, element_type): 698 def AddIndexer(self, element_type):
682 pass 699 pass
683 700
684 def AddTypedArrayConstructors(self, element_type): 701 def AddTypedArrayConstructors(self, element_type):
685 pass 702 pass
686 703
687 def AddOperation(self, info): 704 def AddOperation(self, info):
688 pass 705 pass
689 706
690 def AddEventAttributes(self, event_attrs): 707 def AddEventAttributes(self, event_attrs):
691 pass 708 pass
OLDNEW
« no previous file with comments | « client/dom/generated/src/interface/XPathEvaluator.dart ('k') | client/dom/scripts/generator.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698