| OLD | NEW |
| 1 # Copyright (C) 2013 Google Inc. All rights reserved. | 1 # Copyright (C) 2013 Google Inc. All rights reserved. |
| 2 # coding=utf-8 | 2 # coding=utf-8 |
| 3 # | 3 # |
| 4 # Redistribution and use in source and binary forms, with or without | 4 # Redistribution and use in source and binary forms, with or without |
| 5 # modification, are permitted provided that the following conditions are | 5 # modification, are permitted provided that the following conditions are |
| 6 # met: | 6 # met: |
| 7 # | 7 # |
| 8 # * Redistributions of source code must retain the above copyright | 8 # * Redistributions of source code must retain the above copyright |
| 9 # notice, this list of conditions and the following disclaimer. | 9 # notice, this list of conditions and the following disclaimer. |
| 10 # * Redistributions in binary form must reproduce the above | 10 # * Redistributions in binary form must reproduce the above |
| (...skipping 916 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 927 | 927 |
| 928 | 928 |
| 929 ################################################################################ | 929 ################################################################################ |
| 930 # Special operations (methods) | 930 # Special operations (methods) |
| 931 # http://heycam.github.io/webidl/#idl-special-operations | 931 # http://heycam.github.io/webidl/#idl-special-operations |
| 932 ################################################################################ | 932 ################################################################################ |
| 933 | 933 |
| 934 def property_getter(getter, cpp_arguments): | 934 def property_getter(getter, cpp_arguments): |
| 935 def is_null_expression(idl_type): | 935 def is_null_expression(idl_type): |
| 936 if idl_type.is_union_type: | 936 if idl_type.is_union_type: |
| 937 return ' && '.join('!result%sEnabled' % i | 937 notnull = ' || '.join([ |
| 938 for i, _ in enumerate(idl_type.member_types)) | 938 member_argument['null_check_value'] |
| 939 for member_argument in idl_type.union_arguments]) |
| 940 return '!(%s)' % notnull |
| 939 if idl_type.name == 'String': | 941 if idl_type.name == 'String': |
| 940 return 'result.isNull()' | 942 return 'result.isNull()' |
| 941 if idl_type.is_interface_type: | 943 if idl_type.is_interface_type: |
| 942 return '!result' | 944 return '!result' |
| 943 return '' | 945 return '' |
| 944 | 946 |
| 945 idl_type = getter.idl_type | 947 idl_type = getter.idl_type |
| 946 extended_attributes = getter.extended_attributes | 948 extended_attributes = getter.extended_attributes |
| 947 is_raises_exception = 'RaisesException' in extended_attributes | 949 is_raises_exception = 'RaisesException' in extended_attributes |
| 948 | 950 |
| 949 # FIXME: make more generic, so can use v8_methods.cpp_value | 951 # FIXME: make more generic, so can use v8_methods.cpp_value |
| 950 cpp_method_name = 'impl->%s' % cpp_name(getter) | 952 cpp_method_name = 'impl->%s' % cpp_name(getter) |
| 951 | 953 |
| 952 if is_raises_exception: | 954 if is_raises_exception: |
| 953 cpp_arguments.append('exceptionState') | 955 cpp_arguments.append('exceptionState') |
| 954 union_arguments = idl_type.union_arguments | 956 union_arguments = idl_type.union_arguments |
| 955 if union_arguments: | 957 if union_arguments: |
| 956 cpp_arguments.extend(union_arguments) | 958 cpp_arguments.extend([member_argument['cpp_value'] |
| 959 for member_argument in union_arguments]) |
| 957 | 960 |
| 958 cpp_value = '%s(%s)' % (cpp_method_name, ', '.join(cpp_arguments)) | 961 cpp_value = '%s(%s)' % (cpp_method_name, ', '.join(cpp_arguments)) |
| 959 | 962 |
| 960 return { | 963 return { |
| 961 'cpp_type': idl_type.cpp_type, | 964 'cpp_type': idl_type.cpp_type, |
| 962 'cpp_value': cpp_value, | 965 'cpp_value': cpp_value, |
| 963 'is_custom': | 966 'is_custom': |
| 964 'Custom' in extended_attributes and | 967 'Custom' in extended_attributes and |
| 965 (not extended_attributes['Custom'] or | 968 (not extended_attributes['Custom'] or |
| 966 has_extended_attribute_value(getter, 'Custom', 'PropertyGetter')), | 969 has_extended_attribute_value(getter, 'Custom', 'PropertyGetter')), |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1108 deleter = next( | 1111 deleter = next( |
| 1109 method | 1112 method |
| 1110 for method in interface.operations | 1113 for method in interface.operations |
| 1111 if ('deleter' in method.specials and | 1114 if ('deleter' in method.specials and |
| 1112 len(method.arguments) == 1 and | 1115 len(method.arguments) == 1 and |
| 1113 str(method.arguments[0].idl_type) == 'DOMString')) | 1116 str(method.arguments[0].idl_type) == 'DOMString')) |
| 1114 except StopIteration: | 1117 except StopIteration: |
| 1115 return None | 1118 return None |
| 1116 | 1119 |
| 1117 return property_deleter(deleter) | 1120 return property_deleter(deleter) |
| OLD | NEW |