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 systems to generate | 6 """This module provides shared functionality for systems to generate |
7 Dart APIs from the IDL database.""" | 7 Dart APIs from the IDL database.""" |
8 | 8 |
9 import copy | 9 import copy |
10 import re | 10 import re |
(...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
806 | 806 |
807 def native_type(self): | 807 def native_type(self): |
808 return self._data.native_type or self._idl_type | 808 return self._data.native_type or self._idl_type |
809 | 809 |
810 def bindings_class(self): | 810 def bindings_class(self): |
811 return 'Dart%s' % self.idl_type() | 811 return 'Dart%s' % self.idl_type() |
812 | 812 |
813 def vector_to_dart_template_parameter(self): | 813 def vector_to_dart_template_parameter(self): |
814 return self.bindings_class() | 814 return self.bindings_class() |
815 | 815 |
816 def requires_v8_scope(self): | |
817 return self._data.requires_v8_scope | |
818 | |
819 def to_native_info(self, idl_node, interface_name): | 816 def to_native_info(self, idl_node, interface_name): |
820 cls = self.bindings_class() | 817 cls = self.bindings_class() |
821 | 818 |
822 if 'Callback' in idl_node.ext_attrs: | 819 if 'Callback' in idl_node.ext_attrs: |
823 return '%s', 'RefPtr<%s>' % self.native_type(), cls, 'create' | 820 return '%s', 'RefPtr<%s>' % self.native_type(), cls, 'create' |
824 | 821 |
825 if self.custom_to_native(): | 822 if self.custom_to_native(): |
826 type = 'RefPtr<%s>' % self.native_type() | 823 type = 'RefPtr<%s>' % self.native_type() |
827 argument_expression_template = '%s.get()' | 824 argument_expression_template = '%s.get()' |
828 else: | 825 else: |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1077 return name if interface_name.endswith('List') else '%s->propertyReference()
' % name | 1074 return name if interface_name.endswith('List') else '%s->propertyReference()
' % name |
1078 | 1075 |
1079 | 1076 |
1080 class TypeData(object): | 1077 class TypeData(object): |
1081 def __init__(self, clazz, dart_type=None, native_type=None, | 1078 def __init__(self, clazz, dart_type=None, native_type=None, |
1082 merged_interface=None, merged_into=None, | 1079 merged_interface=None, merged_into=None, |
1083 custom_to_dart=None, custom_to_native=None, | 1080 custom_to_dart=None, custom_to_native=None, |
1084 conversion_includes=None, | 1081 conversion_includes=None, |
1085 webcore_getter_name='getAttribute', | 1082 webcore_getter_name='getAttribute', |
1086 webcore_setter_name='setAttribute', | 1083 webcore_setter_name='setAttribute', |
1087 requires_v8_scope=False, | |
1088 item_type=None, suppress_interface=False, is_typed_array=False): | 1084 item_type=None, suppress_interface=False, is_typed_array=False): |
1089 self.clazz = clazz | 1085 self.clazz = clazz |
1090 self.dart_type = dart_type | 1086 self.dart_type = dart_type |
1091 self.native_type = native_type | 1087 self.native_type = native_type |
1092 self.merged_interface = merged_interface | 1088 self.merged_interface = merged_interface |
1093 self.merged_into = merged_into | 1089 self.merged_into = merged_into |
1094 self.custom_to_dart = custom_to_dart | 1090 self.custom_to_dart = custom_to_dart |
1095 self.custom_to_native = custom_to_native | 1091 self.custom_to_native = custom_to_native |
1096 self.conversion_includes = conversion_includes | 1092 self.conversion_includes = conversion_includes |
1097 self.webcore_getter_name = webcore_getter_name | 1093 self.webcore_getter_name = webcore_getter_name |
1098 self.webcore_setter_name = webcore_setter_name | 1094 self.webcore_setter_name = webcore_setter_name |
1099 self.requires_v8_scope = requires_v8_scope | |
1100 self.item_type = item_type | 1095 self.item_type = item_type |
1101 self.suppress_interface = suppress_interface | 1096 self.suppress_interface = suppress_interface |
1102 self.is_typed_array = is_typed_array | 1097 self.is_typed_array = is_typed_array |
1103 | 1098 |
1104 | 1099 |
1105 def TypedArrayTypeData(item_type): | 1100 def TypedArrayTypeData(item_type): |
1106 return TypeData(clazz='Interface', item_type=item_type, is_typed_array=True) | 1101 return TypeData(clazz='Interface', item_type=item_type, is_typed_array=True) |
1107 | 1102 |
1108 | 1103 |
1109 _idl_type_registry = { | 1104 _idl_type_registry = { |
(...skipping 13 matching lines...) Expand all Loading... |
1123 webcore_setter_name='setIntegralAttribute'), | 1118 webcore_setter_name='setIntegralAttribute'), |
1124 'unsigned long': TypeData(clazz='Primitive', dart_type='int', | 1119 'unsigned long': TypeData(clazz='Primitive', dart_type='int', |
1125 native_type='unsigned', | 1120 native_type='unsigned', |
1126 webcore_getter_name='getUnsignedIntegralAttribute'
, | 1121 webcore_getter_name='getUnsignedIntegralAttribute'
, |
1127 webcore_setter_name='setUnsignedIntegralAttribute'
), | 1122 webcore_setter_name='setUnsignedIntegralAttribute'
), |
1128 'long long': TypeData(clazz='Primitive', dart_type='int'), | 1123 'long long': TypeData(clazz='Primitive', dart_type='int'), |
1129 'unsigned long long': TypeData(clazz='Primitive', dart_type='int'), | 1124 'unsigned long long': TypeData(clazz='Primitive', dart_type='int'), |
1130 'float': TypeData(clazz='Primitive', dart_type='num', native_type='double'), | 1125 'float': TypeData(clazz='Primitive', dart_type='num', native_type='double'), |
1131 'double': TypeData(clazz='Primitive', dart_type='num'), | 1126 'double': TypeData(clazz='Primitive', dart_type='num'), |
1132 | 1127 |
1133 'any': TypeData(clazz='Primitive', dart_type='Object', native_type='ScriptVa
lue', requires_v8_scope=True), | 1128 'any': TypeData(clazz='Primitive', dart_type='Object', native_type='ScriptVa
lue'), |
1134 'Array': TypeData(clazz='Primitive', dart_type='List'), | 1129 'Array': TypeData(clazz='Primitive', dart_type='List'), |
1135 'custom': TypeData(clazz='Primitive', dart_type='dynamic'), | 1130 'custom': TypeData(clazz='Primitive', dart_type='dynamic'), |
1136 'Date': TypeData(clazz='Primitive', dart_type='Date', native_type='double'), | 1131 'Date': TypeData(clazz='Primitive', dart_type='Date', native_type='double'), |
1137 'DOMObject': TypeData(clazz='Primitive', dart_type='Object', native_type='Sc
riptValue'), | 1132 'DOMObject': TypeData(clazz='Primitive', dart_type='Object', native_type='Sc
riptValue'), |
1138 'DOMString': TypeData(clazz='Primitive', dart_type='String', native_type='St
ring'), | 1133 'DOMString': TypeData(clazz='Primitive', dart_type='String', native_type='St
ring'), |
1139 # TODO(vsm): This won't actually work until we convert the Map to | 1134 # TODO(vsm): This won't actually work until we convert the Map to |
1140 # a native JS Map for JS DOM. | 1135 # a native JS Map for JS DOM. |
1141 'Dictionary': TypeData(clazz='Primitive', dart_type='Map', requires_v8_scope
=True), | 1136 'Dictionary': TypeData(clazz='Primitive', dart_type='Map'), |
1142 # TODO(sra): Flags is really a dictionary: {create:bool, exclusive:bool} | 1137 # TODO(sra): Flags is really a dictionary: {create:bool, exclusive:bool} |
1143 # http://dev.w3.org/2009/dap/file-system/file-dir-sys.html#the-flags-interfa
ce | 1138 # http://dev.w3.org/2009/dap/file-system/file-dir-sys.html#the-flags-interfa
ce |
1144 'Flags': TypeData(clazz='Primitive', dart_type='Object'), | 1139 'Flags': TypeData(clazz='Primitive', dart_type='Object'), |
1145 'DOMTimeStamp': TypeData(clazz='Primitive', dart_type='int', native_type='un
signed long long'), | 1140 'DOMTimeStamp': TypeData(clazz='Primitive', dart_type='int', native_type='un
signed long long'), |
1146 'object': TypeData(clazz='Primitive', dart_type='Object', native_type='Scrip
tValue'), | 1141 'object': TypeData(clazz='Primitive', dart_type='Object', native_type='Scrip
tValue'), |
1147 'ObjectArray': TypeData(clazz='Primitive', dart_type='List'), | 1142 'ObjectArray': TypeData(clazz='Primitive', dart_type='List'), |
1148 'PositionOptions': TypeData(clazz='Primitive', dart_type='Object'), | 1143 'PositionOptions': TypeData(clazz='Primitive', dart_type='Object'), |
1149 # TODO(sra): Come up with some meaningful name so that where this appears in | 1144 # TODO(sra): Come up with some meaningful name so that where this appears in |
1150 # the documentation, the user is made aware that only a limited subset of | 1145 # the documentation, the user is made aware that only a limited subset of |
1151 # serializable types are actually permitted. | 1146 # serializable types are actually permitted. |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1298 self) | 1293 self) |
1299 | 1294 |
1300 if type_data.clazz == 'SVGTearOff': | 1295 if type_data.clazz == 'SVGTearOff': |
1301 dart_interface_name = self._renamer.RenameInterface( | 1296 dart_interface_name = self._renamer.RenameInterface( |
1302 self._database.GetInterface(type_name)) | 1297 self._database.GetInterface(type_name)) |
1303 return SVGTearOffIDLTypeInfo( | 1298 return SVGTearOffIDLTypeInfo( |
1304 type_name, type_data, dart_interface_name, self) | 1299 type_name, type_data, dart_interface_name, self) |
1305 | 1300 |
1306 class_name = '%sIDLTypeInfo' % type_data.clazz | 1301 class_name = '%sIDLTypeInfo' % type_data.clazz |
1307 return globals()[class_name](type_name, type_data) | 1302 return globals()[class_name](type_name, type_data) |
OLD | NEW |