OLD | NEW |
---|---|
1 {% extends 'interface_base_cpp.template' %} | 1 {% extends 'interface_base_cpp.template' %} |
2 | 2 |
3 | 3 |
4 {##############################################################################} | 4 {##############################################################################} |
5 {% macro generate_index_getter_resolver_body(dart_class, class_name, indexed_pro perty_getter) %} | |
6 {% set resolver_string = resolver_indexed_name(class_name, 'getter', 'unsigned long') %} | |
7 {# TODO(terry): Should change to 'Getter' for consistency, matches dart:html for indexed props and handle custom. #} | |
8 if (argumentCount == 2 && name == "{{resolver_string}}") { | |
9 *autoSetupScope = true; | |
10 return {{dart_class}}Internal::indexedPropertyGetter; | |
11 } | |
12 {% endmacro %} | |
13 | |
14 | |
15 {##############################################################################} | |
16 {# Mangled Blink name used by resolver to map to static function. #} | 5 {# Mangled Blink name used by resolver to map to static function. #} |
17 {##############################################################################} | 6 {##############################################################################} |
18 {% macro resolver_indexed_name(class_name, name, argument) -%} | 7 {% macro resolver_indexed_name(class_name, name, argument) -%} |
Leaf
2014/07/22 17:02:29
Since this is now shared by indexed and named prop
| |
19 {% set name = '__' + name + '___' -%} | 8 {% set name = '__' + name + '___' -%} |
20 {% set count = 1 -%} | 9 {% set count = 1 -%} |
21 {{class_name}}_{{name}}Callback_RESOLVER_STRING_{{count}}_{{argument}} | 10 {{class_name}}_{{name}}Callback_RESOLVER_STRING_{{count}}_{{argument}} |
22 {%- endmacro %} | 11 {%- endmacro %} |
23 | 12 |
24 | 13 |
25 {# TODO(terry): Implement setter and deleter too #} | 14 {# TODO(terry): Implement setter and deleter too #} |
26 | 15 |
27 | 16 |
28 {##############################################################################} | 17 {##############################################################################} |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
63 {##############################################################################} | 52 {##############################################################################} |
64 {% macro generate_index_getter_resolver_body(dart_class, class_name, indexed_pro perty_getter) %} | 53 {% macro generate_index_getter_resolver_body(dart_class, class_name, indexed_pro perty_getter) %} |
65 {% set resolver_string = resolver_indexed_name(class_name, 'getter', 'unsigned long') %} | 54 {% set resolver_string = resolver_indexed_name(class_name, 'getter', 'unsigned long') %} |
66 {# TODO(terry): Should change to 'Getter' for consistency, matches dart:html for indexed props and handle custom. #} | 55 {# TODO(terry): Should change to 'Getter' for consistency, matches dart:html for indexed props and handle custom. #} |
67 if (argumentCount == 2 && name == "{{resolver_string}}") { | 56 if (argumentCount == 2 && name == "{{resolver_string}}") { |
68 *autoSetupScope = true; | 57 *autoSetupScope = true; |
69 return {{dart_class}}Internal::indexedPropertyGetter; | 58 return {{dart_class}}Internal::indexedPropertyGetter; |
70 } | 59 } |
71 {% endmacro %} | 60 {% endmacro %} |
72 | 61 |
62 {##############################################################################} | |
63 {% macro generate_named_getter_resolver_body(dart_class, class_name, named_prope rty_getter) %} | |
64 {% set resolver_string = resolver_indexed_name(class_name, 'getter', 'DOMStrin g') %} | |
65 // TODO(terry/efortuna): v8 implements PropetyGetter, PropertyEnumerator, and | |
66 // PropertyQuery. On the Dart side we currently only implement | |
67 // propertyQuery. Implement the other two. | |
68 if (argumentCount == 2 && name == "{{resolver_string}}") { | |
69 *autoSetupScope = true; | |
70 return {{dart_class}}Internal::propertyQuery; | |
71 } | |
72 {% endmacro %} | |
73 | 73 |
74 {##############################################################################} | 74 {##############################################################################} |
75 {% block indexed_property_getter_resolver %} | 75 {% block indexed_property_getter_resolver %} |
76 {# TODO(terry): Support all indexed and named properties today only indexed getter is supported. #} | 76 {# TODO(terry): Support all indexed and named properties today only indexed getter is supported. #} |
77 {# Resolver indexed/named properties #} | 77 {# Resolver indexed properties #} |
78 {% if indexed_property_getter and not indexed_property_getter.is_custom %} | 78 {% if indexed_property_getter and not indexed_property_getter.is_custom %} |
79 {{generate_index_getter_resolver_body(dart_class, interface_name, indexed_pr operty_getter) | indent(4)}} | 79 {{generate_index_getter_resolver_body(dart_class, interface_name, indexed_pr operty_getter) | indent(4)}} |
80 {% endif %} | 80 {% endif %} |
81 {% endblock %} | 81 {% endblock %} |
82 | 82 |
83 {##############################################################################} | |
84 {% block named_property_getter_resolver %} | |
85 {# Resolver named properties #} | |
86 {% if named_property_getter %} | |
87 {{generate_named_getter_resolver_body(dart_class, interface_name, named_prop erty_getter) | indent(4)}} | |
88 {% endif %} | |
89 {% endblock %} | |
90 | |
83 | 91 |
84 {##############################################################################} | 92 {##############################################################################} |
85 {% macro generate_symbolizer_indexed_property_getter_body(dart_class, interface_ name) %} | 93 {% macro generate_symbolizer_indexed_property_getter_body(dart_class, interface_ name) %} |
86 {% set resolver_string = resolver_indexed_name(interface_name, 'getter', 'unsign ed long') %} | 94 {% set resolver_string = resolver_indexed_name(interface_name, 'getter', 'unsign ed long') %} |
87 if (nf == {{dart_class}}Internal::indexedPropertyGetter) { | 95 if (nf == {{dart_class}}Internal::indexedPropertyGetter) { |
88 return reinterpret_cast<const uint8_t*>("{{resolver_string}}"); | 96 return reinterpret_cast<const uint8_t*>("{{resolver_string}}"); |
89 } | 97 } |
90 {% endmacro %} | 98 {% endmacro %} |
91 | 99 |
92 | 100 {##############################################################################} |
101 {% macro generate_symbolizer_named_property_getter_body(dart_class, interface_na me) %} | |
102 {% set resolver_string = resolver_indexed_name(interface_name, 'getter', 'DOMStr ing') %} | |
103 // TODO(terry/efortuna): v8 implements PropetyGetter, PropertyEnumerator, an d | |
104 // PropertyQuery. On the Dart side we currently only implement | |
105 // propertyQuery. Implement the other two. | |
106 if (nf == {{dart_class}}Internal::propertyQuery) { | |
107 return reinterpret_cast<const uint8_t*>("{{resolver_string}}"); | |
108 } | |
109 {% endmacro %} | |
93 {##############################################################################} | 110 {##############################################################################} |
94 {% block generate_symbolizer_indexed_property_getter %} | 111 {% block generate_symbolizer_indexed_property_getter %} |
95 {% if indexed_property_getter and not indexed_property_getter.is_custom %} | 112 {% if indexed_property_getter and not indexed_property_getter.is_custom %} |
96 {{generate_symbolizer_indexed_property_getter_body(dart_class, interface_name) }} | 113 {{generate_symbolizer_indexed_property_getter_body(dart_class, interface_name) }} |
97 {% endif %} | 114 {% endif %} |
98 {% endblock %} | 115 {% endblock %} |
116 | |
117 {##############################################################################} | |
118 {% block generate_symbolizer_named_property_getter %} | |
119 {% if named_property_getter %} | |
120 {{generate_symbolizer_named_property_getter_body(dart_class, interface_name)}} | |
121 {% endif %} | |
122 {% endblock %} | |
OLD | NEW |