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

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

Issue 9362004: Remove JS from wrapping implementation. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: unused templates 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
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 1010 matching lines...) Expand 10 before | Expand all | Expand 10 after
1021 def __init__(self, templates, database, emitters, output_dir): 1021 def __init__(self, templates, database, emitters, output_dir):
1022 """Prepared for generating wrapping implementation. 1022 """Prepared for generating wrapping implementation.
1023 1023
1024 - Creates emitter for JS code. 1024 - Creates emitter for JS code.
1025 - Creates emitter for Dart code. 1025 - Creates emitter for Dart code.
1026 """ 1026 """
1027 super(WrappingImplementationSystem, self).__init__( 1027 super(WrappingImplementationSystem, self).__init__(
1028 templates, database, emitters, output_dir) 1028 templates, database, emitters, output_dir)
1029 self._dart_wrapping_file_paths = [] 1029 self._dart_wrapping_file_paths = []
1030 1030
1031 js_file_name = os.path.join(output_dir, 'wrapping_dom.js')
1032 code = self._emitters.FileEmitter(js_file_name)
1033 template = self._templates.Load('wrapping_dom.js')
1034 (self._wrapping_js_natives,
1035 self._wrapping_map) = code.Emit(template)
1036
1037 _logger.info('Started Generating %s' % js_file_name)
1038
1039 # Set of (interface, name, kind), kind is 'attribute' or 'operation'.
1040 self._wrapping_externs = set()
1041
1042 1031
1043 def InterfaceGenerator(self, 1032 def InterfaceGenerator(self,
1044 interface, 1033 interface,
1045 common_prefix, 1034 common_prefix,
1046 super_interface_name, 1035 super_interface_name,
1047 source_filter): 1036 source_filter):
1048 """.""" 1037 """."""
1049 interface_name = interface.id 1038 interface_name = interface.id
1050 dart_wrapping_file_path = self._FilePathForDartWrappingImpl(interface_name) 1039 dart_wrapping_file_path = self._FilePathForDartWrappingImpl(interface_name)
1051 1040
1052 self._dart_wrapping_file_paths.append(dart_wrapping_file_path) 1041 self._dart_wrapping_file_paths.append(dart_wrapping_file_path)
1053 1042
1054 dart_code = self._emitters.FileEmitter(dart_wrapping_file_path) 1043 dart_code = self._emitters.FileEmitter(dart_wrapping_file_path)
1055 dart_code.Emit(self._templates.Load('wrapping_impl.darttemplate')) 1044 dart_code.Emit(self._templates.Load('wrapping_impl.darttemplate'))
1056 return WrappingInterfaceGenerator(interface, super_interface_name, 1045 return WrappingInterfaceGenerator(interface, super_interface_name,
1057 dart_code, self._wrapping_js_natives, 1046 dart_code,
1058 self._wrapping_map,
1059 self._wrapping_externs,
1060 self._BaseDefines(interface)) 1047 self._BaseDefines(interface))
1061 1048
1062 def ProcessCallback(self, interface, info): 1049 def ProcessCallback(self, interface, info):
1063 pass 1050 pass
1064 1051
1065 def GenerateLibraries(self, lib_dir): 1052 def GenerateLibraries(self, lib_dir):
1066 # Library generated for implementation. 1053 # Library generated for implementation.
1067 self._GenerateLibFile( 1054 self._GenerateLibFile(
1068 'wrapping_dom.darttemplate', 1055 'wrapping_dom.darttemplate',
1069 os.path.join(lib_dir, 'wrapping_dom.dart'), 1056 os.path.join(lib_dir, 'wrapping_dom.dart'),
1070 (self._interface_system._dart_interface_file_paths + 1057 (self._interface_system._dart_interface_file_paths +
1071 self._interface_system._dart_callback_file_paths + 1058 self._interface_system._dart_callback_file_paths +
1072 # FIXME: Move the implementation to a separate library. 1059 # FIXME: Move the implementation to a separate library.
1073 self._dart_wrapping_file_paths 1060 self._dart_wrapping_file_paths
1074 )) 1061 ))
1075 1062
1076 1063
1077 def Finish(self): 1064 def Finish(self):
1078 self._GenerateJavaScriptExternsWrapping(self._database, self._output_dir) 1065 pass
1079 1066
1080 1067
1081 def _FilePathForDartWrappingImpl(self, interface_name): 1068 def _FilePathForDartWrappingImpl(self, interface_name):
1082 """Returns the file path of the Dart wrapping implementation.""" 1069 """Returns the file path of the Dart wrapping implementation."""
1083 return os.path.join(self._output_dir, 'src', 'wrapping', 1070 return os.path.join(self._output_dir, 'src', 'wrapping',
1084 '_%sWrappingImplementation.dart' % interface_name) 1071 '_%sWrappingImplementation.dart' % interface_name)
1085 1072
1086 def _GenerateJavaScriptExternsWrapping(self, database, output_dir):
1087 """Generates a JavaScript externs file.
1088
1089 Generates an externs file that is consistent with generated JavaScript code
1090 and Dart APIs for the wrapping implementation.
1091 """
1092 externs_file_name = os.path.join(output_dir, 'wrapping_dom_externs.js')
1093 code = self._emitters.FileEmitter(externs_file_name)
1094 _logger.info('Started generating %s' % externs_file_name)
1095
1096 template = self._templates.Load('wrapping_dom_externs.js')
1097 namespace = 'dom_externs'
1098 members = code.Emit(template, NAMESPACE=namespace)
1099
1100 # TODO: Filter out externs that are known to the JavaScript back-end. Some
1101 # of the known externs have useful declarations like @nosideeffects that
1102 # might improve back-end analysis.
1103
1104 names = dict() # maps name to (interface, kind)
1105 for (interface, name, kind) in self._wrapping_externs:
1106 if name not in _javascript_keywords:
1107 if name not in names:
1108 names[name] = set()
1109 names[name].add((interface, kind))
1110
1111 for name in sorted(names.keys()):
1112 # Simply export the property name.
1113 extern = emitter.Format('$NAMESPACE.$NAME;',
1114 NAMESPACE=namespace, NAME=name)
1115 members.EmitRaw(extern)
1116 # Add a big comment of all the attributes and operations contributing to
1117 # the export.
1118 filler = ' ' * (40 - 2 - len(extern)) # '2' for 2 spaces before comment.
1119 separator = filler + ' //'
1120 for (interface, kind) in sorted(names[name]):
1121 members.Emit('$SEP $KIND $INTERFACE.$NAME',
1122 NAME=name, INTERFACE=interface, KIND=kind, SEP=separator)
1123 separator = ','
1124 members.Emit('\n')
1125
1126 # ------------------------------------------------------------------------------ 1073 # ------------------------------------------------------------------------------
1127 1074
1128 class FrogSystem(System): 1075 class FrogSystem(System):
1129 1076
1130 def __init__(self, templates, database, emitters, output_dir): 1077 def __init__(self, templates, database, emitters, output_dir):
1131 super(FrogSystem, self).__init__( 1078 super(FrogSystem, self).__init__(
1132 templates, database, emitters, output_dir) 1079 templates, database, emitters, output_dir)
1133 self._dart_frog_file_paths = [] 1080 self._dart_frog_file_paths = []
1134 1081
1135 def InterfaceGenerator(self, 1082 def InterfaceGenerator(self,
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
1355 pass 1302 pass
1356 1303
1357 def AddOperation(self, info): 1304 def AddOperation(self, info):
1358 pass 1305 pass
1359 1306
1360 # ------------------------------------------------------------------------------ 1307 # ------------------------------------------------------------------------------
1361 1308
1362 class WrappingInterfaceGenerator(object): 1309 class WrappingInterfaceGenerator(object):
1363 """Generates Dart and JS implementation for one DOM IDL interface.""" 1310 """Generates Dart and JS implementation for one DOM IDL interface."""
1364 1311
1365 def __init__(self, interface, super_interface, dart_code, js_code, type_map, 1312 def __init__(self, interface, super_interface, dart_code, base_members):
1366 externs, base_members):
1367 """Generates Dart and JS code for the given interface. 1313 """Generates Dart and JS code for the given interface.
1368 1314
1369 Args: 1315 Args:
1370 1316
1371 interface: an IDLInterface instance. It is assumed that all types have 1317 interface: an IDLInterface instance. It is assumed that all types have
1372 been converted to Dart types (e.g. int, String), unless they are in 1318 been converted to Dart types (e.g. int, String), unless they are in
1373 the same package as the interface. 1319 the same package as the interface.
1374 super_interface: A string or None, the name of the common interface that 1320 super_interface: A string or None, the name of the common interface that
1375 this interface implements, if any. 1321 this interface implements, if any.
1376 dart_code: an Emitter for the file containing the Dart implementation 1322 dart_code: an Emitter for the file containing the Dart implementation
1377 class. 1323 class.
1378 js_code: an Emitter for the file containing JS code.
1379 type_map: an Emitter for the map from tokens to wrapper factory.
1380 externs: a set of (class, property, kind) externs. kind is 'attribute' or
1381 'operation'.
1382 base_members: a set of names of members defined in a base class. This is 1324 base_members: a set of names of members defined in a base class. This is
1383 used to avoid static member 'overriding' in the generated Dart code. 1325 used to avoid static member 'overriding' in the generated Dart code.
1384 """ 1326 """
1385 self._interface = interface 1327 self._interface = interface
1386 self._super_interface = super_interface 1328 self._super_interface = super_interface
1387 self._dart_code = dart_code 1329 self._dart_code = dart_code
1388 self._js_code = js_code
1389 self._type_map = type_map
1390 self._externs = externs
1391 self._base_members = base_members 1330 self._base_members = base_members
1392 self._current_secondary_parent = None 1331 self._current_secondary_parent = None
1393 1332
1394 1333
1395 def StartInterface(self): 1334 def StartInterface(self):
1396 interface = self._interface 1335 interface = self._interface
1397 interface_name = interface.id 1336 interface_name = interface.id
1398 1337
1399 self._class_name = self._ImplClassName(interface_name) 1338 self._class_name = self._ImplClassName(interface_name)
1400 self._type_map.Emit(' "$INTERFACE": native_$(CLASS)_create_$(CLASS),\n',
1401 INTERFACE=interface_name, CLASS=self._class_name)
1402 1339
1403 base = self._BaseClassName(interface) 1340 base = self._BaseClassName(interface)
1404 1341
1405 (self._members_emitter, 1342 (self._members_emitter,
1406 self._top_level_emitter) = self._dart_code.Emit( 1343 self._top_level_emitter) = self._dart_code.Emit(
1407 '\n' 1344 '\n'
1408 'class $CLASS extends $BASE implements $INTERFACE {\n' 1345 'class $CLASS extends $BASE implements $INTERFACE {\n'
1409 ' $CLASS() : super() {}\n' 1346 ' $CLASS() : super() {}\n'
1410 '\n' 1347 '\n'
1411 ' static create_$CLASS() native {\n' 1348 ' static create_$CLASS() native {\n'
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1470 def _AddGetter(self, attr): 1407 def _AddGetter(self, attr):
1471 # FIXME: Instead of injecting the interface name into the method when it is 1408 # FIXME: Instead of injecting the interface name into the method when it is
1472 # also implemented in the base class, suppress the method altogether if it 1409 # also implemented in the base class, suppress the method altogether if it
1473 # has the same signature. I.e., let the JS do the virtual dispatch instead. 1410 # has the same signature. I.e., let the JS do the virtual dispatch instead.
1474 method_name = self._MethodName('_get_', attr.id) 1411 method_name = self._MethodName('_get_', attr.id)
1475 self._members_emitter.Emit( 1412 self._members_emitter.Emit(
1476 '\n' 1413 '\n'
1477 ' $TYPE get $NAME() { return $METHOD(this); }\n' 1414 ' $TYPE get $NAME() { return $METHOD(this); }\n'
1478 ' static $TYPE $METHOD(var _this) native;\n', 1415 ' static $TYPE $METHOD(var _this) native;\n',
1479 NAME=attr.id, TYPE=attr.type.id, METHOD=method_name) 1416 NAME=attr.id, TYPE=attr.type.id, METHOD=method_name)
1480 if (self._interface.id, attr.id) not in _custom_getters:
1481 self._js_code.Emit(
1482 '\n'
1483 'function native_$(CLASS)_$(METHOD)(_this) {\n'
1484 ' try {\n'
1485 ' return __dom_wrap(_this.$dom.$NAME);\n'
1486 ' } catch (e) {\n'
1487 ' throw __dom_wrap_exception(e);\n'
1488 ' }\n'
1489 '}\n',
1490 CLASS=self._class_name, NAME=attr.id, METHOD=method_name)
1491 self._externs.add((self._interface.id, attr.id, 'attribute'))
1492 1417
1493 def _AddSetter(self, attr): 1418 def _AddSetter(self, attr):
1494 # FIXME: See comment on getter. 1419 # FIXME: See comment on getter.
1495 method_name = self._MethodName('_set_', attr.id) 1420 method_name = self._MethodName('_set_', attr.id)
1496 self._members_emitter.Emit( 1421 self._members_emitter.Emit(
1497 '\n' 1422 '\n'
1498 ' void set $NAME($TYPE value) { $METHOD(this, value); }\n' 1423 ' void set $NAME($TYPE value) { $METHOD(this, value); }\n'
1499 ' static void $METHOD(var _this, $TYPE value) native;\n', 1424 ' static void $METHOD(var _this, $TYPE value) native;\n',
1500 NAME=attr.id, TYPE=attr.type.id, METHOD=method_name) 1425 NAME=attr.id, TYPE=attr.type.id, METHOD=method_name)
1501 self._js_code.Emit(
1502 '\n'
1503 'function native_$(CLASS)_$(METHOD)(_this, value) {\n'
1504 ' try {\n'
1505 ' _this.$dom.$NAME = __dom_unwrap(value);\n'
1506 ' } catch (e) {\n'
1507 ' throw __dom_wrap_exception(e);\n'
1508 ' }\n'
1509 '}\n',
1510 CLASS=self._class_name, NAME=attr.id, METHOD=method_name)
1511 self._externs.add((self._interface.id, attr.id, 'attribute'))
1512 1426
1513 def AddSecondaryAttribute(self, interface, getter, setter): 1427 def AddSecondaryAttribute(self, interface, getter, setter):
1514 self._SecondaryContext(interface) 1428 self._SecondaryContext(interface)
1515 self.AddAttribute(getter, setter) 1429 self.AddAttribute(getter, setter)
1516 1430
1517 def AddSecondaryOperation(self, interface, info): 1431 def AddSecondaryOperation(self, interface, info):
1518 self._SecondaryContext(interface) 1432 self._SecondaryContext(interface)
1519 self.AddOperation(info) 1433 self.AddOperation(info)
1520 1434
1521 def _SecondaryContext(self, interface): 1435 def _SecondaryContext(self, interface):
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1655 return ('HasIndexGetter' in interface.ext_attrs or 1569 return ('HasIndexGetter' in interface.ext_attrs or
1656 'HasNumericIndexGetter' in interface.ext_attrs) 1570 'HasNumericIndexGetter' in interface.ext_attrs)
1657 1571
1658 def _EmitNativeIndexGetter(self, interface, element_type): 1572 def _EmitNativeIndexGetter(self, interface, element_type):
1659 method_name = '_index' 1573 method_name = '_index'
1660 self._members_emitter.Emit( 1574 self._members_emitter.Emit(
1661 '\n' 1575 '\n'
1662 ' $TYPE operator[](int index) { return $METHOD(this, index); }\n' 1576 ' $TYPE operator[](int index) { return $METHOD(this, index); }\n'
1663 ' static $TYPE $METHOD(var _this, int index) native;\n', 1577 ' static $TYPE $METHOD(var _this, int index) native;\n',
1664 TYPE=element_type, METHOD=method_name) 1578 TYPE=element_type, METHOD=method_name)
1665 self._js_code.Emit(
1666 '\n'
1667 'function native_$(CLASS)_$(METHOD)(_this, index) {\n'
1668 ' try {\n'
1669 ' return __dom_wrap(_this.$dom[index]);\n'
1670 ' } catch (e) {\n'
1671 ' throw __dom_wrap_exception(e);\n'
1672 ' }\n'
1673 '}\n',
1674 CLASS=self._class_name, METHOD=method_name)
1675 1579
1676 def _HasNativeIndexSetter(self, interface): 1580 def _HasNativeIndexSetter(self, interface):
1677 return 'HasCustomIndexSetter' in interface.ext_attrs 1581 return 'HasCustomIndexSetter' in interface.ext_attrs
1678 1582
1679 def _EmitNativeIndexSetter(self, interface, element_type): 1583 def _EmitNativeIndexSetter(self, interface, element_type):
1680 method_name = '_set_index' 1584 method_name = '_set_index'
1681 self._members_emitter.Emit( 1585 self._members_emitter.Emit(
1682 '\n' 1586 '\n'
1683 ' void operator[]=(int index, $TYPE value) {\n' 1587 ' void operator[]=(int index, $TYPE value) {\n'
1684 ' return $METHOD(this, index, value);\n' 1588 ' return $METHOD(this, index, value);\n'
1685 ' }\n' 1589 ' }\n'
1686 ' static $METHOD(_this, index, value) native;\n', 1590 ' static $METHOD(_this, index, value) native;\n',
1687 TYPE=element_type, METHOD=method_name) 1591 TYPE=element_type, METHOD=method_name)
1688 self._js_code.Emit(
1689 '\n'
1690 'function native_$(CLASS)_$(METHOD)(_this, index, value) {\n'
1691 ' try {\n'
1692 ' return _this.$dom[index] = __dom_unwrap(value);\n'
1693 ' } catch (e) {\n'
1694 ' throw __dom_wrap_exception(e);\n'
1695 ' }\n'
1696 '}\n',
1697 CLASS=self._class_name, METHOD=method_name)
1698 1592
1699 def AddOperation(self, info): 1593 def AddOperation(self, info):
1700 """ 1594 """
1701 Arguments: 1595 Arguments:
1702 info: An OperationInfo object. 1596 info: An OperationInfo object.
1703 """ 1597 """
1704 body = self._members_emitter.Emit( 1598 body = self._members_emitter.Emit(
1705 '\n' 1599 '\n'
1706 ' $TYPE $NAME($PARAMS) {\n' 1600 ' $TYPE $NAME($PARAMS) {\n'
1707 '$!BODY' 1601 '$!BODY'
1708 ' }\n', 1602 ' }\n',
1709 TYPE=info.type_name, 1603 TYPE=info.type_name,
1710 NAME=info.name, 1604 NAME=info.name,
1711 PARAMS=info.ParametersImplementationDeclaration()) 1605 PARAMS=info.ParametersImplementationDeclaration())
1712 1606
1713 # Process in order of ascending number of arguments to ensure missing 1607 # Process in order of ascending number of arguments to ensure missing
1714 # optional arguments are processed early. 1608 # optional arguments are processed early.
1715 overloads = sorted(info.overloads, 1609 overloads = sorted(info.overloads,
1716 key=lambda overload: len(overload.arguments)) 1610 key=lambda overload: len(overload.arguments))
1717 self._native_version = 0 1611 self._native_version = 0
1718 fallthrough = self.GenerateDispatch(body, info, ' ', 0, overloads) 1612 fallthrough = self.GenerateDispatch(body, info, ' ', 0, overloads)
1719 if fallthrough: 1613 if fallthrough:
1720 body.Emit(' throw "Incorrect number or type of arguments";\n'); 1614 body.Emit(' throw "Incorrect number or type of arguments";\n');
1721 self._externs.add((self._interface.id, info.js_name, 'operation'))
1722 1615
1723 def GenerateSingleOperation(self, emitter, info, indent, operation): 1616 def GenerateSingleOperation(self, emitter, info, indent, operation):
1724 """Generates a call to a single operation. 1617 """Generates a call to a single operation.
1725 1618
1726 Arguments: 1619 Arguments:
1727 emitter: an Emitter for the body of a block of code. 1620 emitter: an Emitter for the body of a block of code.
1728 info: the compound information about the operation and its overloads. 1621 info: the compound information about the operation and its overloads.
1729 indent: an indentation string for generated code. 1622 indent: an indentation string for generated code.
1730 operation: the IDLOperation to call. 1623 operation: the IDLOperation to call.
1731 """ 1624 """
(...skipping 28 matching lines...) Expand all
1760 '$(INDENT)return;\n', 1653 '$(INDENT)return;\n',
1761 INDENT=indent, 1654 INDENT=indent,
1762 NATIVENAME=native_name, 1655 NATIVENAME=native_name,
1763 ARGS=argument_expressions) 1656 ARGS=argument_expressions)
1764 1657
1765 self._members_emitter.Emit(' static $TYPE $NAME($PARAMS) native;\n', 1658 self._members_emitter.Emit(' static $TYPE $NAME($PARAMS) native;\n',
1766 NAME=native_name, 1659 NAME=native_name,
1767 TYPE=info.type_name, 1660 TYPE=info.type_name,
1768 PARAMS=', '.join(['receiver'] + arg_names) ) 1661 PARAMS=', '.join(['receiver'] + arg_names) )
1769 1662
1770 if (self._interface.id, info.name) not in _custom_methods:
1771 alternates = _alternate_methods.get( (self._interface.id, info.name) )
1772 if alternates:
1773 (js_name_1, js_name_2) = alternates
1774 self._js_code.Emit(
1775 '\n'
1776 'function native_$(CLASS)_$(NATIVENAME)($PARAMS) {\n'
1777 ' try {\n'
1778 ' var _method = _this.$dom.$JSNAME1 || _this.$dom.$JSNAME2;\n'
1779 ' return __dom_wrap(_method.call($ARGS));\n'
1780 ' } catch (e) {\n'
1781 ' throw __dom_wrap_exception(e);\n'
1782 ' }\n'
1783 '}\n',
1784 CLASS=self._class_name,
1785 NAME=info.name,
1786 JSNAME1=js_name_1,
1787 JSNAME2=js_name_2,
1788 NATIVENAME=native_name,
1789 PARAMS=', '.join(['_this'] + arg_names),
1790 ARGS=', '.join(['_this.$dom'] + unwrap_args))
1791 else:
1792 if info.js_name in _javascript_keywords:
1793 access = "['%s']" % info.js_name
1794 else:
1795 access = ".%s" % info.js_name
1796 self._js_code.Emit(
1797 '\n'
1798 'function native_$(CLASS)_$(NATIVENAME)($PARAMS) {\n'
1799 ' try {\n'
1800 ' return __dom_wrap(_this.$dom$ACCESS($ARGS));\n'
1801 ' } catch (e) {\n'
1802 ' throw __dom_wrap_exception(e);\n'
1803 ' }\n'
1804 '}\n',
1805 CLASS=self._class_name,
1806 NAME=info.name,
1807 ACCESS=access,
1808 NATIVENAME=native_name,
1809 PARAMS=', '.join(['_this'] + arg_names),
1810 ARGS=', '.join(unwrap_args))
1811
1812 1663
1813 def GenerateDispatch(self, emitter, info, indent, position, overloads): 1664 def GenerateDispatch(self, emitter, info, indent, position, overloads):
1814 """Generates a dispatch to one of the overloads. 1665 """Generates a dispatch to one of the overloads.
1815 1666
1816 Arguments: 1667 Arguments:
1817 emitter: an Emitter for the body of a block of code. 1668 emitter: an Emitter for the body of a block of code.
1818 info: the compound information about the operation and its overloads. 1669 info: the compound information about the operation and its overloads.
1819 indent: an indentation string for generated code. 1670 indent: an indentation string for generated code.
1820 position: the index of the parameter to dispatch on. 1671 position: the index of the parameter to dispatch on.
1821 overloads: a list of the remaining IDLOperations to dispatch. 1672 overloads: a list of the remaining IDLOperations to dispatch.
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
2361 INDENT=indent, 2212 INDENT=indent,
2362 NATIVENAME=native_name, 2213 NATIVENAME=native_name,
2363 ARGS=argument_expressions) 2214 ARGS=argument_expressions)
2364 2215
2365 self._members_emitter.Emit(' $TYPE $NATIVE_NAME($PARAMS) native ' 2216 self._members_emitter.Emit(' $TYPE $NATIVE_NAME($PARAMS) native '
2366 '"$(INTERFACE)$(NATIVE_NAME)_Callback";\n', 2217 '"$(INTERFACE)$(NATIVE_NAME)_Callback";\n',
2367 NATIVE_NAME=native_name, 2218 NATIVE_NAME=native_name,
2368 TYPE=info.type_name, 2219 TYPE=info.type_name,
2369 PARAMS=', '.join(arg_names), 2220 PARAMS=', '.join(arg_names),
2370 INTERFACE=self._interface.id) 2221 INTERFACE=self._interface.id)
OLDNEW
« no previous file with comments | « client/dom/generated/wrapping_dom_externs.js ('k') | client/dom/templates/dom/wrapping/wrapping_dom.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698