diff options
Diffstat (limited to 'src/xml/qdom.h')
-rw-r--r-- | src/xml/qdom.h | 677 |
1 files changed, 677 insertions, 0 deletions
diff --git a/src/xml/qdom.h b/src/xml/qdom.h new file mode 100644 index 000000000..804e8dd97 --- /dev/null +++ b/src/xml/qdom.h @@ -0,0 +1,677 @@ +/**************************************************************************** +** +** Definition of TQDomDocument and related classes. +** +** Created : 000518 +** +** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. +** +** This file is part of the xml module of the TQt GUI Toolkit. +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** Alternatively you may (at your option) use any later version +** of the GNU General Public License if such license has been +** publicly approved by Trolltech ASA (or its successors, if any) +** and the KDE Free TQt Foundation. +** +** Please review the following information to ensure GNU General +** Public Licensing retquirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/. +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at sales@trolltech.com. +** +** This file may be used under the terms of the Q Public License as +** defined by Trolltech ASA and appearing in the file LICENSE.TQPL +** included in the packaging of this file. Licensees holding valid TQt +** Commercial licenses may use this file in accordance with the TQt +** Commercial License Agreement provided with the Software. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#ifndef TQDOM_H +#define TQDOM_H + +#ifndef QT_H +#include "qstring.h" +#endif // QT_H + +#if !defined(QT_MODULE_XML) || defined( QT_LICENSE_PROFESSIONAL ) || defined( QT_INTERNAL_XML ) +#define TQM_EXPORT_DOM +#else +#define TQM_EXPORT_DOM Q_EXPORT +#endif + +#ifndef QT_NO_DOM + +class TQIODevice; +class TQTextStream; + +class TQXmlInputSource; +class TQXmlReader; + +class TQDomDocumentPrivate; +class TQDomDocumentTypePrivate; +class TQDomDocumentFragmentPrivate; +class TQDomNodePrivate; +class TQDomNodeListPrivate; +class TQDomImplementationPrivate; +class TQDomElementPrivate; +class TQDomNotationPrivate; +class TQDomEntityPrivate; +class TQDomEntityReferencePrivate; +class TQDomProcessingInstructionPrivate; +class TQDomAttrPrivate; +class TQDomCharacterDataPrivate; +class TQDomTextPrivate; +class TQDomCommentPrivate; +class TQDomCDATASectionPrivate; +class TQDomNamedNodeMapPrivate; +class TQDomImplementationPrivate; + +class TQDomNodeList; +class TQDomElement; +class TQDomText; +class TQDomComment; +class TQDomCDATASection; +class TQDomProcessingInstruction; +class TQDomAttr; +class TQDomEntityReference; +class TQDomDocument; +class TQDomNamedNodeMap; +class TQDomDocument; +class TQDomDocumentFragment; +class TQDomDocumentType; +class TQDomImplementation; +class TQDomNode; +class TQDomEntity; +class TQDomNotation; +class TQDomCharacterData; + +class TQM_EXPORT_DOM TQDomImplementation +{ +public: + TQDomImplementation(); + TQDomImplementation( const TQDomImplementation& ); + virtual ~TQDomImplementation(); + TQDomImplementation& operator= ( const TQDomImplementation& ); + bool operator== ( const TQDomImplementation& ) const; + bool operator!= ( const TQDomImplementation& ) const; + + // functions + virtual bool hasFeature( const TQString& feature, const TQString& version ); + virtual TQDomDocumentType createDocumentType( const TQString& qName, const TQString& publicId, const TQString& systemId ); + virtual TQDomDocument createDocument( const TQString& nsURI, const TQString& qName, const TQDomDocumentType& doctype ); + + // TQt extension + bool isNull(); + +private: + TQDomImplementationPrivate* impl; + TQDomImplementation( TQDomImplementationPrivate* ); + + friend class TQDomDocument; +}; + +class TQM_EXPORT_DOM TQDomNode +{ +public: + enum NodeType { + ElementNode = 1, + AttributeNode = 2, + TextNode = 3, + CDATASectionNode = 4, + EntityReferenceNode = 5, + EntityNode = 6, + ProcessingInstructionNode = 7, + CommentNode = 8, + DocumentNode = 9, + DocumentTypeNode = 10, + DocumentFragmentNode = 11, + NotationNode = 12, + BaseNode = 21,// this is not in the standard + CharacterDataNode = 22 // this is not in the standard + }; + + TQDomNode(); + TQDomNode( const TQDomNode& ); + TQDomNode& operator= ( const TQDomNode& ); + bool operator== ( const TQDomNode& ) const; + bool operator!= ( const TQDomNode& ) const; + virtual ~TQDomNode(); + + // DOM functions + virtual TQDomNode insertBefore( const TQDomNode& newChild, const TQDomNode& refChild ); + virtual TQDomNode insertAfter( const TQDomNode& newChild, const TQDomNode& refChild ); + virtual TQDomNode replaceChild( const TQDomNode& newChild, const TQDomNode& oldChild ); + virtual TQDomNode removeChild( const TQDomNode& oldChild ); + virtual TQDomNode appendChild( const TQDomNode& newChild ); + virtual bool hasChildNodes() const; + virtual TQDomNode cloneNode( bool deep = TRUE ) const; + virtual void normalize(); + virtual bool isSupported( const TQString& feature, const TQString& version ) const; + + // DOM read only attributes + virtual TQString nodeName() const; + virtual TQDomNode::NodeType nodeType() const; + virtual TQDomNode parentNode() const; + virtual TQDomNodeList childNodes() const; + virtual TQDomNode firstChild() const; + virtual TQDomNode lastChild() const; + virtual TQDomNode previousSibling() const; + virtual TQDomNode nextSibling() const; + virtual TQDomNamedNodeMap attributes() const; + virtual TQDomDocument ownerDocument() const; + virtual TQString namespaceURI() const; + virtual TQString localName() const; + virtual bool hasAttributes() const; + + // DOM attributes + virtual TQString nodeValue() const; + virtual void setNodeValue( const TQString& ); + virtual TQString prefix() const; + virtual void setPrefix( const TQString& pre ); + + // TQt extensions + 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 TQDomNodeList + * all the time. + */ + TQDomNode namedItem( const TQString& name ) const; + + bool isNull() const; + void clear(); + + TQDomAttr toAttr(); + TQDomCDATASection toCDATASection(); + TQDomDocumentFragment toDocumentFragment(); + TQDomDocument toDocument(); + TQDomDocumentType toDocumentType(); + TQDomElement toElement(); + TQDomEntityReference toEntityReference(); + TQDomText toText(); + TQDomEntity toEntity(); + TQDomNotation toNotation(); + TQDomProcessingInstruction toProcessingInstruction(); + TQDomCharacterData toCharacterData(); + TQDomComment toComment(); + + void save( TQTextStream&, int ) const; + +protected: + TQDomNodePrivate* impl; + TQDomNode( TQDomNodePrivate* ); + +private: + friend class TQDomDocument; + friend class TQDomDocumentType; + friend class TQDomNodeList; + friend class TQDomNamedNodeMap; +}; + +class TQM_EXPORT_DOM TQDomNodeList +{ +public: + TQDomNodeList(); + TQDomNodeList( const TQDomNodeList& ); + TQDomNodeList& operator= ( const TQDomNodeList& ); + bool operator== ( const TQDomNodeList& ) const; + bool operator!= ( const TQDomNodeList& ) const; + virtual ~TQDomNodeList(); + + // DOM functions + virtual TQDomNode item( int index ) const; + + // DOM read only attributes + virtual uint length() const; + uint count() const { return length(); } // TQt API consitancy + +private: + TQDomNodeListPrivate* impl; + TQDomNodeList( TQDomNodeListPrivate* ); + + friend class TQDomNode; + friend class TQDomElement; + friend class TQDomDocument; +}; + +class TQM_EXPORT_DOM TQDomDocumentType : public TQDomNode +{ +public: + TQDomDocumentType(); + TQDomDocumentType( const TQDomDocumentType& x ); + TQDomDocumentType& operator= ( const TQDomDocumentType& ); + ~TQDomDocumentType(); + + // DOM read only attributes + virtual TQString name() const; + virtual TQDomNamedNodeMap entities() const; + virtual TQDomNamedNodeMap notations() const; + virtual TQString publicId() const; + virtual TQString systemId() const; + virtual TQString internalSubset() const; + + // Reimplemented from TQDomNode + TQDomNode::NodeType nodeType() const; + bool isDocumentType() const; + +private: + TQDomDocumentType( TQDomDocumentTypePrivate* ); + + friend class TQDomImplementation; + friend class TQDomDocument; + friend class TQDomNode; +}; + +class TQM_EXPORT_DOM TQDomDocument : public TQDomNode +{ +public: + TQDomDocument(); + Q_EXPLICIT TQDomDocument( const TQString& name ); + Q_EXPLICIT TQDomDocument( const TQDomDocumentType& doctype ); + TQDomDocument( const TQDomDocument& x ); + TQDomDocument& operator= ( const TQDomDocument& ); + ~TQDomDocument(); + + // DOM functions + TQDomElement createElement( const TQString& tagName ); + TQDomDocumentFragment createDocumentFragment(); + TQDomText createTextNode( const TQString& data ); + TQDomComment createComment( const TQString& data ); + TQDomCDATASection createCDATASection( const TQString& data ); + TQDomProcessingInstruction createProcessingInstruction( const TQString& target, const TQString& data ); + TQDomAttr createAttribute( const TQString& name ); + TQDomEntityReference createEntityReference( const TQString& name ); + TQDomNodeList elementsByTagName( const TQString& tagname ) const; + TQDomNode importNode( const TQDomNode& importedNode, bool deep ); + TQDomElement createElementNS( const TQString& nsURI, const TQString& qName ); + TQDomAttr createAttributeNS( const TQString& nsURI, const TQString& qName ); + TQDomNodeList elementsByTagNameNS( const TQString& nsURI, const TQString& localName ); + TQDomElement elementById( const TQString& elementId ); + + // DOM read only attributes + TQDomDocumentType doctype() const; + TQDomImplementation implementation() const; + TQDomElement documentElement() const; + + // TQt extensions + bool setContent( const TQCString& text, bool namespaceProcessing, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 ); + bool setContent( const TQByteArray& text, bool namespaceProcessing, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 ); + bool setContent( const TQString& text, bool namespaceProcessing, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 ); + bool setContent( TQIODevice* dev, bool namespaceProcessing, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 ); + bool setContent( const TQCString& text, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 ); + bool setContent( const TQByteArray& text, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 ); + bool setContent( const TQString& text, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 ); + bool setContent( TQIODevice* dev, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 ); + + bool setContent( TQXmlInputSource *source, TQXmlReader *reader, TQString *errorMsg=0, int *errorLine=0, int *errorColumn=0 ); + + // Reimplemented from TQDomNode + TQDomNode::NodeType nodeType() const; + bool isDocument() const; + + // TQt extensions + TQString toString() const; // ### TQt 4: merge the two overloads + TQString toString( int ) const; + TQCString toCString() const; // ### TQt 4: merge the two overloads + TQCString toCString( int ) const; + +private: + TQDomDocument( TQDomDocumentPrivate* ); + + friend class TQDomNode; +}; + +class TQM_EXPORT_DOM TQDomNamedNodeMap +{ +public: + TQDomNamedNodeMap(); + TQDomNamedNodeMap( const TQDomNamedNodeMap& ); + TQDomNamedNodeMap& operator= ( const TQDomNamedNodeMap& ); + bool operator== ( const TQDomNamedNodeMap& ) const; + bool operator!= ( const TQDomNamedNodeMap& ) const; + ~TQDomNamedNodeMap(); + + // DOM functions + TQDomNode namedItem( const TQString& name ) const; + TQDomNode setNamedItem( const TQDomNode& newNode ); + TQDomNode removeNamedItem( const TQString& name ); + TQDomNode item( int index ) const; + TQDomNode namedItemNS( const TQString& nsURI, const TQString& localName ) const; + TQDomNode setNamedItemNS( const TQDomNode& newNode ); + TQDomNode removeNamedItemNS( const TQString& nsURI, const TQString& localName ); + + // DOM read only attributes + uint length() const; + uint count() const { return length(); } // TQt API consitancy + + // TQt extension + bool contains( const TQString& name ) const; + +private: + TQDomNamedNodeMapPrivate* impl; + TQDomNamedNodeMap( TQDomNamedNodeMapPrivate* ); + + friend class TQDomNode; + friend class TQDomDocumentType; + friend class TQDomElement; +}; + +class TQM_EXPORT_DOM TQDomDocumentFragment : public TQDomNode +{ +public: + TQDomDocumentFragment(); + TQDomDocumentFragment( const TQDomDocumentFragment& x ); + TQDomDocumentFragment& operator= ( const TQDomDocumentFragment& ); + ~TQDomDocumentFragment(); + + // Reimplemented from TQDomNode + TQDomNode::NodeType nodeType() const; + bool isDocumentFragment() const; + +private: + TQDomDocumentFragment( TQDomDocumentFragmentPrivate* ); + + friend class TQDomDocument; + friend class TQDomNode; +}; + +class TQM_EXPORT_DOM TQDomCharacterData : public TQDomNode +{ +public: + TQDomCharacterData(); + TQDomCharacterData( const TQDomCharacterData& x ); + TQDomCharacterData& operator= ( const TQDomCharacterData& ); + ~TQDomCharacterData(); + + // DOM functions + virtual TQString substringData( unsigned long offset, unsigned long count ); + virtual void appendData( const TQString& arg ); + virtual void insertData( unsigned long offset, const TQString& arg ); + virtual void deleteData( unsigned long offset, unsigned long count ); + virtual void replaceData( unsigned long offset, unsigned long count, const TQString& arg ); + + // DOM read only attributes + virtual uint length() const; + + // DOM attributes + virtual TQString data() const; + virtual void setData( const TQString& ); + + // Reimplemented from TQDomNode + TQDomNode::NodeType nodeType() const; + bool isCharacterData() const; + +private: + TQDomCharacterData( TQDomCharacterDataPrivate* ); + + friend class TQDomDocument; + friend class TQDomText; + friend class TQDomComment; + friend class TQDomNode; +}; + +class TQM_EXPORT_DOM TQDomAttr : public TQDomNode +{ +public: + TQDomAttr(); + TQDomAttr( const TQDomAttr& x ); + TQDomAttr& operator= ( const TQDomAttr& ); + ~TQDomAttr(); + + // DOM read only attributes + virtual TQString name() const; + virtual bool specified() const; + virtual TQDomElement ownerElement() const; + + // DOM attributes + virtual TQString value() const; + virtual void setValue( const TQString& ); + + // Reimplemented from TQDomNode + TQDomNode::NodeType nodeType() const; + bool isAttr() const; + +private: + TQDomAttr( TQDomAttrPrivate* ); + + friend class TQDomDocument; + friend class TQDomElement; + friend class TQDomNode; +}; + +class TQM_EXPORT_DOM TQDomElement : public TQDomNode +{ +public: + TQDomElement(); + TQDomElement( const TQDomElement& x ); + TQDomElement& operator= ( const TQDomElement& ); + ~TQDomElement(); + + // DOM functions + TQString attribute( const TQString& name, const TQString& defValue = TQString::null ) const; + void setAttribute( const TQString& name, const TQString& value ); + void setAttribute( const TQString& name, int value ); + void setAttribute( const TQString& name, uint value ); + void setAttribute( const TQString& name, long value ); + void setAttribute( const TQString& name, ulong value ); + void setAttribute( const TQString& name, double value ); + void removeAttribute( const TQString& name ); + TQDomAttr attributeNode( const TQString& name); + TQDomAttr setAttributeNode( const TQDomAttr& newAttr ); + TQDomAttr removeAttributeNode( const TQDomAttr& oldAttr ); + virtual TQDomNodeList elementsByTagName( const TQString& tagname ) const; + bool hasAttribute( const TQString& name ) const; + + TQString attributeNS( const TQString nsURI, const TQString& localName, const TQString& defValue ) const; + void setAttributeNS( const TQString nsURI, const TQString& qName, const TQString& value ); + void setAttributeNS( const TQString nsURI, const TQString& qName, int value ); + void setAttributeNS( const TQString nsURI, const TQString& qName, uint value ); + void setAttributeNS( const TQString nsURI, const TQString& qName, long value ); + void setAttributeNS( const TQString nsURI, const TQString& qName, ulong value ); + void setAttributeNS( const TQString nsURI, const TQString& qName, double value ); + void removeAttributeNS( const TQString& nsURI, const TQString& localName ); + TQDomAttr attributeNodeNS( const TQString& nsURI, const TQString& localName ); + TQDomAttr setAttributeNodeNS( const TQDomAttr& newAttr ); + virtual TQDomNodeList elementsByTagNameNS( const TQString& nsURI, const TQString& localName ) const; + bool hasAttributeNS( const TQString& nsURI, const TQString& localName ) const; + + // DOM read only attributes + TQString tagName() const; + void setTagName( const TQString& name ); // TQt extension + + // Reimplemented from TQDomNode + TQDomNamedNodeMap attributes() const; + TQDomNode::NodeType nodeType() const; + bool isElement() const; + + TQString text() const; + +private: + TQDomElement( TQDomElementPrivate* ); + + friend class TQDomDocument; + friend class TQDomNode; + friend class TQDomAttr; +}; + +class TQM_EXPORT_DOM TQDomText : public TQDomCharacterData +{ +public: + TQDomText(); + TQDomText( const TQDomText& x ); + TQDomText& operator= ( const TQDomText& ); + ~TQDomText(); + + // DOM functions + TQDomText splitText( int offset ); + + // Reimplemented from TQDomNode + TQDomNode::NodeType nodeType() const; + bool isText() const; + +private: + TQDomText( TQDomTextPrivate* ); + + friend class TQDomCDATASection; + friend class TQDomDocument; + friend class TQDomNode; +}; + +class TQM_EXPORT_DOM TQDomComment : public TQDomCharacterData +{ +public: + TQDomComment(); + TQDomComment( const TQDomComment& x ); + TQDomComment& operator= ( const TQDomComment& ); + ~TQDomComment(); + + // Reimplemented from TQDomNode + TQDomNode::NodeType nodeType() const; + bool isComment() const; + +private: + TQDomComment( TQDomCommentPrivate* ); + + friend class TQDomDocument; + friend class TQDomNode; +}; + +class TQM_EXPORT_DOM TQDomCDATASection : public TQDomText +{ +public: + TQDomCDATASection(); + TQDomCDATASection( const TQDomCDATASection& x ); + TQDomCDATASection& operator= ( const TQDomCDATASection& ); + ~TQDomCDATASection(); + + // Reimplemented from TQDomNode + TQDomNode::NodeType nodeType() const; + bool isCDATASection() const; + +private: + TQDomCDATASection( TQDomCDATASectionPrivate* ); + + friend class TQDomDocument; + friend class TQDomNode; +}; + +class TQM_EXPORT_DOM TQDomNotation : public TQDomNode +{ +public: + TQDomNotation(); + TQDomNotation( const TQDomNotation& x ); + TQDomNotation& operator= ( const TQDomNotation& ); + ~TQDomNotation(); + + // DOM read only attributes + TQString publicId() const; + TQString systemId() const; + + // Reimplemented from TQDomNode + TQDomNode::NodeType nodeType() const; + bool isNotation() const; + +private: + TQDomNotation( TQDomNotationPrivate* ); + + friend class TQDomDocument; + friend class TQDomNode; +}; + +class TQM_EXPORT_DOM TQDomEntity : public TQDomNode +{ +public: + TQDomEntity(); + TQDomEntity( const TQDomEntity& x ); + TQDomEntity& operator= ( const TQDomEntity& ); + ~TQDomEntity(); + + // DOM read only attributes + virtual TQString publicId() const; + virtual TQString systemId() const; + virtual TQString notationName() const; + + // Reimplemented from TQDomNode + TQDomNode::NodeType nodeType() const; + bool isEntity() const; + +private: + TQDomEntity( TQDomEntityPrivate* ); + + friend class TQDomNode; +}; + +class TQM_EXPORT_DOM TQDomEntityReference : public TQDomNode +{ +public: + TQDomEntityReference(); + TQDomEntityReference( const TQDomEntityReference& x ); + TQDomEntityReference& operator= ( const TQDomEntityReference& ); + ~TQDomEntityReference(); + + // Reimplemented from TQDomNode + TQDomNode::NodeType nodeType() const; + bool isEntityReference() const; + +private: + TQDomEntityReference( TQDomEntityReferencePrivate* ); + + friend class TQDomDocument; + friend class TQDomNode; +}; + +class TQM_EXPORT_DOM TQDomProcessingInstruction : public TQDomNode +{ +public: + TQDomProcessingInstruction(); + TQDomProcessingInstruction( const TQDomProcessingInstruction& x ); + TQDomProcessingInstruction& operator= ( const TQDomProcessingInstruction& ); + ~TQDomProcessingInstruction(); + + // DOM read only attributes + virtual TQString target() const; + + // DOM attributes + virtual TQString data() const; + virtual void setData( const TQString& d ); + + // Reimplemented from TQDomNode + TQDomNode::NodeType nodeType() const; + bool isProcessingInstruction() const; + +private: + TQDomProcessingInstruction( TQDomProcessingInstructionPrivate* ); + + friend class TQDomDocument; + friend class TQDomNode; +}; + + +TQM_EXPORT_DOM TQTextStream& operator<<( TQTextStream&, const TQDomNode& ); + +#endif //QT_NO_DOM +#endif // TQDOM_H |