diff options
Diffstat (limited to 'tqtinterface/qt4/src/xml/tqxml.h')
| -rw-r--r-- | tqtinterface/qt4/src/xml/tqxml.h | 531 | 
1 files changed, 531 insertions, 0 deletions
| diff --git a/tqtinterface/qt4/src/xml/tqxml.h b/tqtinterface/qt4/src/xml/tqxml.h new file mode 100644 index 0000000..9a5c9c0 --- /dev/null +++ b/tqtinterface/qt4/src/xml/tqxml.h @@ -0,0 +1,531 @@ +/**************************************************************************** +** +** Definition of TQXmlSimpleReader and related classes. +** +** Created : 000518 +** +** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA. +** +** 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 requirements 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 TQXML_H +#define TQXML_H + +#ifndef TQT_H +#include "tqtextstream.h" +#include "tqfile.h" +#include "tqstring.h" +#include "tqstringlist.h" +#include "tqvaluevector.h" +#endif // TQT_H + +#if !defined(TQT_MODULE_XML) || defined( TQT_LICENSE_PROFESSIONAL ) || defined( TQT_INTERNAL_XML ) +#define TQM_EXPORT_XML +#else +#define TQM_EXPORT_XML TQ_EXPORT +#endif + +#ifndef TQT_NO_XML + +class TQXmlNamespaceSupport; +class TQXmlAttributes; +class TQXmlContentHandler; +class TQXmlDefaultHandler; +class TQXmlDTDHandler; +class TQXmlEntityResolver; +class TQXmlErrorHandler; +class TQXmlLexicalHandler; +class TQXmlDeclHandler; +class TQXmlInputSource; +class TQXmlLocator; +class TQXmlNamespaceSupport; +class TQXmlParseException; + +class TQXmlReader; +class TQXmlSimpleReader; + +class TQXmlSimpleReaderPrivate; +class TQXmlNamespaceSupportPrivate; +class TQXmlAttributesPrivate; +class TQXmlInputSourcePrivate; +class TQXmlParseExceptionPrivate; +class TQXmlLocatorPrivate; +class TQXmlDefaultHandlerPrivate; + + +// +// SAX Namespace Support +// + +class TQM_EXPORT_XML TQXmlNamespaceSupport +{ +public: +    TQXmlNamespaceSupport(); +    ~TQXmlNamespaceSupport(); + +    void setPrefix( const TQString&, const TQString& ); + +    TQString prefix( const TQString& ) const; +    TQString uri( const TQString& ) const; +    void splitName( const TQString&, TQString&, TQString& ) const; +    void processName( const TQString&, bool, TQString&, TQString& ) const; +    TQStringList prefixes() const; +    TQStringList prefixes( const TQString& ) const; + +    void pushContext(); +    void popContext(); +    void reset(); + +private: +    TQXmlNamespaceSupportPrivate *d; + +    friend class TQXmlSimpleReader; +}; + + +// +// SAX Attributes +// + +class TQM_EXPORT_XML TQXmlAttributes +{ +public: +    TQXmlAttributes() {} +    virtual ~TQXmlAttributes() {} + +    int index( const TQString& qName ) const; +    int index( const TQString& uri, const TQString& localPart ) const; +    int length() const; +    int count() const; +    TQString localName( int index ) const; +    TQString qName( int index ) const; +    TQString uri( int index ) const; +    TQString type( int index ) const; +    TQString type( const TQString& qName ) const; +    TQString type( const TQString& uri, const TQString& localName ) const; +    TQString value( int index ) const; +    TQString value( const TQString& qName ) const; +    TQString value( const TQString& uri, const TQString& localName ) const; + +    void clear(); +    void append( const TQString &qName, const TQString &uri, const TQString &localPart, const TQString &value ); + +private: +    TQStringList qnameList; +    TQStringList uriList; +    TQStringList localnameList; +    TQStringList valueList; + +    TQXmlAttributesPrivate *d; +}; + +// +// SAX Input Source +// + +class TQM_EXPORT_XML TQXmlInputSource +{ +public: +    TQXmlInputSource(); +    TQXmlInputSource( TQIODevice *dev ); +    TQXmlInputSource( TQFile& file ); // obsolete +    TQXmlInputSource( TQTextStream& stream ); // obsolete +    virtual ~TQXmlInputSource(); + +    virtual void setData( const TQString& dat ); +    virtual void setData( const TQByteArray& dat ); +    virtual void fetchData(); +    virtual TQString data(); +    virtual TQChar next(); +    virtual void reset(); + +    static const TQChar EndOfData; +    static const TQChar EndOfDocument; + +protected: +    virtual TQString fromRawData( const TQByteArray &data, bool beginning = FALSE ); + +private: +    void init(); + +    TQIODevice *inputDevice; +    TQTextStream *inputStream; + +    TQString str; +    const TQChar *tqunicode; +    int pos; +    int length; +    bool nextReturnedEndOfData; +    TQTextDecoder *encMapper; + +    TQXmlInputSourcePrivate *d; +}; + +// +// SAX Exception Classes +// + +class TQM_EXPORT_XML TQXmlParseException +{ +public: +    TQXmlParseException( const TQString& name="", int c=-1, int l=-1, const TQString& p="", const TQString& s="" ) +	: msg( name ), column( c ), line( l ), pub( p ), sys( s ) +    { } + +    int columnNumber() const; +    int lineNumber() const; +    TQString publicId() const; +    TQString systemId() const; +    TQString message() const; + +private: +    TQString msg; +    int column; +    int line; +    TQString pub; +    TQString sys; + +    TQXmlParseExceptionPrivate *d; +}; + + +// +// XML Reader +// + +class TQM_EXPORT_XML TQXmlReader +{ +public: +    virtual bool feature( const TQString& name, bool *ok = 0 ) const = 0; +    virtual void setFeature( const TQString& name, bool value ) = 0; +    virtual bool hasFeature( const TQString& name ) const = 0; +    virtual void* property( const TQString& name, bool *ok = 0 ) const = 0; +    virtual void setProperty( const TQString& name, void* value ) = 0; +    virtual bool hasProperty( const TQString& name ) const = 0; +    virtual void setEntityResolver( TQXmlEntityResolver* handler ) = 0; +    virtual TQXmlEntityResolver* entityResolver() const = 0; +    virtual void setDTDHandler( TQXmlDTDHandler* handler ) = 0; +    virtual TQXmlDTDHandler* DTDHandler() const = 0; +    virtual void setContentHandler( TQXmlContentHandler* handler ) = 0; +    virtual TQXmlContentHandler* contentHandler() const = 0; +    virtual void setErrorHandler( TQXmlErrorHandler* handler ) = 0; +    virtual TQXmlErrorHandler* errorHandler() const = 0; +    virtual void setLexicalHandler( TQXmlLexicalHandler* handler ) = 0; +    virtual TQXmlLexicalHandler* lexicalHandler() const = 0; +    virtual void setDeclHandler( TQXmlDeclHandler* handler ) = 0; +    virtual TQXmlDeclHandler* declHandler() const = 0; +    virtual bool parse( const TQXmlInputSource& input ) = 0; +    virtual bool parse( const TQXmlInputSource* input ) = 0; +}; + +class TQM_EXPORT_XML TQXmlSimpleReader : public TQXmlReader +{ +public: +    TQXmlSimpleReader(); +    virtual ~TQXmlSimpleReader(); + +    bool feature( const TQString& name, bool *ok = 0 ) const; +    void setFeature( const TQString& name, bool value ); +    bool hasFeature( const TQString& name ) const; + +    void* property( const TQString& name, bool *ok = 0 ) const; +    void setProperty( const TQString& name, void* value ); +    bool hasProperty( const TQString& name ) const; + +    void setEntityResolver( TQXmlEntityResolver* handler ); +    TQXmlEntityResolver* entityResolver() const; +    void setDTDHandler( TQXmlDTDHandler* handler ); +    TQXmlDTDHandler* DTDHandler() const; +    void setContentHandler( TQXmlContentHandler* handler ); +    TQXmlContentHandler* contentHandler() const; +    void setErrorHandler( TQXmlErrorHandler* handler ); +    TQXmlErrorHandler* errorHandler() const; +    void setLexicalHandler( TQXmlLexicalHandler* handler ); +    TQXmlLexicalHandler* lexicalHandler() const; +    void setDeclHandler( TQXmlDeclHandler* handler ); +    TQXmlDeclHandler* declHandler() const; + +    bool parse( const TQXmlInputSource& input ); +    bool parse( const TQXmlInputSource* input ); +    virtual bool parse( const TQXmlInputSource* input, bool incremental ); +    virtual bool parseContinue(); + +private: +    // variables +    TQXmlContentHandler *contentHnd; +    TQXmlErrorHandler   *errorHnd; +    TQXmlDTDHandler     *dtdHnd; +    TQXmlEntityResolver *entityRes; +    TQXmlLexicalHandler *lexicalHnd; +    TQXmlDeclHandler    *declHnd; + +    TQXmlInputSource *inputSource; + +    TQChar c; // the character at reading position +    int   lineNr; // number of line +    int   columnNr; // position in line + +    int     nameArrayPos; +    TQChar   nameArray[256]; // only used for names +    TQString nameValue; // only used for names +    int     refArrayPos; +    TQChar   refArray[256]; // only used for references +    TQString refValue; // only used for references +    int     stringArrayPos; +    TQChar   stringArray[256]; // used for any other strings that are parsed +    TQString stringValue; // used for any other strings that are parsed + +    TQXmlSimpleReaderPrivate* d; + +    const TQString &string(); +    void stringClear(); +    inline void stringAddC() { stringAddC(c); } +    void stringAddC(const TQChar&); +    const TQString& name(); +    void nameClear(); +    inline void nameAddC() { nameAddC(c); } +    void nameAddC(const TQChar&); +    const TQString& ref(); +    void refClear(); +    inline void refAddC() { refAddC(c); } +    void refAddC(const TQChar&); + +    // used by parseReference() and parsePEReference() +    enum EntityRecognitionContext { InContent, InAttributeValue, InEntityValue, InDTD }; + +    // private functions +    bool eat_ws(); +    bool next_eat_ws(); + +    void next(); +    bool atEnd(); + +    void init( const TQXmlInputSource* i ); +    void initData(); + +    bool entityExist( const TQString& ) const; + +    bool parseBeginOrContinue( int state, bool incremental ); + +    bool parseProlog(); +    bool parseElement(); +    bool processElementEmptyTag(); +    bool processElementETagBegin2(); +    bool processElementAttribute(); +    bool parseMisc(); +    bool parseContent(); + +    bool parsePI(); +    bool parseDoctype(); +    bool parseComment(); + +    bool parseName(); +    bool parseNmtoken(); +    bool parseAttribute(); +    bool parseReference(); +    bool processReference(); + +    bool parseExternalID(); +    bool parsePEReference(); +    bool parseMarkupdecl(); +    bool parseAttlistDecl(); +    bool parseAttType(); +    bool parseAttValue(); +    bool parseElementDecl(); +    bool parseNotationDecl(); +    bool parseChoiceSeq(); +    bool parseEntityDecl(); +    bool parseEntityValue(); + +    bool parseString(); + +    bool insertXmlRef( const TQString&, const TQString&, bool ); + +    bool reportEndEntities(); +    void reportParseError( const TQString& error ); + +    typedef bool (TQXmlSimpleReader::*ParseFunction) (); +    void unexpectedEof( ParseFunction where, int state ); +    void parseFailed( ParseFunction where, int state ); +    void pushParseState( ParseFunction function, int state ); + +    void setUndefEntityInAttrHack(bool b); + +    friend class TQXmlSimpleReaderPrivate; +    friend class TQXmlSimpleReaderLocator; +    friend class TQDomDocumentPrivate; +}; + +// +// SAX Locator +// + +class TQM_EXPORT_XML TQXmlLocator +{ +public: +    TQXmlLocator(); +    virtual ~TQXmlLocator(); + +    virtual int columnNumber() = 0; +    virtual int lineNumber() = 0; +//    TQString getPublicId() +//    TQString getSystemId() +}; + +// +// SAX handler classes +// + +class TQM_EXPORT_XML TQXmlContentHandler +{ +public: +    virtual void setDocumentLocator( TQXmlLocator* locator ) = 0; +    virtual bool startDocument() = 0; +    virtual bool endDocument() = 0; +    virtual bool startPrefixMapping( const TQString& prefix, const TQString& uri ) = 0; +    virtual bool endPrefixMapping( const TQString& prefix ) = 0; +    virtual bool startElement( const TQString& namespaceURI, const TQString& localName, const TQString& qName, const TQXmlAttributes& atts ) = 0; +    virtual bool endElement( const TQString& namespaceURI, const TQString& localName, const TQString& qName ) = 0; +    virtual bool characters( const TQString& ch ) = 0; +    virtual bool ignorableWhitespace( const TQString& ch ) = 0; +    virtual bool processingInstruction( const TQString& target, const TQString& data ) = 0; +    virtual bool skippedEntity( const TQString& name ) = 0; +    virtual TQString errorString() = 0; +}; + +class TQM_EXPORT_XML TQXmlErrorHandler +{ +public: +    virtual bool warning( const TQXmlParseException& exception ) = 0; +    virtual bool error( const TQXmlParseException& exception ) = 0; +    virtual bool fatalError( const TQXmlParseException& exception ) = 0; +    virtual TQString errorString() = 0; +}; + +class TQM_EXPORT_XML TQXmlDTDHandler +{ +public: +    virtual bool notationDecl( const TQString& name, const TQString& publicId, const TQString& systemId ) = 0; +    virtual bool unparsedEntityDecl( const TQString& name, const TQString& publicId, const TQString& systemId, const TQString& notationName ) = 0; +    virtual TQString errorString() = 0; +}; + +class TQM_EXPORT_XML TQXmlEntityResolver +{ +public: +    virtual bool resolveEntity( const TQString& publicId, const TQString& systemId, TQXmlInputSource*& ret ) = 0; +    virtual TQString errorString() = 0; +}; + +class TQM_EXPORT_XML TQXmlLexicalHandler +{ +public: +    virtual bool startDTD( const TQString& name, const TQString& publicId, const TQString& systemId ) = 0; +    virtual bool endDTD() = 0; +    virtual bool startEntity( const TQString& name ) = 0; +    virtual bool endEntity( const TQString& name ) = 0; +    virtual bool startCDATA() = 0; +    virtual bool endCDATA() = 0; +    virtual bool comment( const TQString& ch ) = 0; +    virtual TQString errorString() = 0; +}; + +class TQM_EXPORT_XML TQXmlDeclHandler +{ +public: +    virtual bool attributeDecl( const TQString& eName, const TQString& aName, const TQString& type, const TQString& valueDefault, const TQString& value ) = 0; +    virtual bool internalEntityDecl( const TQString& name, const TQString& value ) = 0; +    virtual bool externalEntityDecl( const TQString& name, const TQString& publicId, const TQString& systemId ) = 0; +    virtual TQString errorString() = 0; +}; + + +class TQM_EXPORT_XML TQXmlDefaultHandler : public TQXmlContentHandler, public TQXmlErrorHandler, public TQXmlDTDHandler, public TQXmlEntityResolver, public TQXmlLexicalHandler, public TQXmlDeclHandler +{ +public: +    TQXmlDefaultHandler() { } +    virtual ~TQXmlDefaultHandler() { } + +    void setDocumentLocator( TQXmlLocator* locator ); +    bool startDocument(); +    bool endDocument(); +    bool startPrefixMapping( const TQString& prefix, const TQString& uri ); +    bool endPrefixMapping( const TQString& prefix ); +    bool startElement( const TQString& namespaceURI, const TQString& localName, const TQString& qName, const TQXmlAttributes& atts ); +    bool endElement( const TQString& namespaceURI, const TQString& localName, const TQString& qName ); +    bool characters( const TQString& ch ); +    bool ignorableWhitespace( const TQString& ch ); +    bool processingInstruction( const TQString& target, const TQString& data ); +    bool skippedEntity( const TQString& name ); + +    bool warning( const TQXmlParseException& exception ); +    bool error( const TQXmlParseException& exception ); +    bool fatalError( const TQXmlParseException& exception ); + +    bool notationDecl( const TQString& name, const TQString& publicId, const TQString& systemId ); +    bool unparsedEntityDecl( const TQString& name, const TQString& publicId, const TQString& systemId, const TQString& notationName ); + +    bool resolveEntity( const TQString& publicId, const TQString& systemId, TQXmlInputSource*& ret ); + +    bool startDTD( const TQString& name, const TQString& publicId, const TQString& systemId ); +    bool endDTD(); +    bool startEntity( const TQString& name ); +    bool endEntity( const TQString& name ); +    bool startCDATA(); +    bool endCDATA(); +    bool comment( const TQString& ch ); + +    bool attributeDecl( const TQString& eName, const TQString& aName, const TQString& type, const TQString& valueDefault, const TQString& value ); +    bool internalEntityDecl( const TQString& name, const TQString& value ); +    bool externalEntityDecl( const TQString& name, const TQString& publicId, const TQString& systemId ); + +    TQString errorString(); + +private: +    TQXmlDefaultHandlerPrivate *d; +}; + + +// +// inlines +// + +inline bool TQXmlSimpleReader::atEnd() +{ return (c.tqunicode()|0x0001) == 0xffff; } +inline int TQXmlAttributes::count() const +{ return length(); } + + +#endif //TQT_NO_XML + +#endif | 
