Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(111)

Side by Side Diff: Source/bindings/templates/interface_wip.h

Issue 17572008: WIP IDL compiler rewrite (Closed) Base URL: https://chromium.googlesource.com/chromium/blink@master
Patch Set: Branch: const + primitive type readonly attributes Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/bindings/templates/interface.cpp ('k') | Source/bindings/templates/interface_wip.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 This file is part of the Blink open source project.
3 This file has been auto-generated by CodeGeneratorV8.pm. DO NOT MODIFY!
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA.
19 */
20
21 #ifndef {{v8_class_name}}_h
22 #define {{v8_class_name}}_h
23
24 {% if conditional_string %}
25 #if {{conditional_string}}
26 {% endif %}
27 {% for filename in header_includes %}
28 #include "{{filename}}"
29 {% endfor %}
30
31 namespace WebCore {
32
33 {% if svg_property_type %}
34 template<typename PropertyType> class SVGPropertyTearOff;
35
36 {% endif %}
37 {% if svg_native_type %}
38 {% if svg_native_type_contains_svg_static_list_property_tear_off %}
39 template<typename PropertyType> class SVGStaticListPropertyTearOff;
40
41 {% else %}
42 template<typename PropertyType> class SVGListPropertyTearOff;
43
44 {% endif %}
45 {% endif %}
46 {%- if is_constructor_template_of_event %}
47 class Dictionary;
48 {% endif %}
49 {% for definition in namespace_WebCore_definitions %}
50 {{definition | indent}}
51 {% endfor %}
52 {% if has_named_constructor %}
53 class {{v8_class_name}}Constructor {
54 public:
55 static v8::Handle<v8::FunctionTemplate> GetTemplate(v8::Isolate*, WrapperWor ldType);
56 static WrapperTypeInfo info;
57 };
58
59 {% endif %}
60 class {{v8_class_name}} {
61 public:
62 static bool HasInstance(v8::Handle<v8::Value>, v8::Isolate*, WrapperWorldTyp e);
63 static bool HasInstanceInAnyWorld(v8::Handle<v8::Value>, v8::Isolate*);
64 static v8::Handle<v8::FunctionTemplate> GetTemplate(v8::Isolate*, WrapperWor ldType);
65 static {{cpp_class_name}}* toNative(v8::Handle<v8::Object> object)
66 {
67 return fromInternalPointer(object->GetAlignedPointerFromInternalField(v8 DOMWrapperObjectIndex));
68 }
69 static void derefObject(void*);
70 static WrapperTypeInfo info;
71 {% if needs_opaque_root_for_gc %}
72 static void* opaqueRootForGC(void*, v8::Isolate*);
73 {% endif %}
74 {% if inherits_extended_attribute_active_dom_object %}
75 static ActiveDOMObject* toActiveDOMObject(v8::Handle<v8::Object>);
76 {% endif %}
77 {% if inherits_event_target %}
78 static EventTarget* toEventTarget(v8::Handle<v8::Object>);
79 {% endif %}
80 {% if interface_name == "Window" %}
81 static v8::Handle<v8::ObjectTemplate> GetShadowObjectTemplate(v8::Isolate*, WrapperWorldType);
82 {% endif %}
83 {% for definition in operation_definitions %}
84 {{definition | indent}}
85 {% endfor %}
86 {% if is_constructable %}
87 static void constructorCallback(const v8::FunctionCallbackInfo<v8::Value>&);
88 {% endif %}
89 {% if has_custom_constructor %}
90 static void constructorCustom(const v8::FunctionCallbackInfo<v8::Value>&);
91 {% endif %}
92 {% for definition in attribute_definitions %}
93 {{definition | indent}}
94 {% endfor %}
95 {# indexed/named accessors #}
96 {% if has_custom_indexed_getter %}
97 static void indexedPropertyGetterCustom(uint32_t, const v8::PropertyCallback Info<v8::Value>&);
98 {% endif %}
99 {% if has_custom_indexed_setter %}
100 static void indexedPropertySetterCustom(uint32_t, v8::Local<v8::Value>, cons t v8::PropertyCallbackInfo<v8::Value>&);
101 {% endif %}
102 {% if has_custom_indexed_deleter %}
103 static void indexedPropertyDeleterCustom(uint32_t, const v8::PropertyCallbac kInfo<v8::Boolean>&);
104 {% endif %}
105 {% if has_custom_named_getter %}
106 static void namedPropertyGetterCustom(v8::Local<v8::String>, const v8::Prope rtyCallbackInfo<v8::Value>&);
107 {% endif %}
108 {% if has_custom_named_setter %}
109 static void namedPropertySetterCustom(v8::Local<v8::String>, v8::Local<v8::V alue>, const v8::PropertyCallbackInfo<v8::Value>&);
110 {% endif %}
111 {% if has_custom_named_deleter %}
112 static void namedPropertyDeleterCustom(v8::Local<v8::String>, const v8::Prop ertyCallbackInfo<v8::Boolean>&);
113 {% endif %}
114 {% if has_custom_named_enumerator %}
115 static void namedPropertyEnumeratorCustom(const v8::PropertyCallbackInfo<v8: :Array>&);
116 static void namedPropertyQueryCustom(v8::Local<v8::String>, const v8::Proper tyCallbackInfo<v8::Integer>&);
117 {% endif %}
118 {% if custom_legacy_call %}
119 static void legacyCallCustom(const v8::FunctionCallbackInfo<v8::Value>&);
120 {% endif %}
121 {% for definition in custom_internal_field_indices %}
122 {{definition | indent}}
123 {% endfor %}
124 {%- for internal_field in internal_fields %}
125 static const int {{internal_field}} = v8DefaultWrapperInternalFieldCount + { {loop.index0}};
126 {% endfor %}
127 static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + { {internal_fields|length}};
128 static inline void* toInternalPointer({{cpp_class_name}}* impl)
129 {
130 return {{to_wrapped_type}};
131 }
132
133 static inline {{cpp_class_name}}* fromInternalPointer(void* object)
134 {
135 return {{from_wrapped_type}};
136 }
137 {% if interface_name == "Window" %}
138 static bool namedSecurityCheckCustom(v8::Local<v8::Object> host, v8::Local<v 8::Value> key, v8::AccessType, v8::Local<v8::Value> data);
139 static bool indexedSecurityCheckCustom(v8::Local<v8::Object> host, uint32_t index, v8::AccessType, v8::Local<v8::Value> data);
140 {% endif %}
141 static void installPerContextProperties(v8::Handle<v8::Object>, {{cpp_class_ name}}*, v8::Isolate*){{install_per_context_properties_body}}
142 static void installPerContextPrototypeProperties(v8::Handle<v8::Object>, v8: :Isolate*){{install_per_context_prototype_properties_body}}
143 {# FIXME: Remove special hacks #}
144 {% if interface_name == "HTMLElement" %}
145 friend v8::Handle<v8::Object> createV8HTMLWrapper(HTMLElement*, v8::Handle<v 8::Object> creationContext, v8::Isolate*);
146 friend v8::Handle<v8::Object> createV8HTMLDirectWrapper(HTMLElement*, v8::Ha ndle<v8::Object> creationContext, v8::Isolate*);
147 {% elif interface_name == "SVGElement" %}
148 friend v8::Handle<v8::Object> createV8SVGWrapper(SVGElement*, v8::Handle<v8: :Object> creationContext, v8::Isolate*);
149 friend v8::Handle<v8::Object> createV8SVGDirectWrapper(SVGElement*, v8::Hand le<v8::Object> creationContext, v8::Isolate*);
150 friend v8::Handle<v8::Object> createV8SVGFallbackWrapper(SVGElement*, v8::Ha ndle<v8::Object> creationContext, v8::Isolate*);
151 {% elif interface_name == "HTMLUnknownElement" %}
152 friend v8::Handle<v8::Object> createV8HTMLFallbackWrapper(HTMLUnknownElement *, v8::Handle<v8::Object> creationContext, v8::Isolate*);
153 {% elif interface_name == "Element" %}
154 // This is a performance optimization hack. See V8Element::wrap.
155 friend v8::Handle<v8::Object> wrap(Node*, v8::Handle<v8::Object> creationCon text, v8::Isolate*);
156 {% endif %}
157 private:
158 {% if wrap %}
159 friend v8::Handle<v8::Object> wrap({{cpp_class_name}}*, v8::Handle<v8::Objec t> creationContext, v8::Isolate*);
160 static v8::Handle<v8::Object> createWrapper({{cpp_class_name_as_parameter}}, v8::Handle<v8::Object> creationContext, v8::Isolate*);
161 {% endif %}
162 };
163
164 template<>
165 class WrapperTypeTraits<{{cpp_class_name}} > {
166 public:
167 static WrapperTypeInfo* info() { return &{{v8_class_name}}::info; }
168 };
169
170 {% if generate_to_v8 %}
171 class {{cpp_class_name}};
172 v8::Handle<v8::Value> toV8({{cpp_class_name}}*, v8::Handle<v8::Object> creationC ontext, v8::Isolate*);
173 v8::Handle<v8::Value> toV8ForMainWorld({{cpp_class_name}}*, v8::Handle<v8::Objec t> creationContext, v8::Isolate*);
174
175 template<class CallbackInfo, class Wrappable>
176 inline v8::Handle<v8::Value> toV8Fast({{cpp_class_name}}* impl, const CallbackIn fo& callbackInfo, Wrappable*)
177 {
178 return toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate());
179 }
180
181 {% endif %}
182 {% if wrap %}
183
184 {% if custom_wrap %}
185 v8::Handle<v8::Object> wrap({{cpp_class_name}}* impl, v8::Handle<v8::Object> cre ationContext, v8::Isolate*);
186 {% else %}
187 inline v8::Handle<v8::Object> wrap({{cpp_class_name}}* impl, v8::Handle<v8::Obje ct> creationContext, v8::Isolate* isolate)
188 {
189 ASSERT(impl);
190 ASSERT(DOMDataStore::getWrapper<{{v8_class_name}}>(impl, isolate).IsEmpty()) ;
191 return {{v8_class_name}}::{{ custom_wrap and "wrap" or "createWrapper" }}(im pl, creationContext, isolate);
192 }
193 {% endif %}
194
195 {% endif %}
196 {% if wrap %}
197 inline v8::Handle<v8::Value> toV8({{cpp_class_name}}* impl, v8::Handle<v8::Objec t> creationContext, v8::Isolate* isolate)
198 {
199 if (UNLIKELY(!impl))
200 return v8NullWithCheck(isolate);
201 v8::Handle<v8::Value> wrapper = DOMDataStore::getWrapper<{{v8_class_name}}>( impl, isolate);
202 if (!wrapper.IsEmpty())
203 return wrapper;
204 return wrap(impl, creationContext, isolate);
205 }
206
207 inline v8::Handle<v8::Value> toV8ForMainWorld({{cpp_class_name}}* impl, v8::Hand le<v8::Object> creationContext, v8::Isolate* isolate)
208 {
209 ASSERT(worldType(isolate) == MainWorld);
210 if (UNLIKELY(!impl))
211 return v8::Null(isolate);
212 v8::Handle<v8::Value> wrapper = DOMDataStore::getWrapperForMainWorld<{{v8_cl ass_name}}>(impl);
213 if (!wrapper.IsEmpty())
214 return wrapper;
215 return wrap(impl, creationContext, isolate);
216 }
217
218 template<class CallbackInfo, class Wrappable>
219 inline v8::Handle<v8::Value> toV8Fast({{cpp_class_name}}* impl, const CallbackIn fo& callbackInfo, Wrappable* wrappable)
220 {
221 if (UNLIKELY(!impl))
222 return v8::Null(callbackInfo.GetIsolate());
223 v8::Handle<v8::Object> wrapper = DOMDataStore::getWrapperFast<{{v8_class_nam e}}>(impl, callbackInfo, wrappable);
224 if (!wrapper.IsEmpty())
225 return wrapper;
226 return wrap(impl, callbackInfo.Holder(), callbackInfo.GetIsolate());
227 }
228
229 inline v8::Handle<v8::Value> toV8ForMainWorld(PassRefPtr< {{cpp_class_name}} > i mpl, v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
230 {
231 return toV8ForMainWorld(impl.get(), creationContext, isolate);
232 }
233
234 {% endif %}
235
236 template<class CallbackInfo, class Wrappable>
237 inline v8::Handle<v8::Value> toV8Fast(PassRefPtr< {{cpp_class_name}} > impl, con st CallbackInfo& callbackInfo, Wrappable* wrappable)
238 {
239 return toV8Fast(impl.get(), callbackInfo, wrappable);
240 }
241
242 inline v8::Handle<v8::Value> toV8(PassRefPtr< {{cpp_class_name}} > impl, v8::Han dle<v8::Object> creationContext, v8::Isolate* isolate)
243 {
244 return toV8(impl.get(), creationContext, isolate);
245 }
246
247 {% if is_constructor_template_of_event %}
248 bool fill{{cpp_class_name}}Init({{cpp_class_name}}Init&, const Dictionary&);
249
250 {% endif %}
251 }
252 {% if conditional_string %}
253
254 #endif // {{conditional_string}}
255 {% endif %}
256
257 #endif // {{v8_class_name}}_h
258
OLDNEW
« no previous file with comments | « Source/bindings/templates/interface.cpp ('k') | Source/bindings/templates/interface_wip.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698