| OLD | NEW |
| 1 # Copyright (C) 2013 Google Inc. All rights reserved. | 1 # Copyright (C) 2013 Google Inc. All rights reserved. |
| 2 # | 2 # |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
| (...skipping 819 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 830 'idl_type_object': argument.idl_type, | 830 'idl_type_object': argument.idl_type, |
| 831 'preprocessed_type': argument.idl_type.preprocessed_type, | 831 'preprocessed_type': argument.idl_type.preprocessed_type, |
| 832 } | 832 } |
| 833 | 833 |
| 834 | 834 |
| 835 # [Constructor] | 835 # [Constructor] |
| 836 def generate_constructor(interface, constructor): | 836 def generate_constructor(interface, constructor): |
| 837 return { | 837 return { |
| 838 'argument_list': constructor_argument_list(interface, constructor), | 838 'argument_list': constructor_argument_list(interface, constructor), |
| 839 # TODO(terry): Use dart_methods.generate_argument instead constructor_ar
gument. | 839 # TODO(terry): Use dart_methods.generate_argument instead constructor_ar
gument. |
| 840 'arguments': [constructor_argument(argument, index) | 840 'arguments': [constructor_argument(interface, argument, index) |
| 841 for index, argument in enumerate(constructor.arguments)], | 841 for index, argument in enumerate(constructor.arguments)], |
| 842 'has_exception_state': | 842 'has_exception_state': |
| 843 # [RaisesException=Constructor] | 843 # [RaisesException=Constructor] |
| 844 interface.extended_attributes.get('RaisesException') == 'Constructor
' or | 844 interface.extended_attributes.get('RaisesException') == 'Constructor
' or |
| 845 any(argument for argument in constructor.arguments | 845 any(argument for argument in constructor.arguments |
| 846 if argument.idl_type.name == 'SerializedScriptValue' or | 846 if argument.idl_type.name == 'SerializedScriptValue' or |
| 847 argument.idl_type.is_integer_type), | 847 argument.idl_type.is_integer_type), |
| 848 'is_constructor': True, | 848 'is_constructor': True, |
| 849 'auto_scope': 'true', | 849 'auto_scope': 'true', |
| 850 'is_auto_scope': True, | 850 'is_auto_scope': True, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 878 | 878 |
| 879 # [RaisesException=Constructor] | 879 # [RaisesException=Constructor] |
| 880 if interface.extended_attributes.get('RaisesException') == 'Constructor': | 880 if interface.extended_attributes.get('RaisesException') == 'Constructor': |
| 881 arguments.append('es') | 881 arguments.append('es') |
| 882 | 882 |
| 883 return arguments | 883 return arguments |
| 884 | 884 |
| 885 | 885 |
| 886 # TODO(terry): Eliminate this function use dart_methods.generate_argument instea
d | 886 # TODO(terry): Eliminate this function use dart_methods.generate_argument instea
d |
| 887 # for all constructor arguments. | 887 # for all constructor arguments. |
| 888 def constructor_argument(argument, index): | 888 def constructor_argument(interface, argument, index): |
| 889 idl_type = argument.idl_type | 889 idl_type = argument.idl_type |
| 890 default_value = str(argument.default_value) if argument.default_value else N
one | 890 default_value = str(argument.default_value) if argument.default_value else N
one |
| 891 | 891 |
| 892 argument_content = { | 892 argument_content = { |
| 893 'cpp_type': idl_type.cpp_type_args(), | 893 'cpp_type': idl_type.cpp_type_args(), |
| 894 'local_cpp_type': idl_type.cpp_type_args(argument.extended_attributes, u
sed_as_argument=True), | 894 'local_cpp_type': idl_type.cpp_type_args(argument.extended_attributes, u
sed_as_argument=True), |
| 895 # FIXME: check that the default value's type is compatible with the argu
ment's | 895 # FIXME: check that the default value's type is compatible with the argu
ment's |
| 896 'default_value': default_value, | 896 'default_value': default_value, |
| 897 # FIXME: remove once [Default] removed and just use argument.default_val
ue | 897 # FIXME: remove once [Default] removed and just use argument.default_val
ue |
| 898 'has_default': 'Default' in argument.extended_attributes or default_valu
e, | 898 'has_default': 'Default' in argument.extended_attributes or default_valu
e, |
| 899 'idl_type_object': idl_type, | 899 'idl_type_object': idl_type, |
| 900 'preprocessed_type': idl_type.preprocessed_type, | 900 'preprocessed_type': idl_type.preprocessed_type, |
| 901 # Dictionary is special-cased, but arrays and sequences shouldn't be | 901 # Dictionary is special-cased, but arrays and sequences shouldn't be |
| 902 'idl_type': not idl_type.array_or_sequence_type and idl_type.base_type, | 902 'idl_type': not idl_type.array_or_sequence_type and idl_type.base_type, |
| 903 'index': index, | 903 'index': index, |
| 904 'is_array_or_sequence_type': not not idl_type.array_or_sequence_type, | 904 'is_array_or_sequence_type': not not idl_type.array_or_sequence_type, |
| 905 'is_optional': argument.is_optional, | 905 'is_optional': argument.is_optional, |
| 906 'is_strict_type_checking': False, # Required for overload resolution | 906 'is_strict_type_checking': False, # Required for overload resolution |
| 907 'name': argument.name, | 907 'name': argument.name, |
| 908 'dart_value_to_local_cpp_value': dart_methods.dart_value_to_local_cpp_va
lue(argument, index), | 908 'dart_value_to_local_cpp_value': dart_methods.dart_value_to_local_cpp_va
lue(interface, argument, index), |
| 909 } | 909 } |
| 910 return argument_content | 910 return argument_content |
| 911 | 911 |
| 912 | 912 |
| 913 def generate_constructor_overloads(constructors): | 913 def generate_constructor_overloads(constructors): |
| 914 if len(constructors) <= 1: | 914 if len(constructors) <= 1: |
| 915 return | 915 return |
| 916 for overload_index, constructor in enumerate(constructors): | 916 for overload_index, constructor in enumerate(constructors): |
| 917 constructor.update({ | 917 constructor.update({ |
| 918 'overload_index': overload_index + 1, | 918 'overload_index': overload_index + 1, |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 999 'is_null_expression': is_null_expression(idl_type), | 999 'is_null_expression': is_null_expression(idl_type), |
| 1000 'is_raises_exception': is_raises_exception, | 1000 'is_raises_exception': is_raises_exception, |
| 1001 'name': DartUtilities.cpp_name(getter), | 1001 'name': DartUtilities.cpp_name(getter), |
| 1002 'union_arguments': union_arguments, | 1002 'union_arguments': union_arguments, |
| 1003 'dart_set_return_value': idl_type.dart_set_return_value('result', | 1003 'dart_set_return_value': idl_type.dart_set_return_value('result', |
| 1004 extended_attribu
tes=extended_attributes, | 1004 extended_attribu
tes=extended_attributes, |
| 1005 script_wrappable
='receiver', | 1005 script_wrappable
='receiver', |
| 1006 release=idl_type
.release)} | 1006 release=idl_type
.release)} |
| 1007 | 1007 |
| 1008 | 1008 |
| 1009 def property_setter(setter): | 1009 def property_setter(interface, setter): |
| 1010 idl_type = setter.arguments[1].idl_type | 1010 idl_type = setter.arguments[1].idl_type |
| 1011 extended_attributes = setter.extended_attributes | 1011 extended_attributes = setter.extended_attributes |
| 1012 interface_extended_attributes = interface.extended_attributes |
| 1012 is_raises_exception = 'RaisesException' in extended_attributes | 1013 is_raises_exception = 'RaisesException' in extended_attributes |
| 1013 return { | 1014 return { |
| 1014 'has_strict_type_checking': | 1015 'has_strict_type_checking': |
| 1015 'StrictTypeChecking' in extended_attributes and | 1016 'StrictTypeChecking' in extended_attributes and |
| 1016 idl_type.is_wrapper_type, | 1017 idl_type.is_wrapper_type, |
| 1017 'idl_type': idl_type.base_type, | 1018 'idl_type': idl_type.base_type, |
| 1018 'is_custom': 'Custom' in extended_attributes, | 1019 'is_custom': 'Custom' in extended_attributes, |
| 1019 'has_exception_state': is_raises_exception or | 1020 'has_exception_state': is_raises_exception or |
| 1020 idl_type.is_integer_type, | 1021 idl_type.is_integer_type, |
| 1021 'is_raises_exception': is_raises_exception, | 1022 'is_raises_exception': is_raises_exception, |
| 1022 'name': DartUtilities.cpp_name(setter), | 1023 'name': DartUtilities.cpp_name(setter), |
| 1023 'dart_value_to_local_cpp_value': idl_type.dart_value_to_local_cpp_value( | 1024 'dart_value_to_local_cpp_value': idl_type.dart_value_to_local_cpp_value( |
| 1024 extended_attributes, 'propertyValue', False), | 1025 interface_extended_attributes, extended_attributes, 'propertyValue',
False), |
| 1025 } | 1026 } |
| 1026 | 1027 |
| 1027 | 1028 |
| 1028 def property_deleter(deleter): | 1029 def property_deleter(deleter): |
| 1029 idl_type = deleter.idl_type | 1030 idl_type = deleter.idl_type |
| 1030 if str(idl_type) != 'boolean': | 1031 if str(idl_type) != 'boolean': |
| 1031 raise Exception( | 1032 raise Exception( |
| 1032 'Only deleters with boolean type are allowed, but type is "%s"' % | 1033 'Only deleters with boolean type are allowed, but type is "%s"' % |
| 1033 idl_type) | 1034 idl_type) |
| 1034 extended_attributes = deleter.extended_attributes | 1035 extended_attributes = deleter.extended_attributes |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1068 # setter RETURN_TYPE [OPTIONAL_IDENTIFIER](unsigned long ARG1, ARG_TYPE
ARG2) | 1069 # setter RETURN_TYPE [OPTIONAL_IDENTIFIER](unsigned long ARG1, ARG_TYPE
ARG2) |
| 1069 setter = next( | 1070 setter = next( |
| 1070 method | 1071 method |
| 1071 for method in interface.operations | 1072 for method in interface.operations |
| 1072 if ('setter' in method.specials and | 1073 if ('setter' in method.specials and |
| 1073 len(method.arguments) == 2 and | 1074 len(method.arguments) == 2 and |
| 1074 str(method.arguments[0].idl_type) == 'unsigned long')) | 1075 str(method.arguments[0].idl_type) == 'unsigned long')) |
| 1075 except StopIteration: | 1076 except StopIteration: |
| 1076 return None | 1077 return None |
| 1077 | 1078 |
| 1078 return property_setter(setter) | 1079 return property_setter(interface, setter) |
| 1079 | 1080 |
| 1080 | 1081 |
| 1081 def indexed_property_deleter(interface): | 1082 def indexed_property_deleter(interface): |
| 1082 try: | 1083 try: |
| 1083 # Find indexed property deleter, if present; has form: | 1084 # Find indexed property deleter, if present; has form: |
| 1084 # deleter TYPE [OPTIONAL_IDENTIFIER](unsigned long ARG) | 1085 # deleter TYPE [OPTIONAL_IDENTIFIER](unsigned long ARG) |
| 1085 deleter = next( | 1086 deleter = next( |
| 1086 method | 1087 method |
| 1087 for method in interface.operations | 1088 for method in interface.operations |
| 1088 if ('deleter' in method.specials and | 1089 if ('deleter' in method.specials and |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1122 # setter RETURN_TYPE [OPTIONAL_IDENTIFIER](DOMString ARG1, ARG_TYPE ARG2
) | 1123 # setter RETURN_TYPE [OPTIONAL_IDENTIFIER](DOMString ARG1, ARG_TYPE ARG2
) |
| 1123 setter = next( | 1124 setter = next( |
| 1124 method | 1125 method |
| 1125 for method in interface.operations | 1126 for method in interface.operations |
| 1126 if ('setter' in method.specials and | 1127 if ('setter' in method.specials and |
| 1127 len(method.arguments) == 2 and | 1128 len(method.arguments) == 2 and |
| 1128 str(method.arguments[0].idl_type) == 'DOMString')) | 1129 str(method.arguments[0].idl_type) == 'DOMString')) |
| 1129 except StopIteration: | 1130 except StopIteration: |
| 1130 return None | 1131 return None |
| 1131 | 1132 |
| 1132 return property_setter(setter) | 1133 return property_setter(interface, setter) |
| 1133 | 1134 |
| 1134 | 1135 |
| 1135 def named_property_deleter(interface): | 1136 def named_property_deleter(interface): |
| 1136 try: | 1137 try: |
| 1137 # Find named property deleter, if present; has form: | 1138 # Find named property deleter, if present; has form: |
| 1138 # deleter TYPE [OPTIONAL_IDENTIFIER](DOMString ARG) | 1139 # deleter TYPE [OPTIONAL_IDENTIFIER](DOMString ARG) |
| 1139 deleter = next( | 1140 deleter = next( |
| 1140 method | 1141 method |
| 1141 for method in interface.operations | 1142 for method in interface.operations |
| 1142 if ('deleter' in method.specials and | 1143 if ('deleter' in method.specials and |
| 1143 len(method.arguments) == 1 and | 1144 len(method.arguments) == 1 and |
| 1144 str(method.arguments[0].idl_type) == 'DOMString')) | 1145 str(method.arguments[0].idl_type) == 'DOMString')) |
| 1145 except StopIteration: | 1146 except StopIteration: |
| 1146 return None | 1147 return None |
| 1147 | 1148 |
| 1148 return property_deleter(deleter) | 1149 return property_deleter(deleter) |
| OLD | NEW |