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 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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 _idl_to_dart_type_conversions.iteritems()) | 59 _idl_to_dart_type_conversions.iteritems()) |
60 | 60 |
61 | 61 |
62 # | 62 # |
63 # Identifiers that are used in the IDL than need to be treated specially because | 63 # Identifiers that are used in the IDL than need to be treated specially because |
64 # *some* JavaScript processors forbid them as properties. | 64 # *some* JavaScript processors forbid them as properties. |
65 # | 65 # |
66 _javascript_keywords = ['delete', 'continue'] | 66 _javascript_keywords = ['delete', 'continue'] |
67 | 67 |
68 # | 68 # |
69 # Types with user-invocable constructors. We do not have enough | |
70 # information in IDL to create the signature. | |
71 # | |
72 # Each entry is of the form: | |
73 # type name: constructor parameters | |
74 _constructable_types = { | |
75 'AudioContext': '', | |
76 'FileReader': '', | |
77 'XMLHttpRequest': '', | |
78 'WebKitCSSMatrix': '[String spec]', | |
79 'WebKitPoint': 'num x, num y', | |
80 'WebSocket': 'String url', | |
81 # dart:html types | |
82 'CSSMatrix': '[String spec]', | |
83 'Point': 'num x, num y', | |
84 } | |
85 | |
86 # | |
87 # Interface version of the DOM needs to delegate typed array constructors to a | 69 # Interface version of the DOM needs to delegate typed array constructors to a |
88 # factory provider. | 70 # factory provider. |
89 # | 71 # |
90 _interface_factories = { | 72 _interface_factories = { |
91 'Float32Array': '_TypedArrayFactoryProvider', | 73 'Float32Array': '_TypedArrayFactoryProvider', |
92 'Float64Array': '_TypedArrayFactoryProvider', | 74 'Float64Array': '_TypedArrayFactoryProvider', |
93 'Int8Array': '_TypedArrayFactoryProvider', | 75 'Int8Array': '_TypedArrayFactoryProvider', |
94 'Int16Array': '_TypedArrayFactoryProvider', | 76 'Int16Array': '_TypedArrayFactoryProvider', |
95 'Int32Array': '_TypedArrayFactoryProvider', | 77 'Int32Array': '_TypedArrayFactoryProvider', |
96 'Uint8Array': '_TypedArrayFactoryProvider', | 78 'Uint8Array': '_TypedArrayFactoryProvider', |
(...skipping 1828 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1925 self._members_emitter = self._dart_code.Emit( | 1907 self._members_emitter = self._dart_code.Emit( |
1926 self._template, | 1908 self._template, |
1927 #class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC { | 1909 #class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC { |
1928 #$!MEMBERS | 1910 #$!MEMBERS |
1929 #} | 1911 #} |
1930 CLASSNAME=self._class_name, | 1912 CLASSNAME=self._class_name, |
1931 EXTENDS=extends, | 1913 EXTENDS=extends, |
1932 IMPLEMENTS=' implements ' + ', '.join(implements), | 1914 IMPLEMENTS=' implements ' + ', '.join(implements), |
1933 NATIVESPEC=' native "' + native_spec + '"') | 1915 NATIVESPEC=' native "' + native_spec + '"') |
1934 | 1916 |
1935 if interface_name in _constructable_types: | |
1936 self._members_emitter.Emit( | |
1937 ' $NAME($PARAMS) native;\n\n', | |
1938 NAME=interface_name, | |
1939 PARAMS=_constructable_types[interface_name]) | |
1940 | |
1941 element_type = MaybeTypedArrayElementType(interface) | 1917 element_type = MaybeTypedArrayElementType(interface) |
1942 if element_type: | 1918 if element_type: |
1943 self.AddTypedArrayConstructors(element_type) | 1919 self.AddTypedArrayConstructors(element_type) |
1944 | 1920 |
1945 | 1921 |
1946 def FinishInterface(self): | 1922 def FinishInterface(self): |
1947 """.""" | 1923 """.""" |
1948 pass | 1924 pass |
1949 | 1925 |
1950 def _ImplClassName(self, type_name): | 1926 def _ImplClassName(self, type_name): |
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2314 INDENT=indent, | 2290 INDENT=indent, |
2315 NATIVENAME=native_name, | 2291 NATIVENAME=native_name, |
2316 ARGS=argument_expressions) | 2292 ARGS=argument_expressions) |
2317 | 2293 |
2318 self._members_emitter.Emit(' $TYPE $NATIVE_NAME($PARAMS) native ' | 2294 self._members_emitter.Emit(' $TYPE $NATIVE_NAME($PARAMS) native ' |
2319 '"$(INTERFACE)$(NATIVE_NAME)_Callback";\n', | 2295 '"$(INTERFACE)$(NATIVE_NAME)_Callback";\n', |
2320 NATIVE_NAME=native_name, | 2296 NATIVE_NAME=native_name, |
2321 TYPE=info.type_name, | 2297 TYPE=info.type_name, |
2322 PARAMS=', '.join(arg_names), | 2298 PARAMS=', '.join(arg_names), |
2323 INTERFACE=self._interface.id) | 2299 INTERFACE=self._interface.id) |
OLD | NEW |