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

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

Issue 10334003: Rework static method support. (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/systeminterface.py ('k') | lib/dom/scripts/systemwrapping.py » ('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 3629bc5750dc06db5dd6792ecdeb6ea3c55839dd..ec87d8118d670136df3e623eabddb262c13921ec 100644
--- a/lib/dom/scripts/systemnative.py
+++ b/lib/dom/scripts/systemnative.py
@@ -11,6 +11,7 @@ import os
import systemwrapping
from generator import *
from systembase import *
+from idlnode import IDLOperation
class NativeImplementationSystem(System):
@@ -581,11 +582,15 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
'Callback', True)
return
+ modifier = ''
+ if info.IsStatic():
+ modifier = 'static '
body = self._members_emitter.Emit(
'\n'
- ' $TYPE $NAME($PARAMETERS) {\n'
+ ' $MODIFIER$TYPE $NAME($PARAMETERS) {\n'
'$!BODY'
' }\n',
+ MODIFIER=modifier,
TYPE=info.type_name,
NAME=info.name,
PARAMETERS=info.ParametersImplementationDeclaration())
@@ -629,7 +634,10 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
NATIVENAME=native_name,
ARGS=argument_list)
# Generate binding.
- dart_declaration = '%s _%s(%s)' % (info.type_name, native_name,
+ modifier = ''
+ if operation.is_static:
+ modifier = 'static '
+ dart_declaration = '%s%s _%s(%s)' % (modifier, info.type_name, native_name,
argument_list)
is_custom = 'Custom' in operation.ext_attrs
cpp_callback_name = self._GenerateNativeBinding(
@@ -648,8 +656,11 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
raises_exceptions = raises_exceptions or len(operation.arguments) > 0 or operation.raises
# Process Dart arguments.
- for (i, argument) in enumerate(operation.arguments):
- if (i == len(operation.arguments) - 1 and
+ start_index = 1
+ if operation.is_static:
+ start_index = 0
+ for (i, argument) in enumerate(operation.arguments, start_index):
+ if (i - start_index == len(operation.arguments) - 1 and
self._interface.id == 'Console' and
argument.id == 'arg'):
# FIXME: we are skipping last argument here because it was added in
@@ -678,7 +689,7 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
operation.type.id, operation.ext_attrs, operation.raises)
self._GenerateNativeCallback(cpp_callback_name,
parameter_definitions=parameter_definitions_emitter.Fragments(),
- needs_receiver=True, invocation=invocation,
+ needs_receiver=not operation.is_static, invocation=invocation,
raises_exceptions=raises_exceptions)
def _GenerateNativeCallback(self, callback_name, parameter_definitions,
@@ -740,7 +751,7 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
' }\n',
ADAPTER_TYPE=adapter_type,
NAME=adapter_name or idl_node.id,
- INDEX=index + 1,
+ INDEX=index,
FLAGS=flags)
def _GenerateNativeBinding(self, idl_name, argument_count, dart_declaration,
@@ -783,6 +794,8 @@ class NativeImplementationGenerator(systemwrapping.WrappingInterfaceGenerator):
def _GenerateWebCoreFunctionExpression(self, function_name, idl_node):
if 'ImplementedBy' in idl_node.ext_attrs:
return '%s::%s' % (idl_node.ext_attrs['ImplementedBy'], function_name)
+ if isinstance(idl_node, IDLOperation) and idl_node.is_static:
podivilov 2012/05/03 09:05:42 I doubt that static attributes will be accessible
+ return '%s::%s' % (self._interface_type_info.idl_type(), function_name)
return '%s%s' % (self._interface_type_info.receiver(), function_name)
def _GenerateWebCoreInvocation(self, function_expression, arguments,
« no previous file with comments | « lib/dom/scripts/systeminterface.py ('k') | lib/dom/scripts/systemwrapping.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698