/****************************************************************************
** $Id: quickqtdom.cpp  beta1   edited Dec 10 13:07 $
**
** Copyright (C) 2001-2002 Trolltech AS.  All rights reserved.
**
** This file is part of the Qt Script for Applications framework (QSA).
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** Licensees holding a valid QSA Beta Evaluation Version license may use
** this file in accordance with the QSA Beta Evaluation Version License
** Agreement provided with the Software.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
**   information about QSA Commercial License Agreements.
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
*****************************************************************************/

#include "quickqtdom.h"

DomNode::DomNode( QDomNode *n )
    : QuickPtrDispatchObject( "QDomNode", n )
{
}

DomNode::DomNode( QDomNode *n, const char *name )
    : QuickPtrDispatchObject( name, n )
{
}

QString DomNode::nodeName() const
{
    return node()->nodeName();
}

QDomNode *DomNode::parentNode() const
{
    // avoid INTERNAL COMPILER ERROR on MSVC
    QDomNode thatNode = node()->parentNode();
    return new QDomNode( thatNode );
}

QDomNode *DomNode::firstChild() const
{
    // avoid INTERNAL COMPILER ERROR on MSVC
    QDomNode thatNode = node()->firstChild();
    return new QDomNode( thatNode );
}

QDomNode *DomNode::lastChild() const
{
    // avoid INTERNAL COMPILER ERROR on MSVC
    QDomNode thatNode = node()->lastChild();
    return new QDomNode( thatNode );
}

QDomNode *DomNode::previousSibling() const
{
    // avoid INTERNAL COMPILER ERROR on MSVC
    QDomNode thatNode = node()->previousSibling();
    return new QDomNode( thatNode );
}

QDomNode *DomNode::nextSibling() const
{
    // avoid INTERNAL COMPILER ERROR on MSVC
    QDomNode thatNode = node()->nextSibling();
    return new QDomNode( thatNode );
}

bool DomNode::isNull() const
{
    return node()->isNull();
}

QDomElement *DomNode::toElement() const
{
    return new QDomElement( node()->toElement() );
}

QDomText *DomNode::toText() const
{
    return new QDomText( node()->toText() );
}

QDomDocument *DomNode::toDocument() const
{
    return new QDomDocument( node()->toDocument() );
}

QDomNode *DomNode::node() const
{
    return (QDomNode*)pointer();
}




DomElement::DomElement( QDomElement *e )
    : DomNode( e, "QDomElement" )
{
}

QString DomElement::tagName() const
{
    return element()->tagName();
}

bool DomElement::hasAttribute( const QString &attribute ) const
{
    return element()->hasAttribute( attribute );
}

QString DomElement::attribute( const QString &name ) const
{
    return element()->attribute( name );
}

QString DomElement::attribute( const QString &name, const QString &defaultValue ) const
{
    return element()->attribute( name, defaultValue );
}

QDomElement *DomElement::element() const
{
    return (QDomElement*)pointer();
}




DomText::DomText( QDomText *t )
    : DomNode( t, "QDomText" )
{
}

QString DomText::data() const
{
    return text()->data();
}

QDomText *DomText::text() const
{
    return (QDomText*)pointer();
}




DomDocument::DomDocument( const QString &contents )
    : DomNode( new QDomDocument(), "QDomDocument" )
{
    document()->setContent( contents );
}

DomDocument::DomDocument( QDomDocument *d )
    : DomNode( d, "QDomDocument" )
{
}

QDomDocument *DomDocument::document() const
{
    return (QDomDocument*)pointer();
}

