WebCore:
[WebKit-https.git] / WebKit / DOM.subproj / DOMCore.h
1 /*
2  * Copyright (C) 2004 Apple Computer, Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 //=========================================================================
27 //=========================================================================
28 //=========================================================================
29
30 // Important Note:
31 // Though this file appears as an exported header from WebKit, the
32 // version you should edit is in WebCore. The WebKit version is copied
33 // to WebKit during the build process.
34
35 //=========================================================================
36 //=========================================================================
37 //=========================================================================
38
39 #import <Foundation/Foundation.h>
40
41 @class DOMDocument;
42 @class DOMDocumentType;
43 @class DOMElement;
44 @class DOMNamedNodeMap;
45 @class DOMNodeList;
46
47 typedef struct DOMObjectInternal DOMObjectInternal;
48
49 @interface DOMObject : NSObject <NSCopying>
50 {
51     DOMObjectInternal *_internal;
52 }
53 @end
54
55 typedef unsigned long long DOMTimeStamp;
56
57 extern NSString * const DOMException;
58
59 enum {
60     //
61     // DOM exception codes
62     //
63     DOM_INDEX_SIZE_ERR                = 1,
64     DOM_DOMSTRING_SIZE_ERR            = 2,
65     DOM_HIERARCHY_REQUEST_ERR         = 3,
66     DOM_WRONG_DOCUMENT_ERR            = 4,
67     DOM_INVALID_CHARACTER_ERR         = 5,
68     DOM_NO_DATA_ALLOWED_ERR           = 6,
69     DOM_NO_MODIFICATION_ALLOWED_ERR   = 7,
70     DOM_NOT_FOUND_ERR                 = 8,
71     DOM_NOT_SUPPORTED_ERR             = 9,
72     DOM_INUSE_ATTRIBUTE_ERR           = 10,
73     DOM_INVALID_STATE_ERR             = 11,
74     DOM_SYNTAX_ERR                    = 12,
75     DOM_INVALID_MODIFICATION_ERR      = 13,
76     DOM_NAMESPACE_ERR                 = 14,
77     DOM_INVALID_ACCESS_ERR            = 15,
78 };
79
80 @interface DOMImplementation : DOMObject
81 - (BOOL)hasFeature:(NSString *)feature :(NSString *)version;
82 - (DOMDocumentType *)createDocumentType:(NSString *)qualifiedName :(NSString *)publicId :(NSString *)systemId;
83 - (DOMDocument *)createDocument:(NSString *)namespaceURI :(NSString *)qualifiedName :(DOMDocumentType *)doctype;
84 @end
85
86 enum {
87     //
88     // DOM node types
89     //
90     DOM_ELEMENT_NODE                  = 1,
91     DOM_ATTRIBUTE_NODE                = 2,
92     DOM_TEXT_NODE                     = 3,
93     DOM_CDATA_SECTION_NODE            = 4,
94     DOM_ENTITY_REFERENCE_NODE         = 5,
95     DOM_ENTITY_NODE                   = 6,
96     DOM_PROCESSING_INSTRUCTION_NODE   = 7,
97     DOM_COMMENT_NODE                  = 8,
98     DOM_DOCUMENT_NODE                 = 9,
99     DOM_DOCUMENT_TYPE_NODE            = 10,
100     DOM_DOCUMENT_FRAGMENT_NODE        = 11,
101     DOM_NOTATION_NODE                 = 12,
102 };
103
104 @interface DOMNode : DOMObject
105 - (NSString *)nodeName;
106 - (NSString *)nodeValue;
107 - (void)setNodeValue:(NSString *)string;
108 - (unsigned short)nodeType;
109 - (DOMNode *)parentNode;
110 - (DOMNodeList *)childNodes;
111 - (DOMNode *)firstChild;
112 - (DOMNode *)lastChild;
113 - (DOMNode *)previousSibling;
114 - (DOMNode *)nextSibling;
115 - (DOMNamedNodeMap *)attributes;
116 - (DOMDocument *)ownerDocument;
117 - (DOMNode *)insertBefore:(DOMNode *)newChild :(DOMNode *)refChild;
118 - (DOMNode *)replaceChild:(DOMNode *)newChild :(DOMNode *)oldChild;
119 - (DOMNode *)removeChild:(DOMNode *)oldChild;
120 - (DOMNode *)appendChild:(DOMNode *)newChild;
121 - (BOOL)hasChildNodes;
122 - (DOMNode *)cloneNode:(BOOL)deep;
123 - (void)normalize;
124 - (BOOL)isSupported:(NSString *)feature :(NSString *)version;
125 - (NSString *)namespaceURI;
126 - (NSString *)prefix;
127 - (void)setPrefix:(NSString *)prefix;
128 - (NSString *)localName;
129 - (BOOL)hasAttributes;
130 @end
131
132 @interface DOMNodeList : DOMObject
133 - (DOMNode *)item:(unsigned long)index;
134 - (unsigned long)length;
135 @end
136
137 @interface DOMNamedNodeMap : DOMObject
138 - (DOMNode *)getNamedItem:(NSString *)name;
139 - (DOMNode *)setNamedItem:(DOMNode *)arg;
140 - (DOMNode *)removeNamedItem:(NSString *)name;
141 - (DOMNode *)item:(unsigned long)index;
142 - (unsigned long)length;
143 - (DOMNode *)getNamedItemNS:(NSString *)namespaceURI :(NSString *)localName;
144 - (DOMNode *)setNamedItemNS:(DOMNode *)arg;
145 - (DOMNode *)removeNamedItemNS:(NSString *)namespaceURI :(NSString *)localName;
146 @end
147
148 @interface DOMCharacterData : DOMNode
149 - (NSString *)data;
150 - (void)setData:(NSString *)data;
151 - (unsigned long)length;
152 - (NSString *)substringData:(unsigned long)offset :(unsigned long)count;
153 - (void)appendData:(NSString *)arg;
154 - (void)insertData:(unsigned long)offset :(NSString *)arg;
155 - (void)deleteData:(unsigned long)offset :(unsigned long) count;
156 - (void)replaceData:(unsigned long)offset :(unsigned long)count :(NSString *)arg;
157 @end
158
159 @interface DOMAttr : DOMNode
160 - (NSString *)name;
161 - (BOOL)specified;
162 - (NSString *)value;
163 - (void)setValue:(NSString *)value;
164 - (DOMElement *)ownerElement;
165 @end
166
167 @interface DOMElement : DOMNode
168 - (NSString *)tagName;
169 - (NSString *)getAttribute:(NSString *)name;
170 - (void)setAttribute:(NSString *)name :(NSString *)value;
171 - (void)removeAttribute:(NSString *)name;
172 - (DOMAttr *)getAttributeNode:(NSString *)name;
173 - (DOMAttr *)setAttributeNode:(DOMAttr *)newAttr;
174 - (DOMAttr *)removeAttributeNode:(DOMAttr *)oldAttr;
175 - (DOMNodeList *)getElementsByTagName:(NSString *)name;
176 - (NSString *)getAttributeNS:(NSString *)namespaceURI :(NSString *)localName;
177 - (void)setAttributeNS:(NSString *)namespaceURI :(NSString *)qualifiedName :(NSString *)value;
178 - (void)removeAttributeNS:(NSString *)namespaceURI :(NSString *)localName;
179 - (DOMAttr *)getAttributeNodeNS:(NSString *)namespaceURI :(NSString *)localName;
180 - (DOMAttr *)setAttributeNodeNS:(DOMAttr *)newAttr;
181 - (DOMNodeList *)getElementsByTagNameNS:(NSString *)namespaceURI :(NSString *)localName;
182 - (BOOL)hasAttribute:(NSString *)name;
183 - (BOOL)hasAttributeNS:(NSString *)namespaceURI :(NSString *)localName;
184 @end
185
186 @interface DOMText : DOMCharacterData
187 - (DOMText *)splitText:(unsigned long)offset;
188 @end
189
190 @interface DOMComment : DOMCharacterData
191 @end
192
193 @interface DOMCDATASection : DOMText
194 @end
195
196 @interface DOMDocumentType : DOMNode
197 - (NSString *)name;
198 - (DOMNamedNodeMap *)entities;
199 - (DOMNamedNodeMap *)notations;
200 - (NSString *)publicId;
201 - (NSString *)systemId;
202 - (NSString *)internalSubset;
203 @end
204
205 @interface DOMNotation : DOMNode
206 - (NSString *)publicId;
207 - (NSString *)systemId;
208 @end
209
210 @interface DOMEntity : DOMNode
211 - (NSString *)publicId;
212 - (NSString *)systemId;
213 - (NSString *)notationName;
214 @end
215
216 @interface DOMEntityReference : DOMNode
217 @end
218
219 @interface DOMProcessingInstruction : DOMNode
220 - (NSString *)target;
221 - (NSString *)data;
222 - (void)setData:(NSString *)data;
223 @end
224
225 @interface DOMDocumentFragment : DOMNode
226 @end
227
228 @interface DOMDocument : DOMNode
229 - (DOMDocumentType *)doctype;
230 - (DOMImplementation *)implementation;
231 - (DOMElement *)documentElement;
232 - (DOMElement *)createElement:(NSString *)tagName;
233 - (DOMDocumentFragment *)createDocumentFragment;
234 - (DOMText *)createTextNode:(NSString *)data;
235 - (DOMComment *)createComment:(NSString *)data;
236 - (DOMCDATASection *)createCDATASection:(NSString *)data;
237 - (DOMProcessingInstruction *)createProcessingInstruction:(NSString *)target :(NSString *)data;
238 - (DOMAttr *)createAttribute:(NSString *)name;
239 - (DOMEntityReference *)createEntityReference:(NSString *)name;
240 - (DOMNodeList *)getElementsByTagName:(NSString *)tagname;
241 - (DOMNode *)importNode:(DOMNode *)importedNode :(BOOL)deep;
242 - (DOMElement *)createElementNS:(NSString *)namespaceURI :(NSString *)qualifiedName;
243 - (DOMAttr *)createAttributeNS:(NSString *)namespaceURI :(NSString *)qualifiedName;
244 - (DOMNodeList *)getElementsByTagNameNS:(NSString *)namespaceURI :(NSString *)localName;
245 - (DOMElement *)getElementById:(NSString *)elementId;
246 @end