# khtml Library API Documentation

Overview | Class Hierarchy | Classes | Classes (annotated) | Members | Namespaces | Source Files

# kjs_dom.h

    00001 // -*- c-basic-offset: 2 -*-
    00002 /*
    00003  *  This file is part of the KDE libraries
    00004  *  Copyright (C) 2000 Harri Porten (porten@kde.org)
    00005  *  Copyright (C) 2003 Apple Computer, Inc.
    00006  *
    00007  *  This library is free software; you can redistribute it and/or
    00008  *  modify it under the terms of the GNU Library General Public
    00009  *  License as published by the Free Software Foundation; either
    00010  *  version 2 of the License, or (at your option) any later version.
    00011  *
    00012  *  This library is distributed in the hope that it will be useful,
    00013  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
    00014  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00015  *  Library General Public License for more details.
    00016  *
    00017  *  You should have received a copy of the GNU Library General Public
    00018  *  License along with this library; if not, write to the Free Software
    00019  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    00020  */
    00021
    00022 #ifndef _KJS_DOM_H_
    00023 #define _KJS_DOM_H_
    00024
    00025 #include "dom/dom_node.h"
    00026 #include "dom/dom_doc.h"
    00027 #include "dom/dom_element.h"
    00028 #include "dom/dom_xml.h"
    00029
    00030 #include "ecma/kjs_binding.h"
    00031
    00032 namespace KJS {
    00033
    00034   class DOMNode : public DOMObject {
    00035   public:
    00036     // Build a DOMNode
    00037     DOMNode(ExecState *exec, const DOM::Node& n);
    00038     // Constructor for inherited classes
    00039     DOMNode(const Object& proto, const DOM::Node& n);
    00040     ~DOMNode();
    00041     virtual bool toBoolean(ExecState *) const;
    00042     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
    00043     Value getValueProperty(ExecState *exec, int token) const;
    00044
    00045     virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
    00046     void putValueProperty(ExecState *exec, int token, const Value& value, int attr);
    00047     virtual DOM::Node toNode() const { return node; }
    00048     virtual const ClassInfo* classInfo() const { return &info; }
    00049     static const ClassInfo info;
    00050
    00051     virtual Value toPrimitive(ExecState *exec, Type preferred = UndefinedType) const;
    00052     virtual UString toString(ExecState *exec) const;
    00053     void setListener(ExecState *exec, int eventId, const Value& func) const;
    00054     Value getListener(int eventId) const;
    00055     virtual void pushEventHandlerScope(ExecState *exec, ScopeChain &scope) const;
    00056
    00057     enum { NodeName, NodeValue, NodeType, ParentNode, ParentElement,
    00058            ChildNodes, FirstChild, LastChild, PreviousSibling, NextSibling, Item,
    00059            Attributes, NamespaceURI, Prefix, LocalName, OwnerDocument, InsertBefore,
    00060            ReplaceChild, RemoveChild, AppendChild, HasAttributes, HasChildNodes,
    00061            CloneNode, Normalize, IsSupported, AddEventListener, RemoveEventListener,
    00062            DispatchEvent, Contains, InsertAdjacentHTML,
    00063            OnAbort, OnBlur, OnChange, OnClick, OnDblClick, OnDragDrop, OnError,
    00064            OnFocus, OnKeyDown, OnKeyPress, OnKeyUp, OnLoad, OnMouseDown,
    00065            OnMouseMove, OnMouseOut, OnMouseOver, OnMouseUp, OnMove, OnReset,
    00066            OnResize, OnSelect, OnSubmit, OnUnload,
    00067            OffsetLeft, OffsetTop, OffsetWidth, OffsetHeight, OffsetParent,
    00068            ClientWidth, ClientHeight, ScrollLeft, ScrollTop,
    00069        ScrollWidth, ScrollHeight, SourceIndex };
    00070
    00071   protected:
    00072     DOM::Node node;
    00073   };
    00074
    00075   class DOMNodeList : public DOMObject {
    00076   public:
    00077     DOMNodeList(ExecState *, const DOM::NodeList& l);
    00078     ~DOMNodeList();
    00079     virtual bool hasProperty(ExecState *exec, const Identifier &p) const;
    00080     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
    00081     virtual Value call(ExecState *exec, Object &thisObj, const List&args);
    00082     virtual Value tryCall(ExecState *exec, Object &thisObj, const List&args);
    00083     virtual bool implementsCall() const { return true; }
    00084     // no put - all read-only
    00085     virtual const ClassInfo* classInfo() const { return &info; }
    00086     virtual bool toBoolean(ExecState *) const { return true; }
    00087     static const ClassInfo info;
    00088     DOM::NodeList nodeList() const { return list; }
    00089     enum { Item, NamedItem };
    00090   private:
    00091     DOM::NodeList list;
    00092   };
    00093
    00094   class DOMDocument : public DOMNode {
    00095   public:
    00096     // Build a DOMDocument
    00097     DOMDocument(ExecState *exec, const DOM::Document& d);
    00098     // Constructor for inherited classes
    00099     DOMDocument(const Object& proto, const DOM::Document& d);
    00100     virtual ~DOMDocument();
    00101     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
    00102     Value getValueProperty(ExecState *exec, int token) const;
    00103     virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
    00104     void putValueProperty(ExecState *exec, int token, const Value& value, int attr);
    00105     virtual const ClassInfo* classInfo() const { return &info; }
    00106     static const ClassInfo info;
    00107     enum { DocType, Implementation, DocumentElement,
    00108            // Functions
    00109            CreateElement, CreateDocumentFragment, CreateTextNode, CreateComment,
    00110            CreateCDATASection, CreateProcessingInstruction, CreateAttribute,
    00111            CreateEntityReference, GetElementsByTagName, ImportNode, CreateElementNS,
    00112            CreateAttributeNS, GetElementsByTagNameNS, GetElementById,
    00113            CreateRange, CreateNodeIterator, CreateTreeWalker, DefaultView,
    00114            CreateEvent, StyleSheets, GetOverrideStyle, Abort, Load, LoadXML,
    00115            PreferredStylesheetSet, SelectedStylesheetSet, ReadyState, Async };
    00116   };
    00117
    00118   class DOMAttr : public DOMNode {
    00119   public:
    00120     DOMAttr(ExecState *exec, const DOM::Attr& a) : DOMNode(exec, a) { }
    00121     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
    00122     virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
    00123     Value getValueProperty(ExecState *exec, int token) const;
    00124     void putValueProperty(ExecState *exec, int token, const Value& value, int attr);
    00125     virtual const ClassInfo* classInfo() const { return &info; }
    00126     static const ClassInfo info;
    00127     enum { Name, Specified, ValueProperty, OwnerElement };
    00128   };
    00129
    00130   class DOMElement : public DOMNode {
    00131   public:
    00132     // Build a DOMElement
    00133     DOMElement(ExecState *exec, const DOM::Element& e);
    00134     // Constructor for inherited classes
    00135     DOMElement(const Object& proto, const DOM::Element& e);
    00136     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
    00137     // no put - all read-only
    00138     virtual const ClassInfo* classInfo() const { return &info; }
    00139     static const ClassInfo info;
    00140     enum { TagName, Style,
    00141            GetAttribute, SetAttribute, RemoveAttribute, GetAttributeNode,
    00142            SetAttributeNode, RemoveAttributeNode, GetElementsByTagName,
    00143            GetAttributeNS, SetAttributeNS, RemoveAttributeNS, GetAttributeNodeNS,
    00144            SetAttributeNodeNS, GetElementsByTagNameNS, HasAttribute, HasAttributeNS };
    00145   };
    00146
    00147   class DOMDOMImplementation : public DOMObject {
    00148   public:
    00149     // Build a DOMDOMImplementation
    00150     DOMDOMImplementation(ExecState *, const DOM::DOMImplementation& i);
    00151     ~DOMDOMImplementation();
    00152     // no put - all functions
    00153     virtual const ClassInfo* classInfo() const { return &info; }
    00154     virtual bool toBoolean(ExecState *) const { return true; }
    00155     static const ClassInfo info;
    00156     enum { HasFeature, CreateDocumentType, CreateDocument, CreateCSSStyleSheet, CreateHTMLDocument };
    00157     DOM::DOMImplementation toImplementation() const { return implementation; }
    00158   private:
    00159     DOM::DOMImplementation implementation;
    00160   };
    00161
    00162   class DOMDocumentType : public DOMNode {
    00163   public:
    00164     // Build a DOMDocumentType
    00165     DOMDocumentType(ExecState *exec, const DOM::DocumentType& dt);
    00166     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
    00167     Value getValueProperty(ExecState *exec, int token) const;
    00168     // no put - all read-only
    00169     virtual const ClassInfo* classInfo() const { return &info; }
    00170     static const ClassInfo info;
    00171     enum { Name, Entities, Notations, PublicId, SystemId, InternalSubset };
    00172   };
    00173
    00174   class DOMNamedNodeMap : public DOMObject {
    00175   public:
    00176     DOMNamedNodeMap(ExecState *, const DOM::NamedNodeMap& m);
    00177     ~DOMNamedNodeMap();
    00178     virtual bool hasProperty(ExecState *exec, const Identifier &p) const;
    00179     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
    00180     // no put - all read-only
    00181     virtual const ClassInfo* classInfo() const { return &info; }
    00182     virtual bool toBoolean(ExecState *) const { return true; }
    00183     static const ClassInfo info;
    00184     enum { GetNamedItem, SetNamedItem, RemoveNamedItem, Item, Length,
    00185            GetNamedItemNS, SetNamedItemNS, RemoveNamedItemNS };
    00186     DOM::NamedNodeMap toMap() const { return map; }
    00187   private:
    00188     DOM::NamedNodeMap map;
    00189   };
    00190
    00191   class DOMProcessingInstruction : public DOMNode {
    00192   public:
    00193     DOMProcessingInstruction(ExecState *exec, const DOM::ProcessingInstruction& pi) : DOMNode(exec, pi) { }
    00194     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
    00195     Value getValueProperty(ExecState *exec, int token) const;
    00196     virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
    00197     virtual const ClassInfo* classInfo() const { return &info; }
    00198     static const ClassInfo info;
    00199     enum { Target, Data, Sheet };
    00200   };
    00201
    00202   class DOMNotation : public DOMNode {
    00203   public:
    00204     DOMNotation(ExecState *exec, const DOM::Notation& n) : DOMNode(exec, n) { }
    00205     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
    00206     Value getValueProperty(ExecState *exec, int token) const;
    00207     // no put - all read-only
    00208     virtual const ClassInfo* classInfo() const { return &info; }
    00209     static const ClassInfo info;
    00210     enum { PublicId, SystemId };
    00211   };
    00212
    00213   class DOMEntity : public DOMNode {
    00214   public:
    00215     DOMEntity(ExecState *exec, const DOM::Entity& e) : DOMNode(exec, e) { }
    00216     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
    00217     Value getValueProperty(ExecState *exec, int token) const;
    00218     // no put - all read-only
    00219     virtual const ClassInfo* classInfo() const { return &info; }
    00220     static const ClassInfo info;
    00221     enum { PublicId, SystemId, NotationName };
    00222   };
    00223
    00224   // Constructor for Node - constructor stuff not implemented yet
    00225   class NodeConstructor : public DOMObject {
    00226   public:
    00227     NodeConstructor(ExecState *);
    00228     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
    00229     Value getValueProperty(ExecState *exec, int token) const;
    00230     // no put - all read-only
    00231     virtual const ClassInfo* classInfo() const { return &info; }
    00232     static const ClassInfo info;
    00233   };
    00234
    00235   // Constructor for DOMException - constructor stuff not implemented yet
    00236   class DOMExceptionConstructor : public DOMObject {
    00237   public:
    00238     DOMExceptionConstructor(ExecState *);
    00239     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
    00240     Value getValueProperty(ExecState *exec, int token) const;
    00241     // no put - all read-only
    00242     virtual const ClassInfo* classInfo() const { return &info; }
    00243     static const ClassInfo info;
    00244   };
    00245
    00246   bool checkNodeSecurity(ExecState *exec, const DOM::Node& n);
    00247   Value getDOMNode(ExecState *exec, const DOM::Node& n);
    00248   Value getDOMNamedNodeMap(ExecState *exec, const DOM::NamedNodeMap& m);
    00249   Value getDOMNodeList(ExecState *exec, const DOM::NodeList& l);
    00250   Value getDOMDOMImplementation(ExecState *exec, const DOM::DOMImplementation& i);
    00251   Object getNodeConstructor(ExecState *exec);
    00252   Object getDOMExceptionConstructor(ExecState *exec);
    00253
    00254   // Internal class, used for the collection return by e.g. document.forms.myinput
    00255   // when multiple nodes have the same name.
    00256   class DOMNamedNodesCollection : public DOMObject {
    00257   public:
    00258     DOMNamedNodesCollection(ExecState *exec, const QValueList<DOM::Node>& nodes );
    00259     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
    00260     virtual const ClassInfo* classInfo() const { return &info; }
    00261     static const ClassInfo info;
    00262     const QValueList<DOM::Node>& nodes() const { return m_nodes; }
    00263     enum { Length };
    00264   private:
    00265     QValueList<DOM::Node> m_nodes;
    00266   };
    00267
    00268   class DOMCharacterData : public DOMNode {
    00269   public:
    00270     // Build a DOMCharacterData
    00271     DOMCharacterData(ExecState *exec, const DOM::CharacterData& d);
    00272     // Constructor for inherited classes
    00273     DOMCharacterData(const Object& proto, const DOM::CharacterData& d);
    00274     virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
    00275     Value getValueProperty(ExecState *, int token) const;
    00276     virtual void tryPut(ExecState *exec, const Identifier &propertyName, const Value& value, int attr = None);
    00277     virtual const ClassInfo* classInfo() const { return &info; }
    00278     static const ClassInfo info;
    00279     DOM::CharacterData toData() const { return static_cast<DOM::CharacterData>(node); }
    00280     enum { Data, Length,
    00281            SubstringData, AppendData, InsertData, DeleteData, ReplaceData };
    00282   };
    00283
    00284   class DOMText : public DOMCharacterData {
    00285   public:
    00286     DOMText(ExecState *exec, const DOM::Text& t);
    00287     virtual Value tryGet(ExecState *exec,const Identifier &propertyName) const;
    00288     Value getValueProperty(ExecState *, int token) const;
    00289     virtual const ClassInfo* classInfo() const { return &info; }
    00290     static const ClassInfo info;
    00291     DOM::Text toText() const { return static_cast<DOM::Text>(node); }
    00292     enum { SplitText };
    00293   };
    00294
    00295 } // namespace
    00296
    00297 #endif

This file is part of the documentation for khtml Library Version 3.4.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat Jun 11 20:33:18 2005 by doxygen 1.4.1 written by Dimitri van Heesch, © 1997-2003