Reviewed by Tim H.
[WebKit-https.git] / WebCore / bindings / objc / DOMInternal.h
1 /*
2  * Copyright (C) 2004-2006 Apple Computer, Inc.  All rights reserved.
3  * Copyright (C) 2006 James G. Speth (speth@end.com)
4  * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
26  */
27
28 #import "DOM.h"
29
30 #import "Color.h"
31 #import "DOMAbstractView.h"
32 #import "DOMCSSPrimitiveValue.h"
33 #import "DOMCSSRule.h"
34 #import "DOMCSSStyleSheet.h"
35 #import "DOMCSSValue.h"
36 #import "DOMEvents.h"
37 #import "DOMHTMLOptionElement.h"
38 #import "DOMNode.h"
39 #import "DOMObject.h"
40 #import "DOMRGBColor.h"
41 #import "DOMStyleSheet.h"
42
43 #ifdef XPATH_SUPPORT
44 #import "DOMXPathNSResolver.h"
45 #endif // XPATH_SUPPORT
46
47 // Auto-generated internal interfaces
48 #import "DOMAttrInternal.h"
49 #import "DOMCDATASectionInternal.h"
50 #import "DOMCSSRuleListInternal.h"
51 #import "DOMCSSStyleDeclarationInternal.h"
52 #import "DOMCharacterDataInternal.h"
53 #import "DOMCommentInternal.h"
54 #import "DOMCounterInternal.h"
55 #import "DOMDOMImplementationInternal.h"
56 #import "DOMDocumentFragmentInternal.h"
57 #import "DOMDocumentInternal.h"
58 #import "DOMDocumentTypeInternal.h"
59 #import "DOMElementInternal.h"
60 #import "DOMEntityInternal.h"
61 #import "DOMEntityReferenceInternal.h"
62 #import "DOMHTMLAnchorElementInternal.h"
63 #import "DOMHTMLAreaElementInternal.h"
64 #import "DOMHTMLBRElementInternal.h"
65 #import "DOMHTMLBaseElementInternal.h"
66 #import "DOMHTMLBaseFontElementInternal.h"
67 #import "DOMHTMLBodyElementInternal.h"
68 #import "DOMHTMLButtonElementInternal.h"
69 #import "DOMHTMLCollectionInternal.h"
70 #import "DOMHTMLDListElementInternal.h"
71 #import "DOMHTMLDirectoryElementInternal.h"
72 #import "DOMHTMLDivElementInternal.h"
73 #import "DOMHTMLDocumentInternal.h"
74 #import "DOMHTMLElementInternal.h"
75 #import "DOMHTMLFieldSetElementInternal.h"
76 #import "DOMHTMLFontElementInternal.h"
77 #import "DOMHTMLFormElementInternal.h"
78 #import "DOMHTMLFrameElementInternal.h"
79 #import "DOMHTMLFrameSetElementInternal.h"
80 #import "DOMHTMLHRElementInternal.h"
81 #import "DOMHTMLHeadElementInternal.h"
82 #import "DOMHTMLHeadingElementInternal.h"
83 #import "DOMHTMLHtmlElementInternal.h"
84 #import "DOMHTMLIFrameElementInternal.h"
85 #import "DOMHTMLImageElementInternal.h"
86 #import "DOMHTMLInputElementInternal.h"
87 #import "DOMHTMLIsIndexElementInternal.h"
88 #import "DOMHTMLLIElementInternal.h"
89 #import "DOMHTMLLabelElementInternal.h"
90 #import "DOMHTMLLegendElementInternal.h"
91 #import "DOMHTMLLinkElementInternal.h"
92 #import "DOMHTMLMapElementInternal.h"
93 #import "DOMHTMLMenuElementInternal.h"
94 #import "DOMHTMLMetaElementInternal.h"
95 #import "DOMHTMLModElementInternal.h"
96 #import "DOMHTMLOListElementInternal.h"
97 #import "DOMHTMLObjectElementInternal.h"
98 #import "DOMHTMLOptGroupElementInternal.h"
99 #import "DOMHTMLOptionsCollectionInternal.h"
100 #import "DOMHTMLParagraphElementInternal.h"
101 #import "DOMHTMLParamElementInternal.h"
102 #import "DOMHTMLPreElementInternal.h"
103 #import "DOMHTMLQuoteElementInternal.h"
104 #import "DOMHTMLScriptElementInternal.h"
105 #import "DOMHTMLSelectElementInternal.h"
106 #import "DOMHTMLStyleElementInternal.h"
107 #import "DOMHTMLTableCaptionElementInternal.h"
108 #import "DOMHTMLTableCellElementInternal.h"
109 #import "DOMHTMLTableColElementInternal.h"
110 #import "DOMHTMLTableElementInternal.h"
111 #import "DOMHTMLTableRowElementInternal.h"
112 #import "DOMHTMLTableSectionElementInternal.h"
113 #import "DOMHTMLTextAreaElementInternal.h"
114 #import "DOMHTMLTitleElementInternal.h"
115 #import "DOMHTMLUListElementInternal.h"
116 #import "DOMMediaListInternal.h"
117 #import "DOMNamedNodeMapInternal.h"
118 #import "DOMNodeListInternal.h"
119 #import "DOMNotationInternal.h"
120 #import "DOMProcessingInstructionInternal.h"
121 #import "DOMRectInternal.h"
122 #import "DOMStyleSheetListInternal.h"
123 #import "DOMTextInternal.h"
124
125 #ifdef XPATH_SUPPORT
126 #import "DOMXPathExpressionInternal.h"
127 #import "DOMXPathResultInternal.h"
128 #endif // XPATH_SUPPORT
129
130 namespace WebCore {
131     class CSSPrimitiveValue;
132     class CSSRule;
133     class CSSStyleSheet;
134     class CSSValue;
135     class DOMWindow;
136     class Event;
137     class HTMLOptionElement;
138     class Node;
139     class NodeFilter;
140     class NodeIterator;
141     class Range;
142     class StyleSheet;
143     class TreeWalker;
144
145 #ifdef XPATH_SUPPORT
146     class XPathNSResolver;
147 #endif // XPATH_SUPPORT
148
149     typedef int ExceptionCode;
150     typedef DOMWindow AbstractView;
151 }
152
153 // Core Internal Interfaces
154
155 @interface DOMObject (WebCoreInternal)
156 - (id)_init;
157 @end
158
159 @interface DOMNode (WebCoreInternal)
160 + (DOMNode *)_nodeWith:(WebCore::Node *)impl;
161 - (WebCore::Node *)_node;
162 @end
163
164 // HTML Internal Interfaces
165
166 @interface DOMHTMLOptionElement (WebCoreInternal)
167 + (DOMHTMLOptionElement *)_HTMLOptionElementWith:(WebCore::HTMLOptionElement *)impl;
168 - (WebCore::HTMLOptionElement *)_HTMLOptionElement;
169 @end
170
171 // CSS Internal Interfaces
172
173 @interface DOMCSSRule (WebCoreInternal)
174 + (DOMCSSRule *)_CSSRuleWith:(WebCore::CSSRule *)impl;
175 @end
176
177 @interface DOMCSSValue (WebCoreInternal)
178 + (DOMCSSValue *)_CSSValueWith:(WebCore::CSSValue *)impl;
179 @end
180
181 @interface DOMCSSPrimitiveValue (WebCoreInternal)
182 - (WebCore::CSSPrimitiveValue *)_CSSPrimitiveValue;
183 + (DOMCSSPrimitiveValue *)_CSSPrimitiveValueWith:(WebCore::CSSValue *)impl;
184 @end
185
186 @interface DOMRGBColor (WebCoreInternal)
187 + (DOMRGBColor *)_RGBColorWithRGB:(WebCore::RGBA32)value;
188 @end
189
190 @interface DOMCSSStyleSheet (WebCoreInternal)
191 + (DOMCSSStyleSheet *)_CSSStyleSheetWith:(WebCore::CSSStyleSheet *)impl;
192 @end
193
194 // StyleSheets Internal Interfaces
195
196 @interface DOMStyleSheet (WebCoreInternal)
197 + (DOMStyleSheet *)_styleSheetWith:(WebCore::StyleSheet *)impl;
198 @end
199
200 // Events Internal Interfaces
201
202 @interface DOMEvent (WebCoreInternal)
203 + (DOMEvent *)_eventWith:(WebCore::Event *)impl;
204 - (WebCore::Event *)_event;
205 @end
206
207 // Range Internal Interfaces
208
209 @interface DOMRange (WebCoreInternal)
210 + (DOMRange *)_rangeWith:(WebCore::Range *)impl;
211 - (WebCore::Range *)_range;
212 @end
213
214 // Traversal Internal Interfaces
215
216 @interface DOMNodeIterator (WebCoreInternal)
217 + (DOMNodeIterator *)_nodeIteratorWith:(WebCore::NodeIterator *)impl filter:(id <DOMNodeFilter>)filter;
218 @end
219
220 @interface DOMTreeWalker (WebCoreInternal)
221 + (DOMTreeWalker *)_treeWalkerWith:(WebCore::TreeWalker *)impl filter:(id <DOMNodeFilter>)filter;
222 @end
223
224 @interface DOMNodeFilter : DOMObject <DOMNodeFilter>
225 + (DOMNodeFilter *)_nodeFilterWith:(WebCore::NodeFilter *)impl;
226 @end
227
228 // Views Internal Interfaces
229
230 @interface DOMAbstractView (WebCoreInternal)
231 + (DOMAbstractView *)_abstractViewWith:(WebCore::AbstractView *)impl;
232 - (WebCore::AbstractView *)_abstractView;
233 @end
234
235 #ifdef XPATH_SUPPORT
236 // XPath Internal Interfaces
237
238 @interface DOMNativeXPathNSResolver : DOMObject <DOMXPathNSResolver>
239 + (DOMNativeXPathNSResolver *)_xpathNSResolverWith:(WebCore::XPathNSResolver *)impl;
240 - (WebCore::XPathNSResolver *)_xpathNSResolver;
241 @end
242
243 #endif // XPATH_SUPPORT
244
245
246 // Helper functions for DOM wrappers and gluing to Objective-C
247
248 NSObject* getDOMWrapper(DOMObjectInternal*);
249 void addDOMWrapper(NSObject* wrapper, DOMObjectInternal*);
250
251 template <class Source> inline id getDOMWrapper(Source impl) { return getDOMWrapper(reinterpret_cast<DOMObjectInternal*>(impl)); }
252 template <class Source> inline void addDOMWrapper(NSObject* wrapper, Source impl) { addDOMWrapper(wrapper, reinterpret_cast<DOMObjectInternal*>(impl)); }
253 void removeDOMWrapper(DOMObjectInternal*);
254
255 void raiseDOMException(WebCore::ExceptionCode);
256
257 inline void raiseOnDOMError(WebCore::ExceptionCode ec) 
258 {
259     if (ec) 
260         raiseDOMException(ec);
261 }