OLD | NEW |
| (Empty) |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef V8_INDEX_H__ | |
6 #define V8_INDEX_H__ | |
7 | |
8 #include <v8.h> | |
9 #include "PlatformString.h" // for WebCore::String | |
10 | |
11 namespace WebCore { | |
12 | |
13 typedef v8::Persistent<v8::FunctionTemplate> (*FunctionTemplateFactory)(); | |
14 | |
15 #if ENABLE(VIDEO) | |
16 #define VIDEO_HTMLELEMENT_TYPES(V) \ | |
17 V(HTMLAUDIOELEMENT, HTMLAudioElement) \ | |
18 V(HTMLMEDIAELEMENT, HTMLMediaElement) \ | |
19 V(HTMLSOURCEELEMENT, HTMLSourceElement) \ | |
20 V(HTMLVIDEOELEMENT, HTMLVideoElement) | |
21 #define VIDEO_NONNODE_TYPES(V) \ | |
22 V(MEDIAERROR, MediaError) \ | |
23 V(TIMERANGES, TimeRanges) | |
24 #else | |
25 #define VIDEO_HTMLELEMENT_TYPES(V) | |
26 #define VIDEO_NONNODE_TYPES(V) | |
27 #endif | |
28 | |
29 #if ENABLE(WORKERS) | |
30 #define WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V) \ | |
31 V(WORKER, Worker) | |
32 | |
33 #define WORKER_NONNODE_WRAPPER_TYPES(V) \ | |
34 V(WORKERCONTEXT, WorkerContext) \ | |
35 V(WORKERLOCATION, WorkerLocation) \ | |
36 V(WORKERNAVIGATOR, WorkerNavigator) | |
37 #else | |
38 #define WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V) | |
39 #define WORKER_NONNODE_WRAPPER_TYPES(V) | |
40 #endif | |
41 | |
42 #define DOM_NODE_TYPES(V) \ | |
43 V(ATTR, Attr) \ | |
44 V(CHARACTERDATA, CharacterData) \ | |
45 V(CDATASECTION, CDATASection) \ | |
46 V(COMMENT, Comment) \ | |
47 V(DOCUMENT, Document) \ | |
48 V(DATAGRIDCOLUMN, DataGridColumn) \ | |
49 V(DATAGRIDCOLUMNLIST, DataGridColumnList) \ | |
50 V(DOCUMENTFRAGMENT, DocumentFragment) \ | |
51 V(DOCUMENTTYPE, DocumentType) \ | |
52 V(ELEMENT, Element) \ | |
53 V(ENTITY, Entity) \ | |
54 V(ENTITYREFERENCE, EntityReference) \ | |
55 V(HTMLDOCUMENT, HTMLDocument) \ | |
56 V(NODE, Node) \ | |
57 V(NOTATION, Notation) \ | |
58 V(PROCESSINGINSTRUCTION, ProcessingInstruction) \ | |
59 V(TEXT, Text) \ | |
60 \ | |
61 V(HTMLANCHORELEMENT, HTMLAnchorElement) \ | |
62 V(HTMLAPPLETELEMENT, HTMLAppletElement) \ | |
63 V(HTMLAREAELEMENT, HTMLAreaElement) \ | |
64 V(HTMLBASEELEMENT, HTMLBaseElement) \ | |
65 V(HTMLBASEFONTELEMENT, HTMLBaseFontElement) \ | |
66 V(HTMLBLOCKQUOTEELEMENT, HTMLBlockquoteElement) \ | |
67 V(HTMLBODYELEMENT, HTMLBodyElement) \ | |
68 V(HTMLBRELEMENT, HTMLBRElement) \ | |
69 V(HTMLBUTTONELEMENT, HTMLButtonElement) \ | |
70 V(HTMLCANVASELEMENT, HTMLCanvasElement) \ | |
71 V(HTMLDATAGRIDCELLELEMENT, HTMLDataGridCellElement) \ | |
72 V(HTMLDATAGRIDCOLELEMENT, HTMLDataGridColElement) \ | |
73 V(HTMLDATAGRIDELEMENT, HTMLDataGridElement) \ | |
74 V(HTMLDATAGRIDROWELEMENT, HTMLDataGridRowElement) \ | |
75 V(HTMLDIRECTORYELEMENT, HTMLDirectoryElement) \ | |
76 V(HTMLDIVELEMENT, HTMLDivElement) \ | |
77 V(HTMLDLISTELEMENT, HTMLDListElement) \ | |
78 V(HTMLEMBEDELEMENT, HTMLEmbedElement) \ | |
79 V(HTMLFIELDSETELEMENT, HTMLFieldSetElement) \ | |
80 V(HTMLFONTELEMENT, HTMLFontElement) \ | |
81 V(HTMLFORMELEMENT, HTMLFormElement) \ | |
82 V(HTMLFRAMEELEMENT, HTMLFrameElement) \ | |
83 V(HTMLFRAMESETELEMENT, HTMLFrameSetElement) \ | |
84 V(HTMLHEADINGELEMENT, HTMLHeadingElement) \ | |
85 V(HTMLHEADELEMENT, HTMLHeadElement) \ | |
86 V(HTMLHRELEMENT, HTMLHRElement) \ | |
87 V(HTMLHTMLELEMENT, HTMLHtmlElement) \ | |
88 V(HTMLIFRAMEELEMENT, HTMLIFrameElement) \ | |
89 V(HTMLIMAGEELEMENT, HTMLImageElement) \ | |
90 V(HTMLINPUTELEMENT, HTMLInputElement) \ | |
91 V(HTMLISINDEXELEMENT, HTMLIsIndexElement) \ | |
92 V(HTMLLABELELEMENT, HTMLLabelElement) \ | |
93 V(HTMLLEGENDELEMENT, HTMLLegendElement) \ | |
94 V(HTMLLIELEMENT, HTMLLIElement) \ | |
95 V(HTMLLINKELEMENT, HTMLLinkElement) \ | |
96 V(HTMLMAPELEMENT, HTMLMapElement) \ | |
97 V(HTMLMARQUEEELEMENT, HTMLMarqueeElement) \ | |
98 V(HTMLMENUELEMENT, HTMLMenuElement) \ | |
99 V(HTMLMETAELEMENT, HTMLMetaElement) \ | |
100 V(HTMLMODELEMENT, HTMLModElement) \ | |
101 V(HTMLOBJECTELEMENT, HTMLObjectElement) \ | |
102 V(HTMLOLISTELEMENT, HTMLOListElement) \ | |
103 V(HTMLOPTGROUPELEMENT, HTMLOptGroupElement) \ | |
104 V(HTMLOPTIONELEMENT, HTMLOptionElement) \ | |
105 V(HTMLPARAGRAPHELEMENT, HTMLParagraphElement) \ | |
106 V(HTMLPARAMELEMENT, HTMLParamElement) \ | |
107 V(HTMLPREELEMENT, HTMLPreElement) \ | |
108 V(HTMLQUOTEELEMENT, HTMLQuoteElement) \ | |
109 V(HTMLSCRIPTELEMENT, HTMLScriptElement) \ | |
110 V(HTMLSELECTELEMENT, HTMLSelectElement) \ | |
111 V(HTMLSTYLEELEMENT, HTMLStyleElement) \ | |
112 V(HTMLTABLECAPTIONELEMENT, HTMLTableCaptionElement) \ | |
113 V(HTMLTABLECOLELEMENT, HTMLTableColElement) \ | |
114 V(HTMLTABLEELEMENT, HTMLTableElement) \ | |
115 V(HTMLTABLESECTIONELEMENT, HTMLTableSectionElement) \ | |
116 V(HTMLTABLECELLELEMENT, HTMLTableCellElement) \ | |
117 V(HTMLTABLEROWELEMENT, HTMLTableRowElement) \ | |
118 V(HTMLTEXTAREAELEMENT, HTMLTextAreaElement) \ | |
119 V(HTMLTITLEELEMENT, HTMLTitleElement) \ | |
120 V(HTMLULISTELEMENT, HTMLUListElement) \ | |
121 V(HTMLELEMENT, HTMLElement) \ | |
122 VIDEO_HTMLELEMENT_TYPES(V) | |
123 | |
124 #if ENABLE(SVG_ANIMATION) | |
125 #define SVG_ANIMATION_ELEMENT_TYPES(V) \ | |
126 V(SVGANIMATECOLORELEMENT, SVGAnimateColorElement) \ | |
127 V(SVGANIMATEELEMENT, SVGAnimateElement) \ | |
128 V(SVGANIMATETRANSFORMELEMENT, SVGAnimateTransformElement) \ | |
129 V(SVGANIMATIONELEMENT, SVGAnimationElement) \ | |
130 V(SVGSETELEMENT, SVGSetElement) | |
131 #else | |
132 #define SVG_ANIMATION_ELEMENT_TYPES(V) | |
133 #endif | |
134 | |
135 #if ENABLE(SVG_FILTERS) | |
136 #define SVG_FILTERS_ELEMENT_TYPES(V) \ | |
137 V(SVGCOMPONENTTRANSFERFUNCTIONELEMENT, SVGComponentTransferFunctionElement)\ | |
138 V(SVGFEBLENDELEMENT, SVGFEBlendElement) \ | |
139 V(SVGFECOLORMATRIXELEMENT, SVGFEColorMatrixElement) \ | |
140 V(SVGFECOMPONENTTRANSFERELEMENT, SVGFEComponentTransferElement) \ | |
141 V(SVGFECOMPOSITEELEMENT, SVGFECompositeElement) \ | |
142 V(SVGFEDIFFUSELIGHTINGELEMENT, SVGFEDiffuseLightingElement) \ | |
143 V(SVGFEDISPLACEMENTMAPELEMENT, SVGFEDisplacementMapElement) \ | |
144 V(SVGFEDISTANTLIGHTELEMENT, SVGFEDistantLightElement) \ | |
145 V(SVGFEFLOODELEMENT, SVGFEFloodElement) \ | |
146 V(SVGFEFUNCAELEMENT, SVGFEFuncAElement) \ | |
147 V(SVGFEFUNCBELEMENT, SVGFEFuncBElement) \ | |
148 V(SVGFEFUNCGELEMENT, SVGFEFuncGElement) \ | |
149 V(SVGFEFUNCRELEMENT, SVGFEFuncRElement) \ | |
150 V(SVGFEGAUSSIANBLURELEMENT, SVGFEGaussianBlurElement) \ | |
151 V(SVGFEIMAGEELEMENT, SVGFEImageElement) \ | |
152 V(SVGFEMERGEELEMENT, SVGFEMergeElement) \ | |
153 V(SVGFEMERGENODEELEMENT, SVGFEMergeNodeElement) \ | |
154 V(SVGFEOFFSETELEMENT, SVGFEOffsetElement) \ | |
155 V(SVGFEPOINTLIGHTELEMENT, SVGFEPointLightElement) \ | |
156 V(SVGFESPECULARLIGHTINGELEMENT, SVGFESpecularLightingElement) \ | |
157 V(SVGFESPOTLIGHTELEMENT, SVGFESpotLightElement) \ | |
158 V(SVGFETILEELEMENT, SVGFETileElement) \ | |
159 V(SVGFETURBULENCEELEMENT, SVGFETurbulenceElement) \ | |
160 V(SVGFILTERELEMENT, SVGFilterElement) | |
161 #else | |
162 #define SVG_FILTERS_ELEMENT_TYPES(V) | |
163 #endif | |
164 | |
165 #if ENABLE(SVG_FONTS) | |
166 #define SVG_FONTS_ELEMENT_TYPES(V) \ | |
167 V(SVGDEFINITIONSRCELEMENT, SVGDefinitionSrcElement) \ | |
168 V(SVGFONTFACEELEMENT, SVGFontFaceElement) \ | |
169 V(SVGFONTFACEFORMATELEMENT, SVGFontFaceFormatElement) \ | |
170 V(SVGFONTFACENAMEELEMENT, SVGFontFaceNameElement) \ | |
171 V(SVGFONTFACESRCELEMENT, SVGFontFaceSrcElement) \ | |
172 V(SVGFONTFACEURIELEMENT, SVGFontFaceUriElement) | |
173 #else | |
174 #define SVG_FONTS_ELEMENT_TYPES(V) | |
175 #endif | |
176 | |
177 #if ENABLE(SVG_FOREIGN_OBJECT) | |
178 #define SVG_FOREIGN_OBJECT_ELEMENT_TYPES(V) \ | |
179 V(SVGFOREIGNOBJECTELEMENT, SVGForeignObjectElement) | |
180 #else | |
181 #define SVG_FOREIGN_OBJECT_ELEMENT_TYPES(V) | |
182 #endif | |
183 | |
184 #if ENABLE(SVG_USE) | |
185 #define SVG_USE_ELEMENT_TYPES(V) \ | |
186 V(SVGUSEELEMENT, SVGUseElement) | |
187 #else | |
188 #define SVG_USE_ELEMENT_TYPES(V) | |
189 #endif | |
190 | |
191 #if ENABLE(SVG) | |
192 #define SVG_NODE_TYPES(V) \ | |
193 SVG_ANIMATION_ELEMENT_TYPES(V) \ | |
194 SVG_FILTERS_ELEMENT_TYPES(V) \ | |
195 SVG_FONTS_ELEMENT_TYPES(V) \ | |
196 SVG_FOREIGN_OBJECT_ELEMENT_TYPES(V) \ | |
197 SVG_USE_ELEMENT_TYPES(V) \ | |
198 V(SVGAELEMENT, SVGAElement) \ | |
199 V(SVGALTGLYPHELEMENT, SVGAltGlyphElement) \ | |
200 V(SVGCIRCLEELEMENT, SVGCircleElement) \ | |
201 V(SVGCLIPPATHELEMENT, SVGClipPathElement) \ | |
202 V(SVGCURSORELEMENT, SVGCursorElement) \ | |
203 V(SVGDEFSELEMENT, SVGDefsElement) \ | |
204 V(SVGDESCELEMENT, SVGDescElement) \ | |
205 V(SVGELLIPSEELEMENT, SVGEllipseElement) \ | |
206 V(SVGGELEMENT, SVGGElement) \ | |
207 V(SVGGLYPHELEMENT, SVGGlyphElement) \ | |
208 V(SVGGRADIENTELEMENT, SVGGradientElement) \ | |
209 V(SVGIMAGEELEMENT, SVGImageElement) \ | |
210 V(SVGLINEARGRADIENTELEMENT, SVGLinearGradientElement) \ | |
211 V(SVGLINEELEMENT, SVGLineElement) \ | |
212 V(SVGMARKERELEMENT, SVGMarkerElement) \ | |
213 V(SVGMASKELEMENT, SVGMaskElement) \ | |
214 V(SVGMETADATAELEMENT, SVGMetadataElement) \ | |
215 V(SVGPATHELEMENT, SVGPathElement) \ | |
216 V(SVGPATTERNELEMENT, SVGPatternElement) \ | |
217 V(SVGPOLYGONELEMENT, SVGPolygonElement) \ | |
218 V(SVGPOLYLINEELEMENT, SVGPolylineElement) \ | |
219 V(SVGRADIALGRADIENTELEMENT, SVGRadialGradientElement) \ | |
220 V(SVGRECTELEMENT, SVGRectElement) \ | |
221 V(SVGSCRIPTELEMENT, SVGScriptElement) \ | |
222 V(SVGSTOPELEMENT, SVGStopElement) \ | |
223 V(SVGSTYLEELEMENT, SVGStyleElement) \ | |
224 V(SVGSVGELEMENT, SVGSVGElement) \ | |
225 V(SVGSWITCHELEMENT, SVGSwitchElement) \ | |
226 V(SVGSYMBOLELEMENT, SVGSymbolElement) \ | |
227 V(SVGTEXTCONTENTELEMENT, SVGTextContentElement) \ | |
228 V(SVGTEXTELEMENT, SVGTextElement) \ | |
229 V(SVGTEXTPATHELEMENT, SVGTextPathElement) \ | |
230 V(SVGTEXTPOSITIONINGELEMENT, SVGTextPositioningElement) \ | |
231 V(SVGTITLEELEMENT, SVGTitleElement) \ | |
232 V(SVGTREFELEMENT, SVGTRefElement) \ | |
233 V(SVGTSPANELEMENT, SVGTSpanElement) \ | |
234 V(SVGVIEWELEMENT, SVGViewElement) \ | |
235 V(SVGELEMENT, SVGElement) \ | |
236 \ | |
237 V(SVGDOCUMENT, SVGDocument) | |
238 #endif // SVG | |
239 | |
240 | |
241 // ACTIVE_DOM_OBJECT_TYPES are DOM_OBJECT_TYPES that need special treatement | |
242 // during GC. | |
243 #define ACTIVE_DOM_OBJECT_TYPES(V) \ | |
244 V(MESSAGEPORT, MessagePort) \ | |
245 V(XMLHTTPREQUEST, XMLHttpRequest) \ | |
246 WORKER_ACTIVE_OBJECT_WRAPPER_TYPES(V) | |
247 | |
248 // NOTE: DOM_OBJECT_TYPES is split into two halves because | |
249 // Visual Studio's Intellinonsense crashes when macros get | |
250 // too large. 10-29-08 | |
251 // DOM_OBJECT_TYPES are non-node DOM types. | |
252 #define DOM_OBJECT_TYPES_1(V) \ | |
253 V(BARINFO, BarInfo) \ | |
254 V(CANVASGRADIENT, CanvasGradient) \ | |
255 V(CANVASPATTERN, CanvasPattern) \ | |
256 V(CANVASRENDERINGCONTEXT2D, CanvasRenderingContext2D) \ | |
257 V(CLIENTRECT, ClientRect) \ | |
258 V(CLIENTRECTLIST, ClientRectList) \ | |
259 V(CLIPBOARD, Clipboard) \ | |
260 V(CONSOLE, Console) \ | |
261 V(COUNTER, Counter) \ | |
262 V(CSSCHARSETRULE, CSSCharsetRule) \ | |
263 V(CSSFONTFACERULE, CSSFontFaceRule) \ | |
264 V(CSSIMPORTRULE, CSSImportRule) \ | |
265 V(CSSMEDIARULE, CSSMediaRule) \ | |
266 V(CSSPAGERULE, CSSPageRule) \ | |
267 V(CSSPRIMITIVEVALUE, CSSPrimitiveValue) \ | |
268 V(CSSRULE, CSSRule) \ | |
269 V(CSSRULELIST, CSSRuleList) \ | |
270 V(CSSSTYLEDECLARATION, CSSStyleDeclaration) \ | |
271 V(CSSSTYLERULE, CSSStyleRule) \ | |
272 V(CSSSTYLESHEET, CSSStyleSheet) \ | |
273 V(CSSVALUE, CSSValue) \ | |
274 V(CSSVALUELIST, CSSValueList) \ | |
275 V(CSSVARIABLESDECLARATION, CSSVariablesDeclaration) \ | |
276 V(CSSVARIABLESRULE, CSSVariablesRule) \ | |
277 V(DOMCOREEXCEPTION, DOMCoreException) \ | |
278 V(DOMIMPLEMENTATION, DOMImplementation) \ | |
279 V(DOMPARSER, DOMParser) \ | |
280 V(DOMSELECTION, DOMSelection) \ | |
281 V(DOMWINDOW, DOMWindow) \ | |
282 V(EVENT, Event) \ | |
283 V(EVENTEXCEPTION, EventException) \ | |
284 V(FILE, File) \ | |
285 V(FILELIST, FileList) \ | |
286 V(HISTORY, History) \ | |
287 V(UNDETECTABLEHTMLCOLLECTION, UndetectableHTMLCollection) \ | |
288 V(HTMLCOLLECTION, HTMLCollection) \ | |
289 V(HTMLOPTIONSCOLLECTION, HTMLOptionsCollection) \ | |
290 V(IMAGEDATA, ImageData) \ | |
291 V(CANVASPIXELARRAY, CanvasPixelArray) \ | |
292 V(INSPECTORCONTROLLER, InspectorController) \ | |
293 V(KEYBOARDEVENT, KeyboardEvent) \ | |
294 V(LOCATION, Location) \ | |
295 V(MEDIALIST, MediaList) | |
296 | |
297 #define DOM_OBJECT_TYPES_2(V) \ | |
298 V(MESSAGECHANNEL, MessageChannel) \ | |
299 V(MESSAGEEVENT, MessageEvent) \ | |
300 V(MIMETYPE, MimeType) \ | |
301 V(MIMETYPEARRAY, MimeTypeArray) \ | |
302 V(MOUSEEVENT, MouseEvent) \ | |
303 V(MUTATIONEVENT, MutationEvent) \ | |
304 V(NAMEDNODEMAP, NamedNodeMap) \ | |
305 V(NAVIGATOR, Navigator) \ | |
306 V(NODEFILTER, NodeFilter) \ | |
307 V(NODEITERATOR, NodeIterator) \ | |
308 V(NODELIST, NodeList) \ | |
309 V(OVERFLOWEVENT, OverflowEvent) \ | |
310 V(PLUGIN, Plugin) \ | |
311 V(PLUGINARRAY, PluginArray) \ | |
312 V(PROGRESSEVENT, ProgressEvent) \ | |
313 V(RANGE, Range) \ | |
314 V(RANGEEXCEPTION, RangeException) \ | |
315 V(RECT, Rect) \ | |
316 V(RGBCOLOR, RGBColor) \ | |
317 V(SCREEN, Screen) \ | |
318 V(STYLESHEET, StyleSheet) \ | |
319 V(STYLESHEETLIST, StyleSheetList) \ | |
320 V(TEXTEVENT, TextEvent) \ | |
321 V(TEXTMETRICS, TextMetrics) \ | |
322 V(TREEWALKER, TreeWalker) \ | |
323 V(UIEVENT, UIEvent) \ | |
324 V(WEBKITANIMATIONEVENT, WebKitAnimationEvent) \ | |
325 V(WEBKITCSSKEYFRAMERULE, WebKitCSSKeyframeRule) \ | |
326 V(WEBKITCSSKEYFRAMESRULE, WebKitCSSKeyframesRule) \ | |
327 V(WEBKITCSSMATRIX, WebKitCSSMatrix) \ | |
328 V(WEBKITPOINT, WebKitPoint) \ | |
329 V(WEBKITCSSTRANSFORMVALUE, WebKitCSSTransformValue) \ | |
330 V(WEBKITTRANSITIONEVENT, WebKitTransitionEvent) \ | |
331 V(WHEELEVENT, WheelEvent) \ | |
332 V(XMLHTTPREQUESTUPLOAD, XMLHttpRequestUpload) \ | |
333 V(XMLHTTPREQUESTEXCEPTION, XMLHttpRequestException) \ | |
334 V(XMLHTTPREQUESTPROGRESSEVENT, XMLHttpRequestProgressEvent) \ | |
335 V(XMLSERIALIZER, XMLSerializer) \ | |
336 V(XPATHEVALUATOR, XPathEvaluator) \ | |
337 V(XPATHEXCEPTION, XPathException) \ | |
338 V(XPATHEXPRESSION, XPathExpression) \ | |
339 V(XPATHNSRESOLVER, XPathNSResolver) \ | |
340 V(XPATHRESULT, XPathResult) \ | |
341 V(XSLTPROCESSOR, XSLTProcessor) \ | |
342 ACTIVE_DOM_OBJECT_TYPES(V) \ | |
343 VIDEO_NONNODE_TYPES(V) \ | |
344 WORKER_NONNODE_WRAPPER_TYPES(V) | |
345 | |
346 #if ENABLE(DATABASE) | |
347 #define DOM_OBJECT_DATABASE_TYPES(V) \ | |
348 V(DATABASE, Database) \ | |
349 V(SQLERROR, SQLError) \ | |
350 V(SQLRESULTSET, SQLResultSet) \ | |
351 V(SQLRESULTSETROWLIST, SQLResultSetRowList) \ | |
352 V(SQLTRANSACTION, SQLTransaction) | |
353 #else | |
354 #define DOM_OBJECT_DATABASE_TYPES(V) | |
355 #endif | |
356 | |
357 #if ENABLE(DOM_STORAGE) | |
358 #define DOM_OBJECT_STORAGE_TYPES(V) \ | |
359 V(STORAGE, Storage) \ | |
360 V(STORAGEEVENT, StorageEvent) | |
361 #else | |
362 #define DOM_OBJECT_STORAGE_TYPES(V) | |
363 #endif | |
364 | |
365 #define DOM_OBJECT_TYPES(V) \ | |
366 DOM_OBJECT_TYPES_1(V) \ | |
367 DOM_OBJECT_TYPES_2(V) \ | |
368 DOM_OBJECT_DATABASE_TYPES(V) \ | |
369 DOM_OBJECT_STORAGE_TYPES(V) | |
370 | |
371 #if ENABLE(SVG) | |
372 // SVG_OBJECT_TYPES are svg non-node, non-pod types. | |
373 #define SVG_OBJECT_TYPES(V) \ | |
374 V(SVGANGLE, SVGAngle) \ | |
375 V(SVGANIMATEDANGLE, SVGAnimatedAngle) \ | |
376 V(SVGANIMATEDBOOLEAN, SVGAnimatedBoolean) \ | |
377 V(SVGANIMATEDENUMERATION, SVGAnimatedEnumeration) \ | |
378 V(SVGANIMATEDINTEGER, SVGAnimatedInteger) \ | |
379 V(SVGANIMATEDLENGTH, SVGAnimatedLength) \ | |
380 V(SVGANIMATEDLENGTHLIST, SVGAnimatedLengthList) \ | |
381 V(SVGANIMATEDNUMBER, SVGAnimatedNumber) \ | |
382 V(SVGANIMATEDNUMBERLIST, SVGAnimatedNumberList) \ | |
383 V(SVGANIMATEDPRESERVEASPECTRATIO, SVGAnimatedPreserveAspectRatio) \ | |
384 V(SVGANIMATEDRECT, SVGAnimatedRect) \ | |
385 V(SVGANIMATEDSTRING, SVGAnimatedString) \ | |
386 V(SVGANIMATEDTRANSFORMLIST, SVGAnimatedTransformList) \ | |
387 V(SVGCOLOR, SVGColor) \ | |
388 V(SVGELEMENTINSTANCE, SVGElementInstance) \ | |
389 V(SVGELEMENTINSTANCELIST, SVGElementInstanceList) \ | |
390 V(SVGEXCEPTION, SVGException) \ | |
391 V(SVGLENGTHLIST, SVGLengthList) \ | |
392 V(SVGNUMBERLIST, SVGNumberList) \ | |
393 V(SVGPAINT, SVGPaint) \ | |
394 V(SVGPATHSEG, SVGPathSeg) \ | |
395 V(SVGPATHSEGARCABS, SVGPathSegArcAbs) \ | |
396 V(SVGPATHSEGARCREL, SVGPathSegArcRel) \ | |
397 V(SVGPATHSEGCLOSEPATH, SVGPathSegClosePath) \ | |
398 V(SVGPATHSEGCURVETOCUBICABS, SVGPathSegCurvetoCubicAbs) \ | |
399 V(SVGPATHSEGCURVETOCUBICREL, SVGPathSegCurvetoCubicRel) \ | |
400 V(SVGPATHSEGCURVETOCUBICSMOOTHABS, SVGPathSegCurvetoCubicSmoothAbs) \ | |
401 V(SVGPATHSEGCURVETOCUBICSMOOTHREL, SVGPathSegCurvetoCubicSmoothRel) \ | |
402 V(SVGPATHSEGCURVETOQUADRATICABS, SVGPathSegCurvetoQuadraticAbs) \ | |
403 V(SVGPATHSEGCURVETOQUADRATICREL, SVGPathSegCurvetoQuadraticRel) \ | |
404 V(SVGPATHSEGCURVETOQUADRATICSMOOTHABS, SVGPathSegCurvetoQuadraticSmoothAbs)\ | |
405 V(SVGPATHSEGCURVETOQUADRATICSMOOTHREL, SVGPathSegCurvetoQuadraticSmoothRel)\ | |
406 V(SVGPATHSEGLINETOABS, SVGPathSegLinetoAbs) \ | |
407 V(SVGPATHSEGLINETOHORIZONTALABS, SVGPathSegLinetoHorizontalAbs) \ | |
408 V(SVGPATHSEGLINETOHORIZONTALREL, SVGPathSegLinetoHorizontalRel) \ | |
409 V(SVGPATHSEGLINETOREL, SVGPathSegLinetoRel) \ | |
410 V(SVGPATHSEGLINETOVERTICALABS, SVGPathSegLinetoVerticalAbs) \ | |
411 V(SVGPATHSEGLINETOVERTICALREL, SVGPathSegLinetoVerticalRel) \ | |
412 V(SVGPATHSEGLIST, SVGPathSegList) \ | |
413 V(SVGPATHSEGMOVETOABS, SVGPathSegMovetoAbs) \ | |
414 V(SVGPATHSEGMOVETOREL, SVGPathSegMovetoRel) \ | |
415 V(SVGPOINTLIST, SVGPointList) \ | |
416 V(SVGPRESERVEASPECTRATIO, SVGPreserveAspectRatio) \ | |
417 V(SVGRENDERINGINTENT, SVGRenderingIntent) \ | |
418 V(SVGSTRINGLIST, SVGStringList) \ | |
419 V(SVGTRANSFORMLIST, SVGTransformList) \ | |
420 V(SVGUNITTYPES, SVGUnitTypes) \ | |
421 V(SVGZOOMEVENT, SVGZoomEvent) | |
422 | |
423 // SVG POD types should list all types whose IDL has PODType declaration. | |
424 #define SVG_POD_TYPES(V) \ | |
425 V(SVGLENGTH, SVGLength) \ | |
426 V(SVGTRANSFORM, SVGTransform) \ | |
427 V(SVGMATRIX, SVGMatrix) \ | |
428 V(SVGNUMBER, SVGNumber) \ | |
429 V(SVGPOINT, SVGPoint) \ | |
430 V(SVGRECT, SVGRect) | |
431 | |
432 // POD types can have different implementation names, see CodeGenerateV8.pm. | |
433 #define SVG_POD_NATIVE_TYPES(V) \ | |
434 V(SVGLENGTH, SVGLength) \ | |
435 V(SVGTRANSFORM, SVGTransform) \ | |
436 V(SVGMATRIX, TransformationMatrix) \ | |
437 V(SVGNUMBER, float) \ | |
438 V(SVGPOINT, FloatPoint) \ | |
439 V(SVGRECT, FloatRect) | |
440 | |
441 // Shouldn't generate code for these two types. | |
442 #define SVG_NO_WRAPPER_TYPES(V) \ | |
443 V(SVGURIREFERENCE, SVGURIReference) \ | |
444 V(SVGANIMATEDPOINTS, SVGAnimatedPoints) | |
445 | |
446 // SVG_NONNODE_TYPES are SVG non-node object types, pod typs and | |
447 // numerical types. | |
448 #define SVG_NONNODE_TYPES(V) \ | |
449 SVG_OBJECT_TYPES(V) \ | |
450 SVG_POD_TYPES(V) | |
451 #endif // SVG | |
452 | |
453 // EVENTTARGET, EVENTLISTENER, and NPOBJECT do not have V8 wrappers. | |
454 #define DOM_NO_WRAPPER_TYPES(V) \ | |
455 V(EVENTTARGET, EventTarget) \ | |
456 V(EVENTLISTENER, EventListener) \ | |
457 V(NPOBJECT, NPObject) | |
458 | |
459 #if ENABLE(SVG) | |
460 #define WRAPPER_TYPES(V) \ | |
461 DOM_NODE_TYPES(V) \ | |
462 DOM_OBJECT_TYPES(V) \ | |
463 SVG_NODE_TYPES(V) \ | |
464 SVG_NONNODE_TYPES(V) | |
465 #define NO_WRAPPER_TYPES(V) \ | |
466 DOM_NO_WRAPPER_TYPES(V) \ | |
467 SVG_NO_WRAPPER_TYPES(V) | |
468 #else // SVG | |
469 #define WRAPPER_TYPES(V) \ | |
470 DOM_NODE_TYPES(V) \ | |
471 DOM_OBJECT_TYPES(V) | |
472 #define NO_WRAPPER_TYPES(V) \ | |
473 DOM_NO_WRAPPER_TYPES(V) | |
474 #endif // SVG | |
475 | |
476 #define ALL_WRAPPER_TYPES(V) \ | |
477 WRAPPER_TYPES(V) \ | |
478 NO_WRAPPER_TYPES(V) | |
479 | |
480 class V8ClassIndex { | |
481 public: | |
482 // Type must start at non-negative numbers. See ToInt, FromInt. | |
483 enum V8WrapperType { | |
484 INVALID_CLASS_INDEX = 0, | |
485 #define DEFINE_ENUM(name, type) name, | |
486 ALL_WRAPPER_TYPES(DEFINE_ENUM) | |
487 #undef DEFINE_ENUM | |
488 CLASSINDEX_END, | |
489 WRAPPER_TYPE_COUNT = CLASSINDEX_END | |
490 }; | |
491 | |
492 static int ToInt(V8WrapperType type) { return static_cast<int>(type); } | |
493 | |
494 static V8WrapperType FromInt(int v) { | |
495 ASSERT(INVALID_CLASS_INDEX <= v && v < CLASSINDEX_END); | |
496 return static_cast<V8WrapperType>(v); | |
497 } | |
498 | |
499 static FunctionTemplateFactory GetFactory(V8WrapperType type); | |
500 // Returns a field to be used as cache for the template for the given type | |
501 static v8::Persistent<v8::FunctionTemplate>* GetCache(V8WrapperType type); | |
502 }; | |
503 | |
504 } | |
505 | |
506 #endif // V8_INDEX_H__ | |
OLD | NEW |