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

Unified Diff: lib/html/scripts/systemnative.py

Issue 11051014: Extract common logic for emitting implementation classes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Refresh html_dartium.dart Created 8 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/html/scripts/systemhtml.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/html/scripts/systemnative.py
diff --git a/lib/html/scripts/systemnative.py b/lib/html/scripts/systemnative.py
index 42094b59b4fb270e7707053a74dddad71e071a3e..f090a93bcac946b453ce514a9afd30aa5ea9c59a 100644
--- a/lib/html/scripts/systemnative.py
+++ b/lib/html/scripts/systemnative.py
@@ -28,9 +28,6 @@ class DartiumBackend(object):
def ImplementationClassName(self):
return self._ImplClassName(self._interface.id)
- def SetImplementationEmitter(self, implementation_emitter):
- self._dart_impl_emitter = implementation_emitter
-
def ImplementsMergedMembers(self):
# We could not add merged functions to implementation class because
# underlying c++ object doesn't implement them. Merged functions are
@@ -100,7 +97,22 @@ class DartiumBackend(object):
INTERFACE=self._interface.id,
HANDLERS=cpp_impl_handlers_emitter.Fragments())
- def StartInterface(self):
+ def ImplementationTemplate(self):
+ template = None
+ if self._html_interface_name == self._interface.id or not self._database.HasInterface(self._html_interface_name):
+ template_file = 'impl_%s.darttemplate' % self._html_interface_name
+ template = self._template_loader.TryLoad(template_file)
+ if not template:
+ template = self._template_loader.Load('dart_implementation.darttemplate')
+ return template
+
+ def AdditionalImplementedInterfaces(self):
+ return []
+
+ def NativeSpec(self):
+ return ''
+
+ def StartInterface(self, memebers_emitter):
# Create emitters for c++ implementation.
if self.HasImplementation():
self._cpp_header_emitter = self._cpp_library_emitter.CreateHeaderEmitter(self._interface.id)
@@ -110,14 +122,13 @@ class DartiumBackend(object):
self._cpp_impl_emitter = emitter.Emitter()
self._interface_type_info = self._TypeInfo(self._interface.id)
- self._members_emitter = emitter.Emitter()
+ self._members_emitter = memebers_emitter
self._cpp_declarations_emitter = emitter.Emitter()
self._cpp_impl_includes = set()
self._cpp_definitions_emitter = emitter.Emitter()
self._cpp_resolver_emitter = emitter.Emitter()
self._GenerateConstructors()
- return self._members_emitter
def _GenerateConstructors(self):
if not self._IsConstructable():
@@ -169,7 +180,7 @@ class DartiumBackend(object):
def _ImplClassName(self, interface_name):
return '_%sImpl' % interface_name
- def _BaseClassName(self):
+ def BaseClassName(self):
root_class = 'NativeFieldWrapperClass1'
if not self._interface.parents:
@@ -224,22 +235,6 @@ class DartiumBackend(object):
NATIVE_NAME=native_binding)
def FinishInterface(self):
- template = None
- if self._html_interface_name == self._interface.id or not self._database.HasInterface(self._html_interface_name):
- template_file = 'impl_%s.darttemplate' % self._html_interface_name
- template = self._template_loader.TryLoad(template_file)
- if not template:
- template = self._template_loader.Load('dart_implementation.darttemplate')
-
- class_name = self._ImplClassName(self._interface.id)
- members_emitter = self._dart_impl_emitter.Emit(
- template,
- CLASSNAME=class_name,
- EXTENDS=' extends ' + self._BaseClassName(),
- IMPLEMENTS=' implements ' + self._html_interface_name,
- NATIVESPEC='')
- members_emitter.Emit(''.join(self._members_emitter.Fragments()))
-
self._GenerateCPPHeader()
self._cpp_impl_emitter.Emit(
@@ -248,7 +243,7 @@ class DartiumBackend(object):
INCLUDES=self._GenerateCPPIncludes(self._cpp_impl_includes),
CALLBACKS=self._cpp_definitions_emitter.Fragments(),
RESOLVER=self._cpp_resolver_emitter.Fragments(),
- DART_IMPLEMENTATION_CLASS=class_name)
+ DART_IMPLEMENTATION_CLASS=self.ImplementationClassName())
def _GenerateCPPHeader(self):
to_native_emitter = emitter.Emitter()
« no previous file with comments | « lib/html/scripts/systemhtml.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698