OLD | NEW |
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 provides shared functionality for the systems to generate | 6 """This module provides shared functionality for the systems to generate |
7 native binding from the IDL database.""" | 7 native binding from the IDL database.""" |
8 | 8 |
9 import emitter | 9 import emitter |
10 import os | 10 import os |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 | 387 |
388 def ImplementsMergedMembers(self): | 388 def ImplementsMergedMembers(self): |
389 # We could not add merged functions to implementation class because | 389 # We could not add merged functions to implementation class because |
390 # underlying c++ object doesn't implement them. Merged functions are | 390 # underlying c++ object doesn't implement them. Merged functions are |
391 # generated on merged interface implementation instead. | 391 # generated on merged interface implementation instead. |
392 return False | 392 return False |
393 | 393 |
394 def CustomJSMembers(self): | 394 def CustomJSMembers(self): |
395 return {} | 395 return {} |
396 | 396 |
397 def _InputConversion(self, type_name, info): | 397 def _InputConversion(self, idl_type, member): |
398 return None | 398 return FindConversion(idl_type, 'set', self._interface.id, member) |
399 | 399 |
400 def GenerateCallback(self, info): | 400 def GenerateCallback(self, info): |
401 if IsPureInterface(self._interface.id) or IsCustomType(self._interface.id): | 401 if IsPureInterface(self._interface.id) or IsCustomType(self._interface.id): |
402 return | 402 return |
403 | 403 |
404 interface = self._interface | 404 interface = self._interface |
405 if interface.parents: | 405 if interface.parents: |
406 supertype = '%sClassId' % interface.parents[0].type.id | 406 supertype = '%sClassId' % interface.parents[0].type.id |
407 else: | 407 else: |
408 supertype = '-1' | 408 supertype = '-1' |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
638 | 638 |
639 # Then we emit the impedance matching wrapper to call out to the | 639 # Then we emit the impedance matching wrapper to call out to the |
640 # toplevel wrapper | 640 # toplevel wrapper |
641 if not emit_to_native: | 641 if not emit_to_native: |
642 toplevel_name = \ | 642 toplevel_name = \ |
643 self.DeriveQualifiedBlinkName(self._interface.id, | 643 self.DeriveQualifiedBlinkName(self._interface.id, |
644 dart_native_name) | 644 dart_native_name) |
645 self._members_emitter.Emit( | 645 self._members_emitter.Emit( |
646 '\n @DocsEditable()\n' | 646 '\n @DocsEditable()\n' |
647 ' static $INTERFACE_NAME $FACTORY_METHOD_NAME($PARAMETERS) => ' | 647 ' static $INTERFACE_NAME $FACTORY_METHOD_NAME($PARAMETERS) => ' |
648 '$TOPLEVEL_NAME($OUTPARAMETERS);\n', | 648 'wrap_jso($TOPLEVEL_NAME($OUTPARAMETERS));\n', |
649 INTERFACE_NAME=self._interface_type_info.interface_name(), | 649 INTERFACE_NAME=self._interface_type_info.interface_name(), |
650 FACTORY_METHOD_NAME=factory_method_name, | 650 FACTORY_METHOD_NAME=factory_method_name, |
651 PARAMETERS=typed_formals, | 651 PARAMETERS=typed_formals, |
652 TOPLEVEL_NAME=toplevel_name, | 652 TOPLEVEL_NAME=toplevel_name, |
653 OUTPARAMETERS=parameters) | 653 OUTPARAMETERS=parameters) |
654 | 654 |
655 self._cpp_resolver_emitter.Emit( | 655 self._cpp_resolver_emitter.Emit( |
656 ' if (name == "$ID")\n' | 656 ' if (name == "$ID")\n' |
657 ' return Dart$(WEBKIT_INTERFACE_NAME)Internal::$CPP_CALLBACK;\n', | 657 ' return Dart$(WEBKIT_INTERFACE_NAME)Internal::$CPP_CALLBACK;\n', |
658 ID=constructor_callback_id, | 658 ID=constructor_callback_id, |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
907 | 907 |
908 def _GenerateAutoSetupScope(self, idl_name, native_suffix): | 908 def _GenerateAutoSetupScope(self, idl_name, native_suffix): |
909 return (self._interface.id, idl_name, native_suffix) not in _cpp_no_auto_sco
pe_list | 909 return (self._interface.id, idl_name, native_suffix) not in _cpp_no_auto_sco
pe_list |
910 | 910 |
911 def _AddGetter(self, attr, html_name, read_only): | 911 def _AddGetter(self, attr, html_name, read_only): |
912 # Temporary hack to force dart:scalarlist clamped array for ImageData.data. | 912 # Temporary hack to force dart:scalarlist clamped array for ImageData.data. |
913 # TODO(antonm): solve in principled way. | 913 # TODO(antonm): solve in principled way. |
914 if self._interface.id == 'ImageData' and html_name == 'data': | 914 if self._interface.id == 'ImageData' and html_name == 'data': |
915 html_name = '_data' | 915 html_name = '_data' |
916 type_info = self._TypeInfo(attr.type.id) | 916 type_info = self._TypeInfo(attr.type.id) |
917 return_type = self.SecureOutputType(attr.type.id, False, read_only) | 917 return_type = self.SecureOutputType(attr.type.id, False, False if self._dart
_use_blink else True) |
918 parameters = [] | 918 parameters = [] |
919 dart_declaration = '%s get %s' % (return_type, html_name) | 919 dart_declaration = '%s get %s' % (return_type, html_name) |
920 is_custom = _IsCustom(attr) and (_IsCustomValue(attr, None) or | 920 is_custom = _IsCustom(attr) and (_IsCustomValue(attr, None) or |
921 _IsCustomValue(attr, 'Getter')) | 921 _IsCustomValue(attr, 'Getter')) |
922 | 922 |
923 # Operation uses blink? | 923 # Operation uses blink? |
924 wrap_unwrap_list = []; | 924 wrap_unwrap_list = []; |
925 return_wrap_jso = False | 925 return_wrap_jso = False |
926 if self._dart_use_blink: | 926 if self._dart_use_blink: |
927 # Unwrap the type to get the JsObject if Type is: | 927 # Unwrap the type to get the JsObject if Type is: |
928 # | 928 # |
929 # - known IDL type | 929 # - known IDL type |
930 # - type_id is None then it's probably a union type or overloaded | 930 # - type_id is None then it's probably a union type or overloaded |
931 # it's a dynamic/any type | 931 # it's a dynamic/any type |
932 # - type is Object | 932 # - type is Object |
933 # | 933 # |
934 # JsObject maybe stored in the Dart class. | 934 # JsObject maybe stored in the Dart class. |
935 return_wrap_jso = (isinstance(type_info, InterfaceIDLTypeInfo) or | 935 return_wrap_jso = wrap_return_type_blink(return_type, attr.type.id, self
._type_registry) |
936 not(type_info) or attr.type.id == 'Object') | |
937 wrap_unwrap_list.append(return_wrap_jso) # wrap_jso the returned objec
t | 936 wrap_unwrap_list.append(return_wrap_jso) # wrap_jso the returned objec
t |
938 wrap_unwrap_list.append(self._dart_use_blink) # this must be unwrap_jso | 937 wrap_unwrap_list.append(self._dart_use_blink) # this must be unwrap_jso |
939 | 938 |
940 # This seems to have been replaced with Custom=Getter (see above), but | 939 # This seems to have been replaced with Custom=Getter (see above), but |
941 # check to be sure we don't see the old syntax | 940 # check to be sure we don't see the old syntax |
942 assert(not ('CustomGetter' in attr.ext_attrs)) | 941 assert(not ('CustomGetter' in attr.ext_attrs)) |
943 native_suffix = 'Getter' | 942 native_suffix = 'Getter' |
944 auto_scope_setup = self._GenerateAutoSetupScope(attr.id, native_suffix) | 943 auto_scope_setup = self._GenerateAutoSetupScope(attr.id, native_suffix) |
945 native_entry = \ | 944 native_entry = \ |
946 self.DeriveNativeEntry(attr.id, 'Getter', None) | 945 self.DeriveNativeEntry(attr.id, 'Getter', None) |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
989 ptype = self._DartType(attr.type.id) | 988 ptype = self._DartType(attr.type.id) |
990 | 989 |
991 type_info = self._TypeInfo(attr.type.id) | 990 type_info = self._TypeInfo(attr.type.id) |
992 | 991 |
993 # Is the setter value a DartClass (that has a JsObject) or the type is | 992 # Is the setter value a DartClass (that has a JsObject) or the type is |
994 # None (it's a dynamic/any type) then unwrap_jso before passing to blink. | 993 # None (it's a dynamic/any type) then unwrap_jso before passing to blink. |
995 parameters = ['unwrap_jso(value)' if (isinstance(type_info, InterfaceIDLType
Info) or | 994 parameters = ['unwrap_jso(value)' if (isinstance(type_info, InterfaceIDLType
Info) or |
996 not(attr.type.id) or ptype == 'Object'
) | 995 not(attr.type.id) or ptype == 'Object'
) |
997 else 'value'] | 996 else 'value'] |
998 | 997 |
999 dart_declaration = 'void set %s(%s value)' % (html_name, ptype) | 998 dart_declaration = 'set %s(%s value)' % (html_name, ptype) |
1000 is_custom = _IsCustom(attr) and (_IsCustomValue(attr, None) or | 999 is_custom = _IsCustom(attr) and (_IsCustomValue(attr, None) or |
1001 _IsCustomValue(attr, 'Setter')) | 1000 _IsCustomValue(attr, 'Setter')) |
1002 # This seems to have been replaced with Custom=Setter (see above), but | 1001 # This seems to have been replaced with Custom=Setter (see above), but |
1003 # check to be sure we don't see the old syntax | 1002 # check to be sure we don't see the old syntax |
1004 assert(not ('CustomSetter' in attr.ext_attrs)) | 1003 assert(not ('CustomSetter' in attr.ext_attrs)) |
1005 assert(not ('V8CustomSetter' in attr.ext_attrs)) | 1004 assert(not ('V8CustomSetter' in attr.ext_attrs)) |
1006 native_suffix = 'Setter' | 1005 native_suffix = 'Setter' |
1007 auto_scope_setup = self._GenerateAutoSetupScope(attr.id, native_suffix) | 1006 auto_scope_setup = self._GenerateAutoSetupScope(attr.id, native_suffix) |
1008 native_entry = \ | 1007 native_entry = \ |
1009 self.DeriveNativeEntry(attr.id, 'Setter', None) | 1008 self.DeriveNativeEntry(attr.id, 'Setter', None) |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1079 # Emit the method which calls the toplevel function, along with | 1078 # Emit the method which calls the toplevel function, along with |
1080 # the [] operator. | 1079 # the [] operator. |
1081 dart_qualified_name = \ | 1080 dart_qualified_name = \ |
1082 self.DeriveQualifiedBlinkName(self._interface.id, | 1081 self.DeriveQualifiedBlinkName(self._interface.id, |
1083 dart_native_name) | 1082 dart_native_name) |
1084 | 1083 |
1085 type_info = self._TypeInfo(element_type) | 1084 type_info = self._TypeInfo(element_type) |
1086 # Does nativeIndexGetter return a DartClass (JsObject) if so wrap_jso. | 1085 # Does nativeIndexGetter return a DartClass (JsObject) if so wrap_jso. |
1087 wrap_jso_start = '' | 1086 wrap_jso_start = '' |
1088 wrap_jso_end = '' | 1087 wrap_jso_end = '' |
1089 if isinstance(type_info, InterfaceIDLTypeInfo): | 1088 if (isinstance(type_info, InterfaceIDLTypeInfo) or |
| 1089 wrap_type_blink(type_info.narrow_dart_type(), self._type_registry)): |
1090 wrap_jso_start = 'wrap_jso(' | 1090 wrap_jso_start = 'wrap_jso(' |
1091 wrap_jso_end = ')' | 1091 wrap_jso_end = ')' |
1092 blinkNativeIndexed = """ | 1092 blinkNativeIndexed = """ |
1093 $TYPE operator[](int index) { | 1093 $TYPE operator[](int index) { |
1094 if (index < 0 || index >= length) | 1094 if (index < 0 || index >= length) |
1095 throw new RangeError.index(index, this); | 1095 throw new RangeError.index(index, this); |
1096 return %s$(DART_NATIVE_NAME)(unwrap_jso(this), index)%s; | 1096 return %s$(DART_NATIVE_NAME)(unwrap_jso(this), index)%s; |
1097 } | 1097 } |
1098 | 1098 |
1099 $TYPE _nativeIndexedGetter(int index) => %s$(DART_NATIVE_NAME)(unwrap_jso(this
), index)%s; | 1099 $TYPE _nativeIndexedGetter(int index) => %s$(DART_NATIVE_NAME)(unwrap_jso(this
), index)%s; |
1100 """ % (wrap_jso_start, wrap_jso_end, wrap_jso_start, wrap_jso_end) | 1100 """ % (wrap_jso_start, wrap_jso_end, wrap_jso_start, wrap_jso_end) |
1101 # Wrap the type to store the JsObject if Type is: | 1101 # Wrap the type to store the JsObject if Type is: |
1102 # | 1102 # |
1103 # - known IDL type | 1103 # - known IDL type |
1104 # - type_id is None then it's probably a union type or overloaded | 1104 # - type_id is None then it's probably a union type or overloaded |
1105 # it's a dynamic/any type | 1105 # it's a dynamic/any type |
1106 # - type is Object | 1106 # - type is Object |
1107 # | 1107 # |
1108 # JsObject maybe stored in the Dart class. | 1108 # JsObject maybe stored in the Dart class. |
1109 if isinstance(type_info, InterfaceIDLTypeInfo) or not(type_info) or dart_e
lement_type == 'Object': | 1109 if isinstance(type_info, InterfaceIDLTypeInfo) or not(type_info) or dart_e
lement_type == 'Object': |
1110 blinkNativeIndexedGetter = \ | 1110 blinkNativeIndexedGetter = \ |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1182 dart_declaration = 'void operator[]=(%s)' % formals | 1182 dart_declaration = 'void operator[]=(%s)' % formals |
1183 self._GenerateNativeBinding('numericIndexSetter', 3, | 1183 self._GenerateNativeBinding('numericIndexSetter', 3, |
1184 dart_declaration, False, return_type, parameters, | 1184 dart_declaration, False, return_type, parameters, |
1185 'Callback', True, False) | 1185 'Callback', True, False) |
1186 | 1186 |
1187 def EmitOperation(self, info, html_name, dart_js_interop=False): | 1187 def EmitOperation(self, info, html_name, dart_js_interop=False): |
1188 """ | 1188 """ |
1189 Arguments: | 1189 Arguments: |
1190 info: An OperationInfo object. | 1190 info: An OperationInfo object. |
1191 """ | 1191 """ |
1192 return_type = self.SecureOutputType(info.type_name, False, True) | 1192 return_type = self.SecureOutputType(info.type_name, False, False if dart_js_
interop else True) |
1193 | 1193 |
1194 formals = info.ParametersAsDeclaration(self._DartType) | 1194 formals = info.ParametersAsDeclaration(self._DartType) |
1195 | 1195 |
1196 parameters = info.ParametersAsListOfVariables(None, self._type_registry if s
elf._dart_use_blink else None, dart_js_interop) | 1196 parameters = info.ParametersAsListOfVariables(None, |
| 1197 self._type_registry if self._d
art_use_blink else None, |
| 1198 dart_js_interop) |
1197 dart_declaration = '%s%s %s(%s)' % ( | 1199 dart_declaration = '%s%s %s(%s)' % ( |
1198 'static ' if info.IsStatic() else '', | 1200 'static ' if info.IsStatic() else '', |
1199 return_type, | 1201 return_type, |
1200 html_name, | 1202 html_name, |
1201 formals) | 1203 formals) |
1202 | 1204 |
1203 operation = info.operations[0] | 1205 operation = info.operations[0] |
1204 | 1206 |
1205 is_custom = _IsCustom(operation) | 1207 is_custom = _IsCustom(operation) |
1206 has_optional_arguments = any(IsOptional(argument) for argument in operation.
arguments) | 1208 has_optional_arguments = any(IsOptional(argument) for argument in operation.
arguments) |
1207 needs_dispatcher = not is_custom and (len(info.operations) > 1 or has_option
al_arguments) | 1209 needs_dispatcher = not is_custom and (len(info.operations) > 1 or has_option
al_arguments) |
1208 | 1210 |
1209 # Operation uses blink? | 1211 # Operation uses blink? |
1210 wrap_unwrap_list = []; | 1212 wrap_unwrap_list = []; |
1211 return_wrap_jso = False | 1213 return_wrap_jso = False |
1212 # return type wrapped? | 1214 # return type wrapped? |
1213 if self._dart_use_blink: | 1215 if self._dart_use_blink: |
1214 # Wrap the type to store the JsObject if Type is: | 1216 # Wrap the type to store the JsObject if Type is: |
1215 # | 1217 # |
1216 # - known IDL type | 1218 # - known IDL type |
1217 # - type_id is None then it's probably a union type or overloaded | 1219 # - type_id is None then it's probably a union type or overloaded |
1218 # it's a dynamic/any type | 1220 # it's a dynamic/any type |
1219 # - type is Object | 1221 # - type is Object |
1220 # | 1222 # |
1221 # JsObject maybe stored in the Dart class. | 1223 # JsObject maybe stored in the Dart class. |
1222 return_wrap_jso = (info.wrap_unwrap_type_blink(return_type, self._type_r
egistry) or | 1224 return_wrap_jso = wrap_return_type_blink(return_type, info.type_name, se
lf._type_registry) |
1223 return_type == 'Rectangle' or | 1225 return_type_info = self._type_registry.TypeInfo(info.type_name) |
1224 info.wrap_unwrap_list_blink(return_type, self._type_r
egistry)) | 1226 if (isinstance(return_type_info, SequenceIDLTypeInfo) and |
1225 wrap_unwrap_list.append(return_wrap_jso) # wrap_jso the returned objec
t | 1227 not isinstance(return_type_info._item_info, PrimitiveIDLTypeInfo)): |
1226 wrap_unwrap_list.append(self._dart_use_blink) # The 'this' parameter must b
e unwrap_jso | 1228 return_wrap_jso = True |
| 1229 # wrap_jso the returned object |
| 1230 wrap_unwrap_list.append(return_wrap_jso) |
| 1231 # The 'this' parameter must be unwrap_jso |
| 1232 wrap_unwrap_list.append(self._dart_use_blink) |
1227 | 1233 |
1228 if info.callback_args: | 1234 if info.callback_args: |
1229 self._AddFutureifiedOperation(info, html_name) | 1235 self._AddFutureifiedOperation(info, html_name) |
1230 elif not needs_dispatcher: | 1236 elif not needs_dispatcher: |
1231 # Bind directly to native implementation | 1237 # Bind directly to native implementation |
1232 argument_count = (0 if info.IsStatic() else 1) + len(info.param_infos) | 1238 argument_count = (0 if info.IsStatic() else 1) + len(info.param_infos) |
1233 native_suffix = 'Callback' | 1239 native_suffix = 'Callback' |
1234 auto_scope_setup = self._GenerateAutoSetupScope(info.name, native_suffix) | 1240 auto_scope_setup = self._GenerateAutoSetupScope(info.name, native_suffix) |
1235 native_entry = \ | 1241 native_entry = \ |
1236 self.DeriveNativeEntry(operation.id, 'Method', len(info.param_infos)) | 1242 self.DeriveNativeEntry(operation.id, 'Method', len(info.param_infos)) |
(...skipping 15 matching lines...) Expand all Loading... |
1252 native_suffix = 'Callback' | 1258 native_suffix = 'Callback' |
1253 actuals = info.ParametersAsListOfVariables(argument_count, | 1259 actuals = info.ParametersAsListOfVariables(argument_count, |
1254 self._type_registry if self._da
rt_use_blink else None, | 1260 self._type_registry if self._da
rt_use_blink else None, |
1255 self._dart_js_interop) | 1261 self._dart_js_interop) |
1256 actuals_s = ", ".join(actuals) | 1262 actuals_s = ", ".join(actuals) |
1257 formals=actuals | 1263 formals=actuals |
1258 return_type = self.SecureOutputType(operation.type.id) | 1264 return_type = self.SecureOutputType(operation.type.id) |
1259 | 1265 |
1260 return_wrap_jso = False | 1266 return_wrap_jso = False |
1261 if self._dart_use_blink: | 1267 if self._dart_use_blink: |
1262 return_wrap_jso = self._type_registry.HasInterface(return_type) | 1268 return_wrap_jso = wrap_return_type_blink(return_type, info.type_name,
self._type_registry) |
1263 | 1269 |
1264 native_suffix = 'Callback' | 1270 native_suffix = 'Callback' |
1265 is_custom = _IsCustom(operation) | 1271 is_custom = _IsCustom(operation) |
1266 base_name = '_%s_%s' % (operation.id, version) | 1272 base_name = '_%s_%s' % (operation.id, version) |
1267 static = True | 1273 static = True |
1268 if not operation.is_static: | 1274 if not operation.is_static: |
1269 actuals = ['unwrap_jso(this)' if self._dart_use_blink else 'this'] + act
uals | 1275 actuals = ['unwrap_jso(this)' if self._dart_use_blink else 'this'] + act
uals |
1270 formals = ['mthis'] + formals | 1276 formals = ['mthis'] + formals |
1271 actuals_s = ", ".join(actuals) | 1277 actuals_s = ", ".join(actuals) |
1272 formals_s = ", ".join(formals) | 1278 formals_s = ", ".join(formals) |
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1735 else: | 1741 else: |
1736 emit_template = ''' | 1742 emit_template = ''' |
1737 $METADATA$DART_DECLARATION => $DART_NAME($ACTUALS); | 1743 $METADATA$DART_DECLARATION => $DART_NAME($ACTUALS); |
1738 ''' | 1744 ''' |
1739 if wrap_unwrap_list and wrap_unwrap_list[0]: | 1745 if wrap_unwrap_list and wrap_unwrap_list[0]: |
1740 emit_jso_template = ''' | 1746 emit_jso_template = ''' |
1741 $METADATA$DART_DECLARATION => %s($DART_NAME($ACTUALS)); | 1747 $METADATA$DART_DECLARATION => %s($DART_NAME($ACTUALS)); |
1742 ''' | 1748 ''' |
1743 if return_type == 'Rectangle': | 1749 if return_type == 'Rectangle': |
1744 jso_util_method = 'make_dart_rectangle' | 1750 jso_util_method = 'make_dart_rectangle' |
1745 # TODO(terry): More checks that the return is a List<Node>. | 1751 elif wrap_unwrap_list[0]: |
1746 elif return_type.startswith('List<'): | |
1747 jso_util_method = 'wrap_jso_list' | |
1748 else: | |
1749 jso_util_method = 'wrap_jso' | 1752 jso_util_method = 'wrap_jso' |
| 1753 |
1750 # Always return List<String> unwrapped. | 1754 # Always return List<String> unwrapped. |
1751 if return_type != 'List<String>': | 1755 if return_type != 'List<String>': |
1752 emit_template = emit_jso_template % jso_util_method | 1756 emit_template = emit_jso_template % jso_util_method |
1753 caller_emitter.Emit(emit_template, | 1757 |
1754 METADATA=metadata, | 1758 if caller_emitter: |
1755 DART_DECLARATION=dart_declaration, | 1759 caller_emitter.Emit(emit_template, |
1756 DART_NAME=full_dart_name, | 1760 METADATA=metadata, |
1757 ACTUALS=actuals) | 1761 DART_DECLARATION=dart_declaration, |
| 1762 DART_NAME=full_dart_name, |
| 1763 ACTUALS=actuals) |
1758 cpp_callback_name = '%s%s' % (idl_name, native_suffix) | 1764 cpp_callback_name = '%s%s' % (idl_name, native_suffix) |
1759 | 1765 |
1760 self._cpp_resolver_emitter.Emit( | 1766 self._cpp_resolver_emitter.Emit( |
1761 ' if (argumentCount == $ARGC && name == "$NATIVE_BINDING") {\n' | 1767 ' if (argumentCount == $ARGC && name == "$NATIVE_BINDING") {\n' |
1762 ' *autoSetupScope = $AUTO_SCOPE_SETUP;\n' | 1768 ' *autoSetupScope = $AUTO_SCOPE_SETUP;\n' |
1763 ' return Dart$(INTERFACE_NAME)Internal::$CPP_CALLBACK_NAME;\n' | 1769 ' return Dart$(INTERFACE_NAME)Internal::$CPP_CALLBACK_NAME;\n' |
1764 ' }\n', | 1770 ' }\n', |
1765 ARGC=argument_count, | 1771 ARGC=argument_count, |
1766 NATIVE_BINDING=native_binding, | 1772 NATIVE_BINDING=native_binding, |
1767 INTERFACE_NAME=self._interface.id, | 1773 INTERFACE_NAME=self._interface.id, |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2026 | 2032 |
2027 def _IsCustom(op_or_attr): | 2033 def _IsCustom(op_or_attr): |
2028 assert(isinstance(op_or_attr, IDLMember)) | 2034 assert(isinstance(op_or_attr, IDLMember)) |
2029 return 'Custom' in op_or_attr.ext_attrs or 'DartCustom' in op_or_attr.ext_attr
s | 2035 return 'Custom' in op_or_attr.ext_attrs or 'DartCustom' in op_or_attr.ext_attr
s |
2030 | 2036 |
2031 def _IsCustomValue(op_or_attr, value): | 2037 def _IsCustomValue(op_or_attr, value): |
2032 if _IsCustom(op_or_attr): | 2038 if _IsCustom(op_or_attr): |
2033 return op_or_attr.ext_attrs.get('Custom') == value \ | 2039 return op_or_attr.ext_attrs.get('Custom') == value \ |
2034 or op_or_attr.ext_attrs.get('DartCustom') == value | 2040 or op_or_attr.ext_attrs.get('DartCustom') == value |
2035 return False | 2041 return False |
OLD | NEW |