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 720 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
731 # already generated tests for them. | 731 # already generated tests for them. |
732 test = '%s->IsObject()' % cpp_value | 732 test = '%s->IsObject()' % cpp_value |
733 yield test, method | 733 yield test, method |
734 except StopIteration: | 734 except StopIteration: |
735 pass | 735 pass |
736 | 736 |
737 # (Check for exact type matches before performing automatic type conversion; | 737 # (Check for exact type matches before performing automatic type conversion; |
738 # only needed if distinguishing between primitive types.) | 738 # only needed if distinguishing between primitive types.) |
739 if len([idl_type.is_primitive_type for idl_type in idl_types]) > 1: | 739 if len([idl_type.is_primitive_type for idl_type in idl_types]) > 1: |
740 # (Only needed if match in step 11, otherwise redundant.) | 740 # (Only needed if match in step 11, otherwise redundant.) |
741 if any(idl_type.name == 'String' or idl_type.is_enum | 741 if any(idl_type.is_string_type or idl_type.is_enum |
742 for idl_type in idl_types): | 742 for idl_type in idl_types): |
743 # 10. Otherwise: if V is a Number value, and there is an entry in S | 743 # 10. Otherwise: if V is a Number value, and there is an entry in S |
744 # that has one of the following types at position i of its type | 744 # that has one of the following types at position i of its type |
745 # list, | 745 # list, |
746 # • a numeric type | 746 # • a numeric type |
747 try: | 747 try: |
748 method = next(method for idl_type, method in idl_types_methods | 748 method = next(method for idl_type, method in idl_types_methods |
749 if idl_type.is_numeric_type) | 749 if idl_type.is_numeric_type) |
750 test = '%s->IsNumber()' % cpp_value | 750 test = '%s->IsNumber()' % cpp_value |
751 yield test, method | 751 yield test, method |
752 except StopIteration: | 752 except StopIteration: |
753 pass | 753 pass |
754 | 754 |
755 # (Perform automatic type conversion, in order. If any of these match, | 755 # (Perform automatic type conversion, in order. If any of these match, |
756 # that’s the end, and no other tests are needed.) To keep this code simple, | 756 # that’s the end, and no other tests are needed.) To keep this code simple, |
757 # we rely on the C++ compiler's dead code elimination to deal with the | 757 # we rely on the C++ compiler's dead code elimination to deal with the |
758 # redundancy if both cases below trigger. | 758 # redundancy if both cases below trigger. |
759 | 759 |
760 # 11. Otherwise: if there is an entry in S that has one of the following | 760 # 11. Otherwise: if there is an entry in S that has one of the following |
761 # types at position i of its type list, | 761 # types at position i of its type list, |
762 # • DOMString | 762 # • DOMString |
763 # • ByteString | |
jsbell
2014/06/19 20:49:19
This part of the CL will collide with r176531 and
sof
2014/06/20 07:21:16
This patchset was already on top of it; it general
| |
764 # • ScalarValueString [a DOMString typedef, per definition.] | |
763 # • an enumeration type | 765 # • an enumeration type |
764 # * ByteString | |
765 # Blink: ScalarValueString is a pending Web IDL addition | |
766 try: | 766 try: |
767 method = next(method for idl_type, method in idl_types_methods | 767 method = next(method for idl_type, method in idl_types_methods |
768 if idl_type.name in ('String', | 768 if idl_type.is_string_type or idl_type.is_enum) |
769 'ByteString', | |
770 'ScalarValueString') or | |
771 idl_type.is_enum) | |
772 yield 'true', method | 769 yield 'true', method |
773 except StopIteration: | 770 except StopIteration: |
774 pass | 771 pass |
775 | 772 |
776 # 12. Otherwise: if there is an entry in S that has one of the following | 773 # 12. Otherwise: if there is an entry in S that has one of the following |
777 # types at position i of its type list, | 774 # types at position i of its type list, |
778 # • a numeric type | 775 # • a numeric type |
779 try: | 776 try: |
780 method = next(method for idl_type, method in idl_types_methods | 777 method = next(method for idl_type, method in idl_types_methods |
781 if idl_type.is_numeric_type) | 778 if idl_type.is_numeric_type) |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
848 'cpp_type': cpp_template_type( | 845 'cpp_type': cpp_template_type( |
849 cpp_ptr_type('RefPtr', 'RawPtr', gc_type(interface)), | 846 cpp_ptr_type('RefPtr', 'RawPtr', gc_type(interface)), |
850 cpp_name(interface)), | 847 cpp_name(interface)), |
851 'cpp_value': v8_methods.cpp_value( | 848 'cpp_value': v8_methods.cpp_value( |
852 interface, constructor, len(constructor.arguments)), | 849 interface, constructor, len(constructor.arguments)), |
853 'has_exception_state': | 850 'has_exception_state': |
854 # [RaisesException=Constructor] | 851 # [RaisesException=Constructor] |
855 interface.extended_attributes.get('RaisesException') == 'Constructor ' or | 852 interface.extended_attributes.get('RaisesException') == 'Constructor ' or |
856 any(argument for argument in constructor.arguments | 853 any(argument for argument in constructor.arguments |
857 if argument.idl_type.name == 'SerializedScriptValue' or | 854 if argument.idl_type.name == 'SerializedScriptValue' or |
858 argument.idl_type.is_integer_type), | 855 argument.idl_type.may_raise_exception_on_conversion), |
859 'is_constructor': True, | 856 'is_constructor': True, |
860 'is_named_constructor': False, | 857 'is_named_constructor': False, |
861 'number_of_required_arguments': | 858 'number_of_required_arguments': |
862 number_of_required_arguments(constructor), | 859 number_of_required_arguments(constructor), |
863 } | 860 } |
864 | 861 |
865 | 862 |
866 # [NamedConstructor] | 863 # [NamedConstructor] |
867 def generate_named_constructor(interface): | 864 def generate_named_constructor(interface): |
868 extended_attributes = interface.extended_attributes | 865 extended_attributes = interface.extended_attributes |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1078 deleter = next( | 1075 deleter = next( |
1079 method | 1076 method |
1080 for method in interface.operations | 1077 for method in interface.operations |
1081 if ('deleter' in method.specials and | 1078 if ('deleter' in method.specials and |
1082 len(method.arguments) == 1 and | 1079 len(method.arguments) == 1 and |
1083 str(method.arguments[0].idl_type) == 'DOMString')) | 1080 str(method.arguments[0].idl_type) == 'DOMString')) |
1084 except StopIteration: | 1081 except StopIteration: |
1085 return None | 1082 return None |
1086 | 1083 |
1087 return property_deleter(deleter) | 1084 return property_deleter(deleter) |
OLD | NEW |