summaryrefslogtreecommitdiffstats
path: root/khtml/dom/dom_element.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'khtml/dom/dom_element.cpp')
-rw-r--r--khtml/dom/dom_element.cpp409
1 files changed, 0 insertions, 409 deletions
diff --git a/khtml/dom/dom_element.cpp b/khtml/dom/dom_element.cpp
deleted file mode 100644
index 54c322e25..000000000
--- a/khtml/dom/dom_element.cpp
+++ /dev/null
@@ -1,409 +0,0 @@
-/**
- * This file is part of the DOM implementation for KDE.
- *
- * (C) 1999 Lars Knoll (knoll@kde.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#include "dom/dom_exception.h"
-#include "xml/dom_docimpl.h"
-#include "xml/dom_elementimpl.h"
-#include "html/html_formimpl.h"
-
-using namespace DOM;
-
-Attr::Attr() : Node()
-{
-}
-
-Attr::Attr(const Attr &other) : Node(other)
-{
-}
-
-Attr::Attr( AttrImpl *_impl )
-{
- impl= _impl;
- if (impl) impl->ref();
-}
-
-Attr &Attr::operator = (const Node &other)
-{
- NodeImpl* ohandle = other.handle();
- if ( impl != ohandle ) {
- if (!ohandle || !ohandle->isAttributeNode()) {
- if (impl) impl->deref();
- impl = 0;
- } else {
- Node::operator =(other);
- }
- }
- return *this;
-}
-
-Attr &Attr::operator = (const Attr &other)
-{
- Node::operator =(other);
- return *this;
-}
-
-Attr::~Attr()
-{
-}
-
-DOMString Attr::name() const
-{
- if (!impl) throw DOMException(DOMException::NOT_FOUND_ERR);
- return ((AttrImpl *)impl)->name();
-}
-
-bool Attr::specified() const
-{
- if (impl) return ((AttrImpl *)impl)->specified();
- return 0;
-}
-
-Element Attr::ownerElement() const
-{
- if (!impl) return 0;
- return static_cast<AttrImpl*>(impl)->ownerElement();
-}
-
-DOMString Attr::value() const
-{
- if (!impl) throw DOMException(DOMException::NOT_FOUND_ERR);
- return impl->nodeValue();
-}
-
-void Attr::setValue( const DOMString &newValue )
-{
- if (!impl)
- return;
-
- int exceptioncode = 0;
- ((AttrImpl *)impl)->setValue(newValue,exceptioncode);
- if (exceptioncode)
- throw DOMException(exceptioncode);
-}
-
-// ---------------------------------------------------------------------------
-
-Element::Element() : Node()
-{
-}
-
-Element::Element(const Element &other) : Node(other)
-{
-}
-
-Element::Element(ElementImpl *impl) : Node(impl)
-{
-}
-
-Element &Element::operator = (const Node &other)
-{
- NodeImpl* ohandle = other.handle();
- if ( impl != ohandle ) {
- if (!ohandle || !ohandle->isElementNode()) {
- if (impl) impl->deref();
- impl = 0;
- } else {
- Node::operator =(other);
- }
- }
- return *this;
-}
-
-Element &Element::operator = (const Element &other)
-{
- Node::operator =(other);
- return *this;
-}
-
-Element::~Element()
-{
-}
-
-DOMString Element::tagName() const
-{
- if (!impl) throw DOMException(DOMException::NOT_FOUND_ERR);
- return static_cast<ElementImpl*>(impl)->tagName();
-}
-
-DOMString Element::getAttribute( const DOMString &name )
-{
- // ### getAttribute() and getAttributeNS() are supposed to return the empty string if the attribute
- // does not exist. However, there are a number of places around khtml that expect a null string
- // for nonexistent attributes. These need to be changed to use hasAttribute() instead.
- if (!impl) throw DOMException(DOMException::NOT_FOUND_ERR);
- if (!name.implementation()) throw DOMException(DOMException::NOT_FOUND_ERR);
-
- NodeImpl::Id id = impl->getDocument()->getId(NodeImpl::AttributeId,name.implementation(),true,true);
- if (!id) return DOMString();
-
- ElementImpl* e = static_cast<ElementImpl*>(impl);
- return e->getAttribute(id, false, name);
-}
-
-void Element::setAttribute( const DOMString &name, const DOMString &value )
-{
- if (!impl) throw DOMException(DOMException::NOT_FOUND_ERR);
- int exceptioncode = 0;
- NodeImpl::Id id = impl->getDocument()->getId(NodeImpl::AttributeId, name.implementation(), false /* allocate */,
- true, &exceptioncode);
-
- static_cast<ElementImpl*>(impl)->setAttribute(id, value, name, exceptioncode);
- if ( exceptioncode )
- throw DOMException( exceptioncode );
-}
-
-void Element::removeAttribute( const DOMString &name )
-{
- if (!impl) throw DOMException(DOMException::NOT_FOUND_ERR);
- NodeImpl::Id id = impl->getDocument()->getId(NodeImpl::AttributeId, name.implementation(), true, true);
- if (!id) return;
-
- int exceptioncode = 0;
- NamedNodeMapImpl *attributes = static_cast<ElementImpl*>(impl)->attributes(false);
- attributes->removeNamedItem(id, false, name.implementation(), exceptioncode);
- // it's allowed to remove attributes that don't exist.
- if ( exceptioncode && exceptioncode != DOMException::NOT_FOUND_ERR )
- throw DOMException( exceptioncode );
-}
-
-Attr Element::getAttributeNode( const DOMString &name )
-{
- if (!impl) throw DOMException(DOMException::NOT_FOUND_ERR);
- if (!name.implementation()) throw DOMException(DOMException::NOT_FOUND_ERR);
- NodeImpl::Id id = impl->getDocument()->getId(NodeImpl::AttributeId, name.implementation(), true, true);
- if (!id) return 0;
-
- ElementImpl* e = static_cast<ElementImpl*>(impl);
- if (!e->attributes()) return 0;
-
- return static_cast<AttrImpl*>(e->attributes()->getNamedItem(id, false, name.implementation()));
-}
-
-Attr Element::setAttributeNode( const Attr &newAttr )
-{
- if (!impl || newAttr.isNull())
- throw DOMException(DOMException::NOT_FOUND_ERR);
- // WRONG_DOCUMENT_ERR and INUSE_ATTRIBUTE_ERR are already tested & thrown by setNamedItem
-
- int exceptioncode = 0;
- Attr r = static_cast<ElementImpl*>(impl)->attributes(false)->setNamedItem(newAttr.handle(), false,
- newAttr.handle()->nodeName().implementation(), exceptioncode);
- if ( exceptioncode )
- throw DOMException( exceptioncode );
- static_cast<AttrImpl *>(newAttr.handle())->setOwnerElement( static_cast<ElementImpl*>(impl) );
- return r;
-}
-
-Attr Element::removeAttributeNode( const Attr &oldAttr )
-{
- if (!impl || oldAttr.isNull() || oldAttr.ownerElement().handle() != impl)
- throw DOMException(DOMException::NOT_FOUND_ERR);
-
- if (impl->isReadOnly())
- throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR);
-
- if (!static_cast<ElementImpl*>(impl)->attributes(true))
- throw DOMException(DOMException::NOT_FOUND_ERR);
-
- NamedAttrMapImpl *attributes = static_cast<ElementImpl*>(impl)->attributes(false);
- return attributes->removeAttr(static_cast<AttrImpl*>(static_cast<AttrImpl*>(oldAttr.handle())));
-}
-
-NodeList Element::getElementsByTagName( const DOMString &tagName )
-{
- if (!impl) return 0;
- NodeImpl::Id id;
- if ( tagName == "*" )
- id = 0;
- else
- id = impl->getDocument()->getId(NodeImpl::ElementId, tagName.implementation(), false, true);
- return new TagNodeListImpl( impl, id );
-}
-
-NodeList Element::getElementsByTagNameNS( const DOMString &namespaceURI,
- const DOMString &localName )
-{
- if (!impl) return 0;
- return new TagNodeListImpl( impl, namespaceURI, localName );
-}
-
-DOMString Element::getAttributeNS( const DOMString &namespaceURI,
- const DOMString &localName)
-{
- if (!impl) throw DOMException(DOMException::NOT_FOUND_ERR);
- if (!localName.implementation()) throw DOMException(DOMException::NOT_FOUND_ERR);
- NodeImpl::Id id = impl->getDocument()->getId(NodeImpl::AttributeId, namespaceURI.implementation(), 0/*prefix*/, localName.implementation(), true, true);
- ElementImpl* e = static_cast<ElementImpl*>(impl);
- return e->getAttribute(id, true);
-}
-
-void Element::setAttributeNS( const DOMString &namespaceURI,
- const DOMString &qualifiedName,
- const DOMString &value)
-{
- if (!impl) throw DOMException(DOMException::NOT_FOUND_ERR);
-
- int exceptioncode = 0;
- static_cast<ElementImpl*>(impl)->setAttributeNS(namespaceURI, qualifiedName, value, exceptioncode);
- if ( exceptioncode )
- throw DOMException( exceptioncode );
-}
-
-void Element::removeAttributeNS( const DOMString &namespaceURI,
- const DOMString &localName )
-{
- if (!impl) throw DOMException(DOMException::NOT_FOUND_ERR);
-
- int exceptioncode = 0;
- NamedNodeMapImpl *attributes = static_cast<ElementImpl*>(impl)->attributes(false);
- NodeImpl::Id id = impl->getDocument()->getId(NodeImpl::AttributeId, namespaceURI.implementation(), 0/*prefix*/, localName.implementation(), false, true);
- attributes->removeNamedItem(id, true, 0, exceptioncode);
- if ( exceptioncode )
- throw DOMException( exceptioncode );
-}
-
-Attr Element::getAttributeNodeNS( const DOMString &namespaceURI,
- const DOMString &localName )
-{
- if (!impl) throw DOMException(DOMException::NOT_FOUND_ERR);
- if (!localName.implementation()) throw DOMException(DOMException::NOT_FOUND_ERR);
- NodeImpl::Id id = impl->getDocument()->getId(NodeImpl::AttributeId, namespaceURI.implementation(),
- 0/*prefix*/, localName.implementation(), true, true);
- ElementImpl* e = static_cast<ElementImpl*>(impl);
- if (!e->attributes()) return 0;
-
- return static_cast<AttrImpl*>(e->attributes()->getNamedItem(id, true));
-}
-
-Attr Element::setAttributeNodeNS( const Attr &newAttr )
-{
- if (!impl || newAttr.isNull())
- throw DOMException(DOMException::NOT_FOUND_ERR);
- // WRONG_DOCUMENT_ERR and INUSE_ATTRIBUTE_ERR are already tested & thrown by setNamedItem
-
- int exceptioncode = 0;
- Attr r = static_cast<ElementImpl*>(impl)->attributes(false)->setNamedItem(newAttr.handle(), true, 0, exceptioncode);
- if ( exceptioncode )
- throw DOMException( exceptioncode );
- static_cast<AttrImpl *>(newAttr.handle())->setOwnerElement( static_cast<ElementImpl*>(impl) );
- return r;
-}
-
-
-bool Element::hasAttribute( const DOMString& name )
-{
- if (!impl || !static_cast<ElementImpl*>(impl)->attributes()) return false; // ### throw ?
- NodeImpl::Id id = impl->getDocument()->getId(NodeImpl::AttributeId, name.implementation(), true, true);
- if (!id) return false;
-
- if (!static_cast<ElementImpl*>(impl)->attributes(true /*readonly*/)) return false;
- return static_cast<ElementImpl*>(impl)->attributes(true)->getValue(id, false, name.implementation()) != 0;
-}
-
-bool Element::hasAttributeNS( const DOMString &namespaceURI,
- const DOMString &localName )
-{
- if (!impl || !static_cast<ElementImpl*>(impl)->attributes()) return false; // ### throw ?
- if (!static_cast<ElementImpl*>(impl)->attributes(true /*readonly*/)) return false;
- NodeImpl::Id id = impl->getDocument()->getId(NodeImpl::AttributeId,namespaceURI.implementation(),
- 0/*prefix*/, localName.implementation(), true, true);
- return static_cast<ElementImpl*>(impl)->attributes(true)->getValue(id, true) != 0;
-}
-
-bool Element::isHTMLElement() const
-{
- if(!impl) return false;
- return ((ElementImpl *)impl)->isHTMLElement();
-}
-
-Element Element::form() const
-{
- if (!impl || !impl->isGenericFormElement()) return 0;
- return static_cast<HTMLGenericFormElementImpl*>(impl)->form();
- ElementImpl* f = static_cast<HTMLGenericFormElementImpl*>( impl )->form();
-
- if( f && f->implicitNode() )
- return 0;
- return f;
-}
-
-CSSStyleDeclaration Element::style()
-{
- if (impl) return ((ElementImpl *)impl)->styleRules();
- return 0;
-}
-
-bool Element::contentEditable() const {
- if(!impl) return false;
- return static_cast<ElementImpl *>(impl)->contentEditable();
-}
-
-void Element::setContentEditable(bool enabled) {
- if(!impl)
- throw DOMException(DOMException::INVALID_STATE_ERR);
-
- static_cast<ElementImpl *>(impl)->setContentEditable(enabled);
-}
-
-bool Element::khtmlValidAttrName(const DOMString &name)
-{
- // Check if name is valid
- // http://www.w3.org/TR/2000/REC-xml-20001006#NT-Name
- DOMStringImpl* _name = name.implementation();
- TQChar ch = _name->s[0];
- if ( !ch.isLetter() && ch != '_' && ch != ':' )
- return false; // first char isn't valid
- for ( uint i = 0; i < _name->l; ++i )
- {
- ch = _name->s[i];
- if ( !ch.isLetter() && !ch.isDigit() && ch != '.'
- && ch != '-' && ch != '_' && ch != ':'
- && ch.category() != TQChar::Mark_SpacingCombining
- /* no idea what "extender is" */ )
- return false;
- }
- return true;
-}
-
-bool Element::khtmlValidPrefix(const DOMString &name)
-{
- // Null prefix is ok. If not null, reuse code from khtmlValidAttrName
- return !name.implementation() || khtmlValidAttrName(name);
-}
-
-bool Element::khtmlValidQualifiedName(const DOMString &name)
-{
- return khtmlValidAttrName(name);
-}
-
-bool Element::khtmlMalformedQualifiedName(const DOMString &name)
-{
- // #### Not clearly defined in the DOM spec...
- // But we know for sure that a null qualified name is malformed
- return name.isNull();
-}
-
-bool Element::khtmlMalformedPrefix(const DOMString &/*name*/)
-{
- // ####
- return false;
-}