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

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

Issue 10331015: Remove ParameterAdapters for bindings classes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: . Created 8 years, 8 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/dom/scripts/generator.py ('k') | lib/dom/templates/dom/native/cpp_callback_header.template » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/dom/scripts/systemnative.py
diff --git a/lib/dom/scripts/systemnative.py b/lib/dom/scripts/systemnative.py
index bf39e97b69d150aefe7a33f457280f1610f1d563..503cc2d53189e82a218badb6992d2ba52e2950fe 100644
--- a/lib/dom/scripts/systemnative.py
+++ b/lib/dom/scripts/systemnative.py
@@ -303,7 +303,7 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
# Process constructor arguments.
for (i, argument) in enumerate(constructor_info.idl_args):
- argument_expression = self._GenerateParameterAdapter(
+ argument_expression = self._GenerateToNative(
parameter_definitions_emitter, argument, i)
arguments.append(argument_expression)
@@ -387,7 +387,7 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
' static PassRefPtr<NativeType> toNative(Dart_Handle handle, Dart_Handle& exception);\n')
else:
to_native_emitter.Emit(
- ' static PassRefPtr<NativeType> toNative(Dart_Handle handle, Dart_Handle& exception)\n'
+ ' static NativeType* toNative(Dart_Handle handle, Dart_Handle& exception)\n'
' {\n'
' return DartDOMWrapper::unwrapDartWrapper<Dart$INTERFACE>(handle, exception);\n'
' }\n',
@@ -537,8 +537,8 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
if attr.type.id.startswith('SVGAnimated'):
webcore_function_name += 'Animated'
- argument_expression = self._GenerateParameterAdapter(
- parameter_definitions_emitter, attr, 1, adapter_name='value')
+ argument_expression = self._GenerateToNative(
+ parameter_definitions_emitter, attr, 1, argument_name='value')
arguments.append(argument_expression)
parameter_definitions = parameter_definitions_emitter.Fragments()
@@ -671,7 +671,7 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
# FIXME: we are skipping last argument here because it was added in
# supplemental dart.idl. Cleanup dart.idl and remove this check.
break
- argument_expression = self._GenerateParameterAdapter(
+ argument_expression = self._GenerateToNative(
parameter_definitions_emitter, argument, start_index + i)
arguments.append(argument_expression)
@@ -719,7 +719,7 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
if raises_exceptions:
body = emitter.Format(
- ' Dart_Handle exception;\n'
+ ' Dart_Handle exception = 0;\n'
'$BODY'
'\n'
'fail:\n'
@@ -737,36 +737,15 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
CALLBACK_NAME=callback_name,
BODY=body)
- def _GenerateParameterAdapter(self, emitter, idl_node, index,
- adapter_name=None):
+ def _GenerateToNative(self, emitter, idl_node, index,
+ argument_name=None):
"""idl_node is IDLArgument or IDLAttribute."""
type_info = GetIDLTypeInfo(idl_node.type.id)
- (adapter_type, include_name) = type_info.parameter_adapter_info()
- if include_name:
- self._cpp_impl_includes.add(include_name)
- adapter_name = adapter_name or idl_node.id
- flags = ''
- if (idl_node.ext_attrs.get('Optional') == 'DefaultIsNullString' or
- 'RequiredCppParameter' in idl_node.ext_attrs):
- flags = ', DartUtilities::ConvertNullToDefaultValue'
- emitter.Emit(
- '\n'
- ' const $ADAPTER_TYPE $NAME(Dart_GetNativeArgument(args, $INDEX)$FLAGS);\n'
- ' if (!$NAME.conversionSuccessful()) {\n'
- ' exception = $NAME.exception();\n'
- ' goto fail;\n'
- ' }\n',
- ADAPTER_TYPE=adapter_type,
- NAME=adapter_name,
- INDEX=index,
- FLAGS=flags)
-
- conversion = '%s'
- if isinstance(type_info, SVGTearOffIDLTypeInfo) and not self._interface.id.endswith('List'):
- conversion = '%s.get()->propertyReference()'
- elif type_info.idl_type() == 'SVGMatrix' and self._interface.id == 'SVGTransformList':
- conversion = '%s.get()'
- return conversion % adapter_name
+ if not IsPrimitiveType(idl_node.type.id):
+ self._cpp_impl_includes.add('"Dart%s.h"' % type_info.idl_type())
+ argument_name = argument_name or idl_node.id
+ handle = 'Dart_GetNativeArgument(args, %i)' % index
+ return type_info.emit_to_native(emitter, idl_node, argument_name, handle, self._interface.id)
def _GenerateNativeBinding(self, idl_name, argument_count, dart_declaration,
native_suffix, is_custom):
« no previous file with comments | « lib/dom/scripts/generator.py ('k') | lib/dom/templates/dom/native/cpp_callback_header.template » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698