1 /* This file is part of the KDE libraries
2     Copyright (C) 2005, 2006 Ian Reinhart Geiser <geiseri@kde.org>
3     Copyright (C) 2005, 2006 Matt Broadstone <mbroadst@gmail.com>
4     Copyright (C) 2005, 2006 Richard J. Moore <rich@kde.org>
5     Copyright (C) 2005, 2006 Erik L. Bunce <kde@bunce.us>
6 
7     This library is free software; you can redistribute it and/or
8     modify it under the terms of the GNU Library General Public
9     License as published by the Free Software Foundation; either
10     version 2 of the License, or (at your option) any later version.
11 
12     This library is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15     Library General Public License for more details.
16 
17     You should have received a copy of the GNU Library General Public License
18     along with this library; see the file COPYING.LIB.  If not, write to
19     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20     Boston, MA 02110-1301, USA.
21 */
22 #include "dom.h"
23 
24 #include <QDomAttr>
25 #include <QDebug>
26 
27 using namespace KJSEmbed;
28 
29 const KJS::ClassInfo DomNodeBinding::info = { "QDomNode", &ValueBinding::info, nullptr, nullptr };
DomNodeBinding(KJS::ExecState * exec,const QDomNode & value)30 DomNodeBinding::DomNodeBinding(KJS::ExecState *exec, const QDomNode &value)
31     : ValueBinding(exec, "QDomNode", value)
32 {
33     StaticBinding::publish(exec, this, DomNode::methods());
34 }
35 
36 namespace DomNodeNS
37 {
38 START_VALUE_METHOD(nodeType, QDomNode)
39 result = KJS::jsNumber((int)value.nodeType());
40 END_VALUE_METHOD
41 
42 START_VALUE_METHOD(nodeName, QDomNode)
43 result = KJS::jsString(value.nodeName());
44 END_VALUE_METHOD
45 
46 START_VALUE_METHOD(nodeValue, QDomNode)
47 result = KJS::jsString(value.nodeValue());
48 END_VALUE_METHOD
49 
50 START_VALUE_METHOD(appendChild, QDomNode)
51 QDomNode newNode = KJSEmbed::extractValue<QDomNode>(exec, args, 0);
52 QDomNode node = value.appendChild(newNode);
53 result = KJSEmbed::createValue(exec, "QDomNode", node);
54 END_VALUE_METHOD
55 
56 START_VALUE_METHOD(attributes, QDomNode)
57 QDomNamedNodeMap map = value.attributes();
58 result = KJSEmbed::createValue(exec, "QDomNamedNodeMap", map);
59 END_VALUE_METHOD
60 
61 START_VALUE_METHOD(childNodes, QDomNode)
62 QDomNodeList nodes = value.childNodes();
63 result = KJSEmbed::createValue(exec, "QDomNodeList", nodes);
64 END_VALUE_METHOD
65 
66 START_VALUE_METHOD(clear, QDomNode)
67 value.clear();
68 END_VALUE_METHOD
69 
70 START_VALUE_METHOD(cloneNode, QDomNode)
71 bool deep = KJSEmbed::extractBool(exec, args, 0, true);
72 QDomNode node = value.cloneNode(deep);
73 result = KJSEmbed::createValue(exec, "QDomNode", node);
74 END_VALUE_METHOD
75 
76 START_VALUE_METHOD(firstChild, QDomNode)
77 QDomNode node = value.firstChild();
78 result = KJSEmbed::createValue(exec, "QDomNode", node);
79 END_VALUE_METHOD
80 
81 START_VALUE_METHOD(firstChildElement, QDomNode)
82 QString name = KJSEmbed::extractQString(exec, args, 0);
83 QDomElement node = value.firstChildElement(name);
84 result = KJSEmbed::createValue(exec, "QDomElement", node);
85 END_VALUE_METHOD
86 
87 START_VALUE_METHOD(hasAttributes, QDomNode)
88 result = KJS::jsBoolean(value.hasAttributes());
89 END_VALUE_METHOD
90 
91 START_VALUE_METHOD(hasChildNodes, QDomNode)
92 result = KJS::jsBoolean(value.hasChildNodes());
93 END_VALUE_METHOD
94 
95 START_VALUE_METHOD(insertBefore, QDomNode)
96 QDomNode first = KJSEmbed::extractValue<QDomNode>(exec, args, 0);
97 QDomNode second = KJSEmbed::extractValue<QDomNode>(exec, args, 1);
98 QDomNode node = value.insertBefore(first, second);
99 result = KJSEmbed::createValue(exec, "QDomNode", node);
100 END_VALUE_METHOD
101 
102 START_VALUE_METHOD(insertAfter, QDomNode)
103 QDomNode first = KJSEmbed::extractValue<QDomNode>(exec, args, 0);
104 QDomNode second = KJSEmbed::extractValue<QDomNode>(exec, args, 1);
105 QDomNode node = value.insertAfter(first, second);
106 result = KJSEmbed::createValue(exec, "QDomNode", node);
107 END_VALUE_METHOD
108 
109 START_VALUE_METHOD(isAttr, QDomNode)
110 result = KJS::jsBoolean(value.isAttr());
111 END_VALUE_METHOD
112 
113 START_VALUE_METHOD(isCDATASection, QDomNode)
114 result = KJS::jsBoolean(value.isCDATASection());
115 END_VALUE_METHOD
116 
117 START_VALUE_METHOD(isCharacterData, QDomNode)
118 result = KJS::jsBoolean(value.isCharacterData());
119 END_VALUE_METHOD
120 
121 START_VALUE_METHOD(isComment, QDomNode)
122 result = KJS::jsBoolean(value.isComment());
123 END_VALUE_METHOD
124 
125 START_VALUE_METHOD(isDocument, QDomNode)
126 result = KJS::jsBoolean(value.isDocument());
127 END_VALUE_METHOD
128 
129 START_VALUE_METHOD(isDocumentFragment, QDomNode)
130 result = KJS::jsBoolean(value.isDocumentFragment());
131 END_VALUE_METHOD
132 
133 START_VALUE_METHOD(isDocumentType, QDomNode)
134 result = KJS::jsBoolean(value.isDocumentType());
135 END_VALUE_METHOD
136 
137 START_VALUE_METHOD(isElement, QDomNode)
138 result = KJS::jsBoolean(value.isElement());
139 END_VALUE_METHOD
140 
141 START_VALUE_METHOD(isEntity, QDomNode)
142 result = KJS::jsBoolean(value.isEntity());
143 END_VALUE_METHOD
144 
145 START_VALUE_METHOD(isEntityReference, QDomNode)
146 result = KJS::jsBoolean(value.isEntityReference());
147 END_VALUE_METHOD
148 
149 START_VALUE_METHOD(isNotation, QDomNode)
150 result = KJS::jsBoolean(value.isNotation());
151 END_VALUE_METHOD
152 
153 START_VALUE_METHOD(isNull, QDomNode)
154 result = KJS::jsBoolean(value.isNull());
155 END_VALUE_METHOD
156 
157 START_VALUE_METHOD(isProcessingInstruction, QDomNode)
158 result = KJS::jsBoolean(value.isProcessingInstruction());
159 END_VALUE_METHOD
160 
161 START_VALUE_METHOD(isSupported, QDomNode)
162 QString arg0 = KJSEmbed::extractQString(exec, args, 0);
163 QString arg1 = KJSEmbed::extractQString(exec, args, 1);
164 result = KJS::jsBoolean(value.isSupported(arg0, arg1));
165 END_VALUE_METHOD
166 
167 START_VALUE_METHOD(isText, QDomNode)
168 result = KJS::jsBoolean(value.isText());
169 END_VALUE_METHOD
170 
171 START_VALUE_METHOD(lastChild, QDomNode)
172 QDomNode node = value.lastChild();
173 result = KJSEmbed::createValue(exec, "QDomNode", node);
174 END_VALUE_METHOD
175 
176 START_VALUE_METHOD(lastChildElement, QDomNode)
177 QString arg0 = KJSEmbed::extractQString(exec, args, 0);
178 QDomElement node = value.lastChildElement(arg0);
179 result = KJSEmbed::createValue(exec, "QDomElement", node);
180 END_VALUE_METHOD
181 
182 START_VALUE_METHOD(localName, QDomNode)
183 result = KJS::jsString(value.localName());
184 END_VALUE_METHOD
185 
186 START_VALUE_METHOD(namedItem, QDomNode)
187 QString arg0 = KJSEmbed::extractQString(exec, args, 0);
188 QDomNode node = value.namedItem(arg0);
189 result = KJSEmbed::createValue(exec, "QDomNode", node);
190 END_VALUE_METHOD
191 
192 START_VALUE_METHOD(namespaceURI, QDomNode)
193 result = KJS::jsString(value.namespaceURI());
194 END_VALUE_METHOD
195 
196 START_VALUE_METHOD(nextSibling, QDomNode)
197 QDomNode node = value.nextSibling();
198 result = KJSEmbed::createValue(exec, "QDomNode", node);
199 END_VALUE_METHOD
200 
201 START_VALUE_METHOD(nextSiblingElement, QDomNode)
202 QString arg0 = KJSEmbed::extractQString(exec, args, 0);
203 QDomElement node = value.nextSiblingElement(arg0);
204 result = KJSEmbed::createValue(exec, "QDomElement", node);
205 END_VALUE_METHOD
206 
207 START_VALUE_METHOD(normalize, QDomNode)
208 value.normalize();
209 END_VALUE_METHOD
210 
211 START_VALUE_METHOD(ownerDocument, QDomNode)
212 QDomDocument doc = value.ownerDocument();
213 result = KJSEmbed::createValue(exec, "QDomDocument", doc);
214 END_VALUE_METHOD
215 
216 START_VALUE_METHOD(parentNode, QDomNode)
217 QDomNode parent = value.parentNode();
218 result = KJSEmbed::createValue(exec, "QDomNode", parent);
219 END_VALUE_METHOD
220 
221 START_VALUE_METHOD(prefix, QDomNode)
222 result = KJS::jsString(value.prefix());
223 END_VALUE_METHOD
224 
225 START_VALUE_METHOD(previousSibling, QDomNode)
226 QDomNode node = value.previousSibling();
227 result = KJSEmbed::createValue(exec, "QDomNode", node);
228 END_VALUE_METHOD
229 
230 START_VALUE_METHOD(previousSiblingElement, QDomNode)
231 QString arg0 = KJSEmbed::extractQString(exec, args, 0);
232 QDomNode node = value.previousSiblingElement(arg0);
233 result = KJSEmbed::createValue(exec, "QDomNode", node);
234 END_VALUE_METHOD
235 
236 START_VALUE_METHOD(removeChild, QDomNode)
237 QDomNode arg0 = KJSEmbed::extractValue<QDomNode>(exec, args, 0);
238 QDomNode node = value.removeChild(arg0);
239 result = KJSEmbed::createValue(exec, "QDomNode", node);
240 END_VALUE_METHOD
241 
242 START_VALUE_METHOD(replaceChild, QDomNode)
243 QDomNode arg0 = KJSEmbed::extractValue<QDomNode>(exec, args, 0);
244 QDomNode arg1 = KJSEmbed::extractValue<QDomNode>(exec, args, 1);
245 QDomNode node = value.replaceChild(arg0, arg1);
246 result = KJSEmbed::createValue(exec, "QDomNode", node);
247 END_VALUE_METHOD
248 
249 START_VALUE_METHOD(setPrefix, QDomNode)
250 QString arg0 = KJSEmbed::extractQString(exec, args, 0);
251 value.setPrefix(arg0);
252 END_VALUE_METHOD
253 
254 START_VALUE_METHOD(setNodeValue, QDomNode)
255 QString arg0 = KJSEmbed::extractQString(exec, args, 0);
256 value.setNodeValue(arg0);
257 END_VALUE_METHOD
258 
259 START_VALUE_METHOD(toAttr, QDomNode)
260 QDomAttr attr = value.toAttr();
261 result = KJSEmbed::createValue(exec, "QDomAttr", attr);
262 END_VALUE_METHOD
263 
264 START_VALUE_METHOD(toElement, QDomNode)
265 QDomElement elem = value.toElement();
266 result = KJSEmbed::createValue(exec, "QDomElement", elem);
267 END_VALUE_METHOD
268 }
269 
START_METHOD_LUT(DomNode)270 START_METHOD_LUT(DomNode)
271 {"appendChild", 1, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::appendChild},
272 {"attributes", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::attributes},
273 {"childNodes", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::childNodes},
274 {"clear", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::clear},
275 {"cloneNode", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::cloneNode},
276 {"firstChild", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::firstChild},
277 {"firstChildElement", 1, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::firstChildElement},
278 {"hasAttributes", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::hasAttributes},
279 {"hasChildNodes", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::hasChildNodes},
280 {"insertBefore", 2, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::insertBefore},
281 {"insertAfter", 2, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::insertAfter},
282 {"isAttr", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isAttr},
283 {"isCDATASection", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isCDATASection},
284 {"isCharacterData", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isCharacterData},
285 {"isComment", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isComment},
286 {"isDocument", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isDocument},
287 {"isDocumentFragment", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isDocumentFragment},
288 {"isDocumentType", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isDocumentType},
289 {"isElement", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isElement},
290 {"isEntity", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isEntity},
291 {"isEntityReference", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isEntityReference},
292 {"isNotation", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isNotation},
293 {"isNull", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isNull},
294 {"isProcessingInstruction", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isProcessingInstruction},
295 {"isSupported", 2, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isSupported},
296 {"isText", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::isText},
297 {"lastChild", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::lastChild},
298 {"lastChildElement", 1, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::lastChildElement},
299 {"localName", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::localName},
300 {"namedItem", 1, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::namedItem},
301 {"namespaceURI", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::namespaceURI},
302 {"nextSibling", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::nextSibling},
303 {"nextSiblingElement", 1, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::nextSiblingElement},
304 {"nodeType", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::nodeType},
305 {"nodeName", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::nodeName},
306 {"nodeValue", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::nodeValue},
307 {"normalize", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::normalize},
308 {"ownerDocument", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::ownerDocument},
309 {"parentNode", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::parentNode},
310 {"prefix", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::prefix},
311 {"previousSibling", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::previousSibling},
312 {"previousSiblingElement", 1, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::previousSiblingElement},
313 {"removeChild", 1, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::removeChild},
314 {"replaceChild", 2, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::replaceChild},
315 {"setPrefix", 1, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::setPrefix},
316 {"setNodeValue", 2, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::setNodeValue},
317 {"toAttr", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::toAttr},
318 {"toElement", 0, KJS::DontDelete | KJS::ReadOnly, &DomNodeNS::toElement}
319 END_METHOD_LUT
320 
START_ENUM_LUT(DomNode)321 START_ENUM_LUT(DomNode)
322 {"ElementNode", QDomNode::ElementNode},
323 {"AttributeNode", QDomNode::AttributeNode},
324 {"TextNode", QDomNode::TextNode},
325 {"CDATASectionNode", QDomNode::CDATASectionNode},
326 {"EntityReferenceNode", QDomNode::EntityReferenceNode},
327 {"EntityNode", QDomNode::EntityNode},
328 {"ProcessingInstructionNode", QDomNode::ProcessingInstructionNode},
329 {"CommentNode", QDomNode::CommentNode},
330 {"DocumentNode", QDomNode::DocumentNode},
331 {"DocumentTypeNode", QDomNode::DocumentTypeNode},
332 {"DocumentFragmentNode", QDomNode::DocumentFragmentNode},
333 {"NotationNode", QDomNode::NotationNode},
334 {"BaseNode", QDomNode::BaseNode},
335 {"CharacterDataNode", QDomNode::CharacterDataNode}
336 END_ENUM_LUT
337 
338 NO_STATICS(DomNode)
339 
340 START_CTOR(DomNode, QDomNode, 0)
341 return new KJSEmbed::DomNodeBinding(exec, QDomNode());
342 END_CTOR
343 
344 const KJS::ClassInfo DomDocumentBinding::info = { "QDomDocument", &ValueBinding::info, nullptr, nullptr };
DomDocumentBinding(KJS::ExecState * exec,const QDomDocument & value)345 DomDocumentBinding::DomDocumentBinding(KJS::ExecState *exec, const QDomDocument &value)
346     : ValueBinding(exec, "QDomDocument", value)
347 {
348     StaticBinding::publish(exec, this, DomNode::methods());
349     StaticBinding::publish(exec, this, DomDocument::methods());
350 }
351 
352 namespace DomDocumentNS
353 {
354 QString parserErrorTemplate = "XML Parse error '%1' at %2,%3";
355 
356 START_VALUE_METHOD(setContent, QDomDocument)
357 QString xml = KJSEmbed::extractQString(exec, args, 0);
358 QString message;
359 int row = 0;
360 int col = 0;
361 bool success = value.setContent(xml, &message, &row, &col);
362 result = KJS::jsBoolean(success);
363 if (!success)
364 {
365     KJS::throwError(exec, KJS::SyntaxError, parserErrorTemplate.arg(message).arg(row).arg(col));
366 }
367 END_VALUE_METHOD
368 
369 START_VALUE_METHOD(toString, QDomDocument)
370 int indent = KJSEmbed::extractInt(exec, args, 0, 1);
371 result = KJS::jsString(value.toString(indent));
372 END_VALUE_METHOD
373 
374 START_VALUE_METHOD(documentElement, QDomDocument)
375 QDomElement elem = value.documentElement();
376 result = KJSEmbed::createValue(exec, "QDomElement", elem);
377 END_VALUE_METHOD
378 
379 START_VALUE_METHOD(elementById, QDomDocument)
380 QString id = KJSEmbed::extractQString(exec, args, 0);
381 QDomElement elem = value.elementById(id);
382 result = KJSEmbed::createValue(exec, "QDomElement", elem);
383 END_VALUE_METHOD
384 
385 START_VALUE_METHOD(createAttribute, QDomDocument)
386 QString name = KJSEmbed::extractQString(exec, args, 0);
387 QDomAttr attr = value.createAttribute(name);
388 result = KJSEmbed::createValue(exec, "QDomAttr", attr);
389 END_VALUE_METHOD
390 
391 START_VALUE_METHOD(createAttributeNS, QDomDocument)
392 QString nsURI = KJSEmbed::extractQString(exec, args, 0);
393 QString qName = KJSEmbed::extractQString(exec, args, 1);
394 QDomAttr attr = value.createAttributeNS(nsURI, qName);
395 result = KJSEmbed::createValue(exec, "QDomAttr", attr);
396 END_VALUE_METHOD
397 
398 START_VALUE_METHOD(createCDATASection, QDomDocument)
399 QString cdatatxt = KJSEmbed::extractQString(exec, args, 0);
400 QDomCDATASection  cdata = value.createCDATASection(cdatatxt);
401 result = KJSEmbed::createValue(exec, "QDomCDATASection", cdata);
402 END_VALUE_METHOD
403 
404 START_VALUE_METHOD(createComment, QDomDocument)
405 QString commenttxt = KJSEmbed::extractQString(exec, args, 0);
406 QDomComment comment = value.createComment(commenttxt);
407 result = KJSEmbed::createValue(exec, "QDomComment", comment);
408 END_VALUE_METHOD
409 
410 START_VALUE_METHOD(createDocumentFragment, QDomDocument)
411 QDomDocumentFragment fragment = value.createDocumentFragment();
412 result = KJSEmbed::createValue(exec, "QDomDocumentFragment", fragment);
413 END_VALUE_METHOD
414 
415 START_VALUE_METHOD(createElement, QDomDocument)
416 QString tagName = KJSEmbed::extractQString(exec, args, 0);
417 QDomElement elem = value.createElement(tagName);
418 result = KJSEmbed::createValue(exec, "QDomElement", elem);
419 END_VALUE_METHOD
420 
421 START_VALUE_METHOD(createElementNS, QDomDocument)
422 QString nsURI = KJSEmbed::extractQString(exec, args, 0);
423 QString qName = KJSEmbed::extractQString(exec, args, 1);
424 QDomElement elem = value.createElementNS(nsURI, qName);
425 result = KJSEmbed::createValue(exec, "QDomElement", elem);
426 END_VALUE_METHOD
427 
428 START_VALUE_METHOD(createEntityReference, QDomDocument)
429 QString name = KJSEmbed::extractQString(exec, args, 0);
430 QDomEntityReference ref = value.createEntityReference(name);
431 result = KJSEmbed::createValue(exec, "QDomEntityReference", ref);
432 END_VALUE_METHOD
433 
434 START_VALUE_METHOD(createProcessingInstruction, QDomDocument)
435 QString target = KJSEmbed::extractQString(exec, args, 0);
436 QString data = KJSEmbed::extractQString(exec, args, 1);
437 QDomProcessingInstruction inst = value.createProcessingInstruction(target, data);
438 result = KJSEmbed::createValue(exec, "QDomProcessingInstruction", inst);
439 END_VALUE_METHOD
440 
441 START_VALUE_METHOD(createTextNode, QDomDocument)
442 QString texttext = KJSEmbed::extractQString(exec, args, 0);
443 QDomText text = value.createTextNode(texttext);
444 result = KJSEmbed::createValue(exec, "QDomText", text);
445 END_VALUE_METHOD
446 
447 START_VALUE_METHOD(importNode, QDomDocument)
448 QDomNode import = KJSEmbed::extractValue<QDomNode>(exec, args, 0);
449 bool deep = KJSEmbed::extractBool(exec, args, 1);
450 QDomNode node = value.importNode(import, deep);
451 result = KJSEmbed::createValue(exec, "QDomNode",  node);
452 END_VALUE_METHOD
453 
454 }
455 
START_METHOD_LUT(DomDocument)456 START_METHOD_LUT(DomDocument)
457 {"setContent", 1, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::setContent},
458 {"toString", 0, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::toString},
459 {"documentElement", 0, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::documentElement},
460 {"elementById", 1, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::elementById},
461 {"createAttribute", 1, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::createAttribute },
462 {"createAttributeNS", 2, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::createAttributeNS },
463 {"createCDATASection", 0, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::createCDATASection},
464 {"createComment", 0, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::createComment},
465 {"createDocumentFragment", 0, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::createDocumentFragment},
466 {"createElement", 1, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::createElement},
467 {"createElementNS", 2, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::createElementNS},
468 {"createEntityReference", 1, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::createEntityReference},
469 {"createProcessingInstruction", 2, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::createProcessingInstruction},
470 {"createTextNode", 1, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::createTextNode},
471 {"importNode", 2, KJS::DontDelete | KJS::ReadOnly, &DomDocumentNS::importNode}
472 END_METHOD_LUT
473 
474 NO_ENUMS(DomDocument)
475 NO_STATICS(DomDocument)
476 
477 START_CTOR(DomDocument, QDomDocument, 1)
478 QString name = KJSEmbed::extractQString(exec, args, 0);
479 return new KJSEmbed::DomDocumentBinding(exec, QDomDocument(name));
480 END_CTOR
481 
482 const KJS::ClassInfo DomElementBinding::info = { "QDomElement", &ValueBinding::info, nullptr, nullptr };
DomElementBinding(KJS::ExecState * exec,const QDomElement & value)483 DomElementBinding::DomElementBinding(KJS::ExecState *exec, const QDomElement &value)
484     : ValueBinding(exec, "QDomElement", value)
485 {
486     StaticBinding::publish(exec, this, DomNode::methods());
487     StaticBinding::publish(exec, this, DomElement::methods());
488 }
489 
490 namespace DomElementNS
491 {
492 START_VALUE_METHOD(toString, QDomElement)
493 result = KJS::jsString(value.text());
494 END_VALUE_METHOD
495 
496 START_VALUE_METHOD(tagName, QDomElement)
497 result = KJS::jsString(value.tagName());
498 END_VALUE_METHOD
499 
500 START_VALUE_METHOD(setTagName, QDomElement)
501 QString tag = KJSEmbed::extractQString(exec, args, 0);
502 value.setTagName(tag);
503 END_VALUE_METHOD
504 
505 START_VALUE_METHOD(attribute, QDomElement)
506 QString tag = KJSEmbed::extractQString(exec, args, 0);
507 QString defaultValue = KJSEmbed::extractQString(exec, args, 1, QString());
508 result = KJS::jsString(value.attribute(tag, defaultValue));
509 END_VALUE_METHOD
510 
511 START_VALUE_METHOD(setAttribute, QDomElement)
512 QString tag = KJSEmbed::extractQString(exec, args, 0);
513 QString newValue = KJSEmbed::extractQString(exec, args, 1);
514 value.setAttribute(tag, newValue);
515 END_VALUE_METHOD
516 
517 START_VALUE_METHOD(hasAttribute, QDomElement)
518 QString attr = KJSEmbed::extractQString(exec, args, 0);
519 result = KJS::jsBoolean(value.hasAttribute(attr));
520 END_VALUE_METHOD
521 
522 START_VALUE_METHOD(removeAttribute, QDomElement)
523 QString attr = KJSEmbed::extractQString(exec, args, 0);
524 value.removeAttribute(attr);
525 END_VALUE_METHOD
526 
527 START_VALUE_METHOD(setAttributeNS, QDomElement)
528 QString ns = KJSEmbed::extractQString(exec, args, 0);
529 QString attr = KJSEmbed::extractQString(exec, args, 1);
530 QString val = KJSEmbed::extractQString(exec, args, 3);
531 value.setAttributeNS(ns, attr, val);
532 END_VALUE_METHOD
533 
534 START_VALUE_METHOD(attributeNS, QDomElement)
535 QString nsURI = KJSEmbed::extractQString(exec, args, 0);
536 QString localName = KJSEmbed::extractQString(exec, args, 1);
537 QString defValue = KJSEmbed::extractQString(exec, args, 1, QString());
538 result = KJS::jsString(value.attributeNS(nsURI, localName, defValue));
539 END_VALUE_METHOD
540 
541 START_VALUE_METHOD(hasAttributeNS, QDomElement)
542 QString ns = KJSEmbed::extractQString(exec, args, 0);
543 QString attr = KJSEmbed::extractQString(exec, args, 1);
544 result = KJS::jsBoolean(value.hasAttributeNS(ns, attr));
545 END_VALUE_METHOD
546 
547 START_VALUE_METHOD(removeAttributeNS, QDomElement)
548 QString ns = KJSEmbed::extractQString(exec, args, 0);
549 QString attr = KJSEmbed::extractQString(exec, args, 1);
550 value.removeAttributeNS(ns, attr);
551 END_VALUE_METHOD
552 
553 START_VALUE_METHOD(elementsByTagName, QDomElement)
554 QString name = KJSEmbed::extractQString(exec, args, 0);
555 QDomNodeList nodes = value.elementsByTagName(name);
556 result = KJSEmbed::createValue(exec, "QDomNodeList", nodes);
557 END_VALUE_METHOD
558 
559 START_VALUE_METHOD(elementsByTagNameNS, QDomElement)
560 QString ns = KJSEmbed::extractQString(exec, args, 0);
561 QString name = KJSEmbed::extractQString(exec, args, 1);
562 QDomNodeList nodes = value.elementsByTagNameNS(ns, name);
563 result = KJSEmbed::createValue(exec, "QDomNodeList", nodes);
564 END_VALUE_METHOD
565 
566 START_VALUE_METHOD(attributeNode, QDomElement)
567 QString name = KJSEmbed::extractQString(exec, args, 0);
568 QDomAttr attr = value.attributeNode(name);
569 result = KJSEmbed::createValue(exec, "QDomAttr", attr);
570 END_VALUE_METHOD
571 
572 START_VALUE_METHOD(attributeNodeNS, QDomElement)
573 QString ns = KJSEmbed::extractQString(exec, args, 0);
574 QString name = KJSEmbed::extractQString(exec, args, 1);
575 QDomAttr attr = value.attributeNodeNS(ns, name);
576 result = KJSEmbed::createValue(exec, "QDomAttr", attr);
577 END_VALUE_METHOD
578 
579 START_VALUE_METHOD(removeAttributeNode, QDomElement)
580 QDomAttr attr = KJSEmbed::extractValue<QDomAttr>(exec, args, 0);
581 QDomAttr newAttr = value.removeAttributeNode(attr);
582 result = KJSEmbed::createValue(exec, "QDomAttr", newAttr);
583 END_VALUE_METHOD
584 
585 START_VALUE_METHOD(setAttributeNode, QDomElement)
586 QDomAttr attr = KJSEmbed::extractValue<QDomAttr>(exec, args, 0);
587 QDomAttr newAttr = value.setAttributeNode(attr);
588 result = KJSEmbed::createValue(exec, "QDomAttr", newAttr);
589 END_VALUE_METHOD
590 
591 START_VALUE_METHOD(setAttributeNodeNS, QDomElement)
592 QDomAttr attr = KJSEmbed::extractValue<QDomAttr>(exec, args, 0);
593 QDomAttr newAttr = value.setAttributeNodeNS(attr);
594 result = KJSEmbed::createValue(exec, "QDomAttr", newAttr);
595 END_VALUE_METHOD
596 }
597 
598 NO_ENUMS(DomElement)
NO_STATICS(DomElement)599 NO_STATICS(DomElement)
600 
601 START_METHOD_LUT(DomElement)
602 {"toString", 0, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::toString},
603 {"text", 0, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::toString},
604 {"tagName", 0, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::tagName},
605 {"setTagName", 1, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::setTagName},
606 {"setAttribute", 2, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::setAttribute},
607 {"attribute", 2, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::attribute},
608 {"hasAttribute", 1, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::hasAttribute},
609 {"removeAttribute", 1, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::removeAttribute},
610 {"setAttributeNS", 3, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::setAttributeNS},
611 {"attributeNS", 3, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::attributeNS},
612 {"hasAttributeNS", 2, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::hasAttributeNS},
613 {"removeAttributeNS", 2, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::removeAttributeNS},
614 {"elementsByTagName", 1, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::elementsByTagName},
615 {"elementsByTagNameNS", 2, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::elementsByTagNameNS},
616 {"attributeNode", 1, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::attributeNode},
617 {"attributeNodeNS", 2, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::attributeNodeNS},
618 {"removeAttributeNode", 1, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::removeAttributeNode},
619 {"setAttributeNode", 1, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::setAttributeNode},
620 {"setAttributeNodeNS", 1, KJS::DontDelete | KJS::ReadOnly, &DomElementNS::setAttributeNodeNS}
621 END_METHOD_LUT
622 
623 START_CTOR(DomElement, QDomElement, 0)
624 return new KJSEmbed::DomElementBinding(exec, QDomElement());
625 END_CTOR
626 
627 const KJS::ClassInfo DomAttrBinding::info = { "QDomAttr", &ValueBinding::info, nullptr, nullptr };
DomAttrBinding(KJS::ExecState * exec,const QDomAttr & value)628 DomAttrBinding::DomAttrBinding(KJS::ExecState *exec, const QDomAttr &value)
629     : ValueBinding(exec, "QDomAttr", value)
630 {
631     StaticBinding::publish(exec, this, DomNode::methods());
632     StaticBinding::publish(exec, this, DomAttr::methods());
633 }
634 
635 namespace AttrElementNS
636 {
637 START_VALUE_METHOD(name, QDomAttr)
638 result = KJS::jsString(value.value());
639 END_VALUE_METHOD
640 
641 START_VALUE_METHOD(specified, QDomAttr)
642 result = KJS::jsBoolean(value.specified());
643 END_VALUE_METHOD
644 
645 START_VALUE_METHOD(ownerElement, QDomAttr)
646 QDomElement owner = value.ownerElement();
647 result = KJSEmbed::createValue(exec, "QDomElement", owner);
648 END_VALUE_METHOD
649 
650 START_VALUE_METHOD(value, QDomAttr)
651 result = KJS::jsString(value.value());
652 END_VALUE_METHOD
653 
654 START_VALUE_METHOD(setValue, QDomAttr)
655 QString newValue = KJSEmbed::extractQString(exec, args, 0);
656 value.setValue(newValue);
657 END_VALUE_METHOD
658 
659 }
660 
661 NO_ENUMS(DomAttr)
NO_STATICS(DomAttr)662 NO_STATICS(DomAttr)
663 
664 START_METHOD_LUT(DomAttr)
665 {"name", 0, KJS::DontDelete | KJS::ReadOnly, &AttrElementNS::name},
666 {"specified", 0, KJS::DontDelete | KJS::ReadOnly, &AttrElementNS::specified},
667 {"ownerElement", 0, KJS::DontDelete | KJS::ReadOnly, &AttrElementNS::ownerElement},
668 {"value", 0, KJS::DontDelete | KJS::ReadOnly, &AttrElementNS::value},
669 {"setValue", 1, KJS::DontDelete | KJS::ReadOnly, &AttrElementNS::setValue}
670 END_METHOD_LUT
671 
672 START_CTOR(DomAttr, QDomAttr, 0)
673 return new KJSEmbed::DomAttrBinding(exec, QDomAttr());
674 END_CTOR
675 
676 const KJS::ClassInfo DomNodeListBinding::info = { "QDomNodeList", &ValueBinding::info, nullptr, nullptr };
DomNodeListBinding(KJS::ExecState * exec,const QDomNodeList & value)677 DomNodeListBinding::DomNodeListBinding(KJS::ExecState *exec, const QDomNodeList &value)
678     : ValueBinding(exec, "QDomNodeList", value)
679 {
680     StaticBinding::publish(exec, this, DomNodeList::methods());
681 }
682 
683 namespace NodeListNS
684 {
685 START_VALUE_METHOD(count, QDomNodeList)
686 result = KJS::jsNumber(value.count());
687 END_VALUE_METHOD
688 
689 START_VALUE_METHOD(length, QDomNodeList)
690 result = KJS::jsNumber(value.length());
691 END_VALUE_METHOD
692 
693 START_VALUE_METHOD(item, QDomNodeList)
694 int idx = KJSEmbed::extractInt(exec, args, 0);
695 QDomNode node = value.item(idx);
696 result = KJSEmbed::createValue(exec, "QDomNode", node);
697 END_VALUE_METHOD
698 
699 }
700 
701 NO_ENUMS(DomNodeList)
NO_STATICS(DomNodeList)702 NO_STATICS(DomNodeList)
703 
704 START_METHOD_LUT(DomNodeList)
705 {"count", 0, KJS::DontDelete | KJS::ReadOnly, &NodeListNS::count},
706 {"length", 0, KJS::DontDelete | KJS::ReadOnly, &NodeListNS::length},
707 {"item", 1, KJS::DontDelete | KJS::ReadOnly, &NodeListNS::item}
708 END_METHOD_LUT
709 
710 START_CTOR(DomNodeList, QDomNodeList, 0)
711 return new KJSEmbed::DomNodeListBinding(exec, QDomNodeList());
712 END_CTOR
713 
714 const KJS::ClassInfo DomDocumentTypeBinding::info = { "QDomDocumentType", &ValueBinding::info, nullptr, nullptr };
DomDocumentTypeBinding(KJS::ExecState * exec,const QDomDocumentType & value)715 DomDocumentTypeBinding::DomDocumentTypeBinding(KJS::ExecState *exec, const QDomDocumentType &value)
716     : ValueBinding(exec, "QDomDocumentType", value)
717 {
718     StaticBinding::publish(exec, this, DomNode::methods());
719     StaticBinding::publish(exec, this, DomDocumentType::methods());
720 }
721 
722 namespace DomDocumentTypeNS
723 {
724 START_VALUE_METHOD(internalSubset, QDomDocumentType)
725 result = KJS::jsString(value.internalSubset());
726 END_VALUE_METHOD
727 
728 START_VALUE_METHOD(name, QDomDocumentType)
729 result = KJS::jsString(value.name());
730 END_VALUE_METHOD
731 
732 START_VALUE_METHOD(publicId, QDomDocumentType)
733 result = KJS::jsString(value.publicId());
734 END_VALUE_METHOD
735 
736 START_VALUE_METHOD(systemId, QDomDocumentType)
737 result = KJS::jsString(value.systemId());
738 END_VALUE_METHOD
739 
740 START_VALUE_METHOD(entities, QDomDocumentType)
741 result = KJSEmbed::createValue(exec, "QDomNamedNodeMap", value.entities());
742 END_VALUE_METHOD
743 
744 START_VALUE_METHOD(notations, QDomDocumentType)
745 result = KJSEmbed::createValue(exec, "QDomNamedNodeMap", value.notations());
746 END_VALUE_METHOD
747 }
748 
749 NO_ENUMS(DomDocumentType)
NO_STATICS(DomDocumentType)750 NO_STATICS(DomDocumentType)
751 
752 START_METHOD_LUT(DomDocumentType)
753 {"entities", 0, KJS::DontDelete | KJS::ReadOnly, &DomDocumentTypeNS::entities},
754 {"notations", 0, KJS::DontDelete | KJS::ReadOnly, &DomDocumentTypeNS::notations},
755 {"internalSubset", 0, KJS::DontDelete | KJS::ReadOnly, &DomDocumentTypeNS::internalSubset},
756 {"name", 0, KJS::DontDelete | KJS::ReadOnly, &DomDocumentTypeNS::name},
757 {"publicId", 0, KJS::DontDelete | KJS::ReadOnly, &DomDocumentTypeNS::publicId},
758 {"systemId", 0, KJS::DontDelete | KJS::ReadOnly, &DomDocumentTypeNS::systemId}
759 END_METHOD_LUT
760 
761 START_CTOR(DomDocumentType, QDomDocumentType, 0)
762 return new KJSEmbed::DomDocumentTypeBinding(exec, QDomDocumentType());
763 END_CTOR
764 
765 const KJS::ClassInfo DomNamedNodeMapBinding::info = { "QDomNamedNodeMap", &ValueBinding::info, nullptr, nullptr };
DomNamedNodeMapBinding(KJS::ExecState * exec,const QDomNamedNodeMap & value)766 DomNamedNodeMapBinding::DomNamedNodeMapBinding(KJS::ExecState *exec, const QDomNamedNodeMap &value)
767     : ValueBinding(exec, "QDomNamedNodeMap", value)
768 {
769     StaticBinding::publish(exec, this, DomNamedNodeMap::methods());
770 }
771 
772 namespace NamedNodeMapNS
773 {
774 START_VALUE_METHOD(contains, QDomNamedNodeMap)
775 QString name = KJSEmbed::extractQString(exec, args, 0);
776 result = KJS::jsBoolean(value.contains(name));
777 END_VALUE_METHOD
778 
779 START_VALUE_METHOD(count, QDomNamedNodeMap)
780 result = KJS::jsNumber(value.count());
781 END_VALUE_METHOD
782 
783 START_VALUE_METHOD(item, QDomNamedNodeMap)
784 int idx = KJSEmbed::extractInt(exec, args, 0);
785 QDomNode node = value.item(idx);
786 result = KJSEmbed::createValue(exec, "QDomNode", node);
787 END_VALUE_METHOD
788 
789 START_VALUE_METHOD(length, QDomNamedNodeMap)
790 result = KJS::jsNumber(value.length());
791 END_VALUE_METHOD
792 
793 START_VALUE_METHOD(namedItem, QDomNamedNodeMap)
794 QString name = KJSEmbed::extractQString(exec, args, 0);
795 QDomNode node = value.namedItem(name);
796 result = KJSEmbed::createValue(exec, "QDomNode", node);
797 END_VALUE_METHOD
798 
799 START_VALUE_METHOD(namedItemNS, QDomNamedNodeMap)
800 QString nsuri = KJSEmbed::extractQString(exec, args, 0);
801 QString localName = KJSEmbed::extractQString(exec, args, 1);
802 QDomNode node = value.namedItemNS(nsuri, localName);
803 result = KJSEmbed::createValue(exec, "QDomNode", node);
804 END_VALUE_METHOD
805 
806 START_VALUE_METHOD(removeNamedItem, QDomNamedNodeMap)
807 QString name = KJSEmbed::extractQString(exec, args, 0);
808 QDomNode node = value.removeNamedItem(name);
809 result = KJSEmbed::createValue(exec, "QDomNode", node);
810 END_VALUE_METHOD
811 
812 START_VALUE_METHOD(removeNamedItemNS, QDomNamedNodeMap)
813 QString nsuri = KJSEmbed::extractQString(exec, args, 0);
814 QString localName = KJSEmbed::extractQString(exec, args, 1);
815 QDomNode node = value.removeNamedItemNS(nsuri, localName);
816 result = KJSEmbed::createValue(exec, "QDomNode", node);
817 END_VALUE_METHOD
818 
819 START_VALUE_METHOD(setNamedItem, QDomNamedNodeMap)
820 QDomNode newNode = KJSEmbed::extractValue<QDomNode>(exec, args, 0);
821 QDomNode node = value.setNamedItem(newNode);
822 result = KJSEmbed::createValue(exec, "QDomNode", node);
823 END_VALUE_METHOD
824 
825 START_VALUE_METHOD(setNamedItemNS, QDomNamedNodeMap)
826 QDomNode newNode = KJSEmbed::extractValue<QDomNode>(exec, args, 0);
827 QDomNode node = value.setNamedItemNS(newNode);
828 result = KJSEmbed::createValue(exec, "QDomNode", node);
829 END_VALUE_METHOD
830 
831 }
832 
833 NO_ENUMS(DomNamedNodeMap)
NO_STATICS(DomNamedNodeMap)834 NO_STATICS(DomNamedNodeMap)
835 
836 START_METHOD_LUT(DomNamedNodeMap)
837 {"contains", 0, KJS::DontDelete | KJS::ReadOnly, &NamedNodeMapNS::contains},
838 {"count", 0, KJS::DontDelete | KJS::ReadOnly, &NamedNodeMapNS::count},
839 {"item", 1, KJS::DontDelete | KJS::ReadOnly, &NamedNodeMapNS::item},
840 {"length", 0, KJS::DontDelete | KJS::ReadOnly, &NamedNodeMapNS::length},
841 {"namedItem", 1, KJS::DontDelete | KJS::ReadOnly, &NamedNodeMapNS::namedItem},
842 {"namedItemNS", 2, KJS::DontDelete | KJS::ReadOnly, &NamedNodeMapNS::namedItemNS},
843 {"removeNamedItem", 1, KJS::DontDelete | KJS::ReadOnly, &NamedNodeMapNS::removeNamedItem},
844 {"removeNamedItemNS", 2, KJS::DontDelete | KJS::ReadOnly, &NamedNodeMapNS::removeNamedItemNS},
845 {"setNamedItem", 1, KJS::DontDelete | KJS::ReadOnly, &NamedNodeMapNS::setNamedItem},
846 {"setNamedItemNS", 1, KJS::DontDelete | KJS::ReadOnly, &NamedNodeMapNS::setNamedItemNS}
847 END_METHOD_LUT
848 
849 START_CTOR(DomNamedNodeMap, QDomNamedNodeMap, 0)
850 return new KJSEmbed::DomNamedNodeMapBinding(exec, QDomNamedNodeMap());
851 END_CTOR
852 
853 const KJS::ClassInfo DomTextBinding::info = { "QDomText", &ValueBinding::info, nullptr, nullptr };
DomTextBinding(KJS::ExecState * exec,const QDomText & value)854 DomTextBinding::DomTextBinding(KJS::ExecState *exec, const QDomText &value)
855     : ValueBinding(exec, "QDomText", value)
856 {
857     StaticBinding::publish(exec, this, DomNode::methods());
858     StaticBinding::publish(exec, this, DomText::methods());
859 }
860 
861 NO_ENUMS(DomText)
862 NO_STATICS(DomText)
863 NO_METHODS(DomText)
864 
865 START_CTOR(DomText, QDomText, 0)
866 return new KJSEmbed::DomTextBinding(exec, QDomText());
867 END_CTOR
868 
869