-rw-r--r-- | qtcompat/xml/qdom.h | 611 |
1 files changed, 611 insertions, 0 deletions
diff --git a/qtcompat/xml/qdom.h b/qtcompat/xml/qdom.h new file mode 100644 index 0000000..eb257ea --- a/dev/null +++ b/qtcompat/xml/qdom.h @@ -0,0 +1,611 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QDomDocument and related classes. +** +** Created : 000518 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the XML module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** 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 valid Qt Enterprise Edition licenses may use this +** file in accordance with the Qt Commercial 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 Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** 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. +** +**********************************************************************/ + +/****************************************** + * DOM support is disabled in QT 2.3.7 for sharp zaurus. + * Because of that we copied the code from 2.3.7 into qtcompat and enabled it + * there. + * Copyright (c) 2004 Ulf Schenk + * + * $Id$ + ******************************************/ + +#ifndef QDOM_H +#define QDOM_H + +#ifndef QT_H +#include <qstring.h> +#include <qdict.h> +#include <qrect.h> +#include <qfont.h> +#include <qpen.h> +#include <qpoint.h> +#include <qsize.h> +#include <qvariant.h> +#include <qmime.h> +#endif // QT_H + +#include <qmodules.h> + +//US #if !defined(QT_MODULE_XML) +//US #define QM_EXPORT +//US #else +#define QM_EXPORT Q_EXPORT +//US #endif + +//US #ifndef QT_NO_DOM +class QWidget; +class QLayout; +class QIODevice; +class QTextStream; + +class QDOM_DocumentPrivate; +class QDOM_DocumentTypePrivate; +class QDOM_DocumentFragmentPrivate; +class QDOM_NodePrivate; +class QDOM_NodeListPrivate; +class QDOM_ImplementationPrivate; +class QDOM_ElementPrivate; +class QDOM_NotationPrivate; +class QDOM_EntityPrivate; +class QDOM_EntityReferencePrivate; +class QDOM_ProcessingInstructionPrivate; +class QDOM_AttrPrivate; +class QDOM_CharacterDataPrivate; +class QDOM_TextPrivate; +class QDOM_CommentPrivate; +class QDOM_CDATASectionPrivate; +class QDOM_NamedNodeMapPrivate; +class QDOM_ImplementationPrivate; + +class QDomNodeList; +class QDomElement; +class QDomText; +class QDomComment; +class QDomCDATASection; +class QDomProcessingInstruction; +class QDomAttr; +class QDomEntityReference; +class QDomDocument; +class QDomNamedNodeMap; +class QDomDocument; +class QDomDocumentFragment; +class QDomDocumentType; +class QDomImplementation; +class QDomNode; +class QDomEntity; +class QDomNotation; +class QDomCharacterData; + +class QM_EXPORT QDomImplementation +{ +public: + QDomImplementation(); + QDomImplementation( const QDomImplementation& ); + virtual ~QDomImplementation(); + QDomImplementation& operator= ( const QDomImplementation& ); + bool operator== ( const QDomImplementation& ) const; + bool operator!= ( const QDomImplementation& ) const; + + virtual bool hasFeature( const QString& feature, const QString& version ); + + bool isNull(); + +private: + QDomImplementation( QDOM_ImplementationPrivate* ); + + QDOM_ImplementationPrivate* impl; + + friend class QDomDocument; +}; + +class QM_EXPORT QDomNode // Ok +{ +public: + enum NodeType { + BaseNode = 0, + ElementNode = 1, + AttributeNode = 2, + TextNode = 3, + CDATASectionNode = 4, + EntityReferenceNode = 5, + EntityNode = 6, + ProcessingInstructionNode = 7, + CommentNode = 8, + DocumentNode = 9, + DocumentTypeNode = 10, + DocumentFragmentNode = 11, + NotationNode = 12, + CharacterDataNode = 13 + }; + + QDomNode(); + QDomNode( const QDomNode& ); + QDomNode& operator= ( const QDomNode& ); + bool operator== ( const QDomNode& ) const; + bool operator!= ( const QDomNode& ) const; + virtual ~QDomNode(); + + virtual QString nodeName() const; + virtual QString nodeValue() const; + virtual void setNodeValue( const QString& ); + virtual QDomNode::NodeType nodeType() const; + + virtual QDomNode parentNode() const; + virtual QDomNodeList childNodes() const; + virtual QDomNode firstChild() const; + virtual QDomNode lastChild() const; + virtual QDomNode previousSibling() const; + virtual QDomNode nextSibling() const; + virtual QDomNamedNodeMap attributes() const; + virtual QDomDocument ownerDocument() const; + + virtual QDomNode insertBefore( const QDomNode& newChild, const QDomNode& refChild ); + virtual QDomNode insertAfter( const QDomNode& newChild, const QDomNode& refChild ); + virtual QDomNode replaceChild( const QDomNode& newChild, const QDomNode& oldChild ); + virtual QDomNode removeChild( const QDomNode& oldChild ); + virtual QDomNode appendChild( const QDomNode& newChild ); + virtual QDomNode cloneNode( bool deep = TRUE ) const; + + // Qt extension + virtual bool isAttr() const; + virtual bool isCDATASection() const; + virtual bool isDocumentFragment() const; + virtual bool isDocument() const; + virtual bool isDocumentType() const; + virtual bool isElement() const; + virtual bool isEntityReference() const; + virtual bool isText() const; + virtual bool isEntity() const; + virtual bool isNotation() const; + virtual bool isProcessingInstruction() const; + virtual bool isCharacterData() const; + virtual bool isComment() const; + + /** + * Shortcut to avoid dealing with QDomNodeList + * all the time. + */ + QDomNode namedItem( const QString& name ) const; + + bool isNull() const; + void clear(); + + QDomAttr toAttr(); + QDomCDATASection toCDATASection(); + QDomDocumentFragment toDocumentFragment(); + QDomDocument toDocument(); + QDomDocumentType toDocumentType(); + QDomElement toElement(); + QDomEntityReference toEntityReference(); + QDomText toText(); + QDomEntity toEntity(); + QDomNotation toNotation(); + QDomProcessingInstruction toProcessingInstruction(); + QDomCharacterData toCharacterData(); + QDomComment toComment(); + + void save( QTextStream&, int ) const; + +protected: + QDOM_NodePrivate* impl; + QDomNode( QDOM_NodePrivate* ); + +private: + friend class QDomDocument; + friend class QDomDocumentType; + friend class QDomNodeList; + friend class QDomNamedNodeMap; +}; + +class QM_EXPORT QDomNodeList // Ok +{ +public: + QDomNodeList(); + QDomNodeList( const QDomNodeList& ); + QDomNodeList& operator= ( const QDomNodeList& ); + bool operator== ( const QDomNodeList& ) const; + bool operator!= ( const QDomNodeList& ) const; + virtual ~QDomNodeList(); + + virtual QDomNode item( int index ) const; + virtual uint length() const; + uint count() const { return length(); } // Qt API consitancy + + QDomNodeList( QDOM_NodeListPrivate* ); +private: + QDOM_NodeListPrivate* impl; +}; + +class QM_EXPORT QDomDocumentType : public QDomNode +{ +public: + QDomDocumentType(); + QDomDocumentType( const QDomDocumentType& x ); + QDomDocumentType& operator= ( const QDomDocumentType& ); + ~QDomDocumentType(); + + virtual QString name() const; + virtual QDomNamedNodeMap entities() const; + virtual QDomNamedNodeMap notations() const; + + // Reimplemented from QDomNode + QDomNode::NodeType nodeType() const; + bool isDocumentType() const; + +private: + QDomDocumentType( QDOM_DocumentTypePrivate* ); + + friend class QDomDocument; + friend class QDomNode; +}; + +class QM_EXPORT QDomDocument : public QDomNode +{ +public: + QDomDocument(); + QDomDocument( const QString& name ); + QDomDocument( const QDomDocument& x ); + QDomDocument& operator= ( const QDomDocument& ); + ~QDomDocument(); + + // Qt extensions + bool setContent( const QCString& text ); + bool setContent( const QByteArray& text ); + bool setContent( const QString& text ); + bool setContent( QIODevice* dev ); + + // QDomAttributes + QDomDocumentType doctype() const; + QDomImplementation implementation() const; + QDomElement documentElement() const; + + // Factories + QDomElement createElement( const QString& tagName ); + QDomDocumentFragment createDocumentFragment(); + QDomText createTextNode( const QString& data ); + QDomComment createComment( const QString& data ); + QDomCDATASection createCDATASection( const QString& data ); + QDomProcessingInstruction createProcessingInstruction( const QString& target, const QString& data ); + QDomAttr createAttribute( const QString& name ); + QDomEntityReference createEntityReference( const QString& name ); + QDomNodeList elementsByTagName( const QString& tagname ) const; + + // Reimplemented from QDomNode + QDomNode::NodeType nodeType() const; + bool isDocument() const; + + // Qt extensions + QString toString() const; + QCString toCString() const { return toString().utf8(); } + +private: + QDomDocument( QDOM_DocumentPrivate* ); + + friend class QDomNode; +}; + +class QM_EXPORT QDomNamedNodeMap +{ +public: + QDomNamedNodeMap(); + QDomNamedNodeMap( const QDomNamedNodeMap& ); + QDomNamedNodeMap& operator= ( const QDomNamedNodeMap& ); + bool operator== ( const QDomNamedNodeMap& ) const; + bool operator!= ( const QDomNamedNodeMap& ) const; + ~QDomNamedNodeMap(); + + QDomNode namedItem( const QString& name ) const; + QDomNode setNamedItem( const QDomNode& arg ); + QDomNode removeNamedItem( const QString& name ); + QDomNode item( int index ) const; + uint length() const; + bool contains( const QString& name ) const; + +private: + friend class QDomNode; + friend class QDomDocumentType; + friend class QDomElement; + + QDomNamedNodeMap( QDOM_NamedNodeMapPrivate* ); + + QDOM_NamedNodeMapPrivate* impl; +}; + +class QM_EXPORT QDomDocumentFragment : public QDomNode +{ +public: + QDomDocumentFragment(); + QDomDocumentFragment( const QDomDocumentFragment& x ); + QDomDocumentFragment& operator= ( const QDomDocumentFragment& ); + ~QDomDocumentFragment(); + + // Reimplemented from QDomNode + QDomNode::NodeType nodeType() const; + bool isDocumentFragment() const; + +private: + QDomDocumentFragment( QDOM_DocumentFragmentPrivate* ); + + friend class QDomDocument; + friend class QDomNode; +}; + +class QM_EXPORT QDomCharacterData : public QDomNode +{ +public: + QDomCharacterData(); + QDomCharacterData( const QDomCharacterData& x ); + QDomCharacterData& operator= ( const QDomCharacterData& ); + ~QDomCharacterData(); + + virtual QString data() const; + virtual void setData( const QString& ); + virtual uint length() const; + + virtual QString substringData( unsigned long offset, unsigned long count ); + virtual void appendData( const QString& arg ); + virtual void insertData( unsigned long offset, const QString& arg ); + virtual void deleteData( unsigned long offset, unsigned long count ); + virtual void replaceData( unsigned long offset, unsigned long count, const QString& arg ); + + // Reimplemented from QDomNode + QDomNode::NodeType nodeType() const; + bool isCharacterData() const; + +private: + QDomCharacterData( QDOM_CharacterDataPrivate* ); + + friend class QDomDocument; + friend class QDomText; + friend class QDomComment; + friend class QDomNode; +}; + +class QM_EXPORT QDomAttr : public QDomNode +{ +public: + QDomAttr(); + QDomAttr( const QDomAttr& x ); + QDomAttr& operator= ( const QDomAttr& ); + ~QDomAttr(); + + virtual QString name() const; + virtual bool specified() const; + virtual QString value() const; + virtual void setValue( const QString& ); + + // Reimplemented from QDomNode + QDomNode::NodeType nodeType() const; + bool isAttr() const; + +private: + QDomAttr( QDOM_AttrPrivate* ); + + friend class QDomDocument; + friend class QDomElement; + friend class QDomNode; +}; + +class QM_EXPORT QDomElement : public QDomNode +{ +public: + QDomElement(); + QDomElement( const QDomElement& x ); + QDomElement& operator= ( const QDomElement& ); + ~QDomElement(); + + void setTagName( const QString& name ); + QString tagName() const; + QString attribute( const QString& name, const QString& defValue = QString::null ) const; + void setAttribute( const QString& name, const QString& value ); + void setAttribute( const QString& name, int value ); + void setAttribute( const QString& name, uint value ); + void setAttribute( const QString& name, double value ); + void removeAttribute( const QString& name ); + QDomAttr attributeNode( const QString& name); + QDomAttr setAttributeNode( const QDomAttr& newAttr ); + QDomAttr removeAttributeNode( const QDomAttr& oldAttr ); + bool hasAttribute( const QString& name ) const; + virtual QDomNodeList elementsByTagName( const QString& tagname ) const; + void normalize(); + + // Reimplemented from QDomNode + QDomNamedNodeMap attributes() const; + QDomNode::NodeType nodeType() const; + bool isElement() const; + + QString text() const; + +private: + QDomElement( QDOM_ElementPrivate* ); + + friend class QDomDocument; + friend class QDomNode; +}; + +class QM_EXPORT QDomText : public QDomCharacterData +{ +public: + QDomText(); + QDomText( const QDomText& x ); + QDomText& operator= ( const QDomText& ); + ~QDomText(); + + QDomText splitText( int offset ); + + // Reimplemented from QDomNode + QDomNode::NodeType nodeType() const; + bool isText() const; + +private: + QDomText( QDOM_TextPrivate* ); + + friend class QDomCDATASection; + friend class QDomDocument; + friend class QDomNode; +}; + +class QM_EXPORT QDomComment : public QDomCharacterData +{ +public: + QDomComment(); + QDomComment( const QDomComment& x ); + QDomComment& operator= ( const QDomComment& ); + ~QDomComment(); + + // Reimplemented from QDomNode + QDomNode::NodeType nodeType() const; + bool isComment() const; + +private: + QDomComment( QDOM_CommentPrivate* ); + + friend class QDomDocument; + friend class QDomNode; +}; + +class QM_EXPORT QDomCDATASection : public QDomText +{ +public: + QDomCDATASection(); + QDomCDATASection( const QDomCDATASection& x ); + QDomCDATASection& operator= ( const QDomCDATASection& ); + ~QDomCDATASection(); + + // Reimplemented from QDomNode + QDomNode::NodeType nodeType() const; + bool isCDATASection() const; + +private: + QDomCDATASection( QDOM_CDATASectionPrivate* ); + + friend class QDomDocument; + friend class QDomNode; +}; + +class QM_EXPORT QDomNotation : public QDomNode +{ +public: + QDomNotation(); + QDomNotation( const QDomNotation& x ); + QDomNotation& operator= ( const QDomNotation& ); + ~QDomNotation(); + + QString publicId() const; + QString systemId() const; + + // Reimplemented from QDomNode + QDomNode::NodeType nodeType() const; + bool isNotation() const; + +private: + QDomNotation( QDOM_NotationPrivate* ); + + friend class QDomDocument; + friend class QDomNode; +}; + +class QM_EXPORT QDomEntity : public QDomNode +{ +public: + QDomEntity(); + QDomEntity( const QDomEntity& x ); + QDomEntity& operator= ( const QDomEntity& ); + ~QDomEntity(); + + virtual QString publicId() const; + virtual QString systemId() const; + virtual QString notationName() const; + + // Reimplemented from QDomNode + QDomNode::NodeType nodeType() const; + bool isEntity() const; + +private: + QDomEntity( QDOM_EntityPrivate* ); + + friend class QDomNode; +}; + +class QM_EXPORT QDomEntityReference : public QDomNode +{ +public: + QDomEntityReference(); + QDomEntityReference( const QDomEntityReference& x ); + QDomEntityReference& operator= ( const QDomEntityReference& ); + ~QDomEntityReference(); + + // Reimplemented from QDomNode + QDomNode::NodeType nodeType() const; + bool isEntityReference() const; + +private: + QDomEntityReference( QDOM_EntityReferencePrivate* ); + + friend class QDomDocument; + friend class QDomNode; +}; + +class QM_EXPORT QDomProcessingInstruction : public QDomNode +{ +public: + QDomProcessingInstruction(); + QDomProcessingInstruction( const QDomProcessingInstruction& x ); + QDomProcessingInstruction& operator= ( const QDomProcessingInstruction& ); + ~QDomProcessingInstruction(); + + virtual QString target() const; + virtual QString data() const; + virtual void setData( const QString& d ); + + // Reimplemented from QDomNode + QDomNode::NodeType nodeType() const; + bool isProcessingInstruction() const; + +private: + QDomProcessingInstruction( QDOM_ProcessingInstructionPrivate* ); + + friend class QDomDocument; + friend class QDomNode; +}; + + +QM_EXPORT QTextStream& operator<<( QTextStream&, const QDomNode& ); + +//US #endif //QT_NO_DOM +#endif // QDOM_H |