Blame qtools/qxml.h

Packit 1c1d7e
/****************************************************************************
Packit 1c1d7e
** 
Packit 1c1d7e
**
Packit 1c1d7e
** Definition of QXmlSimpleReader and related classes.
Packit 1c1d7e
**
Packit 1c1d7e
** Created : 000518
Packit 1c1d7e
**
Packit 1c1d7e
** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
Packit 1c1d7e
**
Packit 1c1d7e
** This file is part of the XML module of the Qt GUI Toolkit.
Packit 1c1d7e
**
Packit 1c1d7e
** This file may be distributed under the terms of the Q Public License
Packit 1c1d7e
** as defined by Trolltech AS of Norway and appearing in the file
Packit 1c1d7e
** LICENSE.QPL included in the packaging of this file.
Packit 1c1d7e
**
Packit 1c1d7e
** This file may be distributed and/or modified under the terms of the
Packit 1c1d7e
** GNU General Public License version 2 as published by the Free Software
Packit 1c1d7e
** Foundation and appearing in the file LICENSE.GPL included in the
Packit 1c1d7e
** packaging of this file.
Packit 1c1d7e
**
Packit 1c1d7e
** Licensees holding valid Qt Enterprise Edition licenses may use this
Packit 1c1d7e
** file in accordance with the Qt Commercial License Agreement provided
Packit 1c1d7e
** with the Software.
Packit 1c1d7e
**
Packit 1c1d7e
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
Packit 1c1d7e
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Packit 1c1d7e
**
Packit 1c1d7e
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
Packit 1c1d7e
**   information about Qt Commercial License Agreements.
Packit 1c1d7e
** See http://www.trolltech.com/qpl/ for QPL licensing information.
Packit 1c1d7e
** See http://www.trolltech.com/gpl/ for GPL licensing information.
Packit 1c1d7e
**
Packit 1c1d7e
** Contact info@trolltech.com if any conditions of this licensing are
Packit 1c1d7e
** not clear to you.
Packit 1c1d7e
**
Packit 1c1d7e
**********************************************************************/
Packit 1c1d7e
Packit 1c1d7e
#ifndef QXML_H
Packit 1c1d7e
#define QXML_H
Packit 1c1d7e
Packit 1c1d7e
#include <qmodules.h>
Packit 1c1d7e
Packit 1c1d7e
#if !defined(QT_MODULE_XML)
Packit 1c1d7e
#define QM_EXPORT
Packit 1c1d7e
#else
Packit 1c1d7e
#define QM_EXPORT Q_EXPORT
Packit 1c1d7e
#endif
Packit 1c1d7e
Packit 1c1d7e
#ifndef QT_H
Packit 1c1d7e
#include <qtextstream.h>
Packit 1c1d7e
#include <qfile.h>
Packit 1c1d7e
#include <qstring.h>
Packit 1c1d7e
#include <qstringlist.h>
Packit 1c1d7e
#include <qvaluestack.h>
Packit 1c1d7e
#include <qmap.h>
Packit 1c1d7e
#endif // QT_H
Packit 1c1d7e
Packit 1c1d7e
#ifndef QT_NO_XML
Packit 1c1d7e
Packit 1c1d7e
class QXmlNamespaceSupport;
Packit 1c1d7e
class QXmlAttributes;
Packit 1c1d7e
class QXmlContentHandler;
Packit 1c1d7e
class QXmlDefaultHandler;
Packit 1c1d7e
class QXmlDTDHandler;
Packit 1c1d7e
class QXmlEntityResolver;
Packit 1c1d7e
class QXmlErrorHandler;
Packit 1c1d7e
class QXmlLexicalHandler;
Packit 1c1d7e
class QXmlDeclHandler;
Packit 1c1d7e
class QXmlInputSource;
Packit 1c1d7e
class QXmlLocator;
Packit 1c1d7e
class QXmlNamespaceSupport;
Packit 1c1d7e
class QXmlParseException;
Packit 1c1d7e
Packit 1c1d7e
class QXmlReader;
Packit 1c1d7e
class QXmlSimpleReader;
Packit 1c1d7e
Packit 1c1d7e
class QXmlSimpleReaderPrivate;
Packit 1c1d7e
class QXmlNamespaceSupportPrivate;
Packit 1c1d7e
class QXmlAttributesPrivate;
Packit 1c1d7e
class QXmlInputSourcePrivate;
Packit 1c1d7e
class QXmlParseExceptionPrivate;
Packit 1c1d7e
class QXmlLocatorPrivate;
Packit 1c1d7e
class QXmlDefaultHandlerPrivate;
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
//
Packit 1c1d7e
// SAX Namespace Support
Packit 1c1d7e
//
Packit 1c1d7e
Packit 1c1d7e
#if defined(Q_TEMPLATEDLL)
Packit 1c1d7e
// MOC_SKIP_BEGIN
Packit 1c1d7e
template class QM_EXPORT QMap<QString, QString>;
Packit 1c1d7e
template class QM_EXPORT QValueStack<QMap<QString, QString> >;
Packit 1c1d7e
template class QM_EXPORT QValueStack<QString>;
Packit 1c1d7e
// MOC_SKIP_END
Packit 1c1d7e
#endif
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlNamespaceSupport
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    QXmlNamespaceSupport();
Packit 1c1d7e
    ~QXmlNamespaceSupport();
Packit 1c1d7e
Packit 1c1d7e
    void setPrefix( const QString&, const QString& );
Packit 1c1d7e
Packit 1c1d7e
    QString prefix( const QString& ) const;
Packit 1c1d7e
    QString uri( const QString& ) const;
Packit 1c1d7e
    void splitName( const QString&, QString&, QString& ) const;
Packit 1c1d7e
    void processName( const QString&, bool, QString&, QString& ) const;
Packit 1c1d7e
    QStringList prefixes() const;
Packit 1c1d7e
    QStringList prefixes( const QString& ) const;
Packit 1c1d7e
Packit 1c1d7e
    void pushContext();
Packit 1c1d7e
    void popContext();
Packit 1c1d7e
    void reset();
Packit 1c1d7e
private:
Packit 1c1d7e
    QValueStack<QMap<QString, QString> > nsStack;
Packit 1c1d7e
    QMap<QString, QString> ns;
Packit 1c1d7e
Packit 1c1d7e
    //QXmlNamespaceSupportPrivate *d;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
//
Packit 1c1d7e
// SAX Attributes
Packit 1c1d7e
//
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlAttributes
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    QXmlAttributes() {}
Packit 1c1d7e
    virtual ~QXmlAttributes() {}
Packit 1c1d7e
Packit 1c1d7e
    int index( const QString& qName ) const;
Packit 1c1d7e
    int index( const QString& uri, const QString& localPart ) const;
Packit 1c1d7e
    int length() const;
Packit 1c1d7e
    QString localName( int index ) const;
Packit 1c1d7e
    QString qName( int index ) const;
Packit 1c1d7e
    QString uri( int index ) const;
Packit 1c1d7e
    QString type( int index ) const;
Packit 1c1d7e
    QString type( const QString& qName ) const;
Packit 1c1d7e
    QString type( const QString& uri, const QString& localName ) const;
Packit 1c1d7e
    QString value( int index ) const;
Packit 1c1d7e
    QString value( const QString& qName ) const;
Packit 1c1d7e
    QString value( const QString& uri, const QString& localName ) const;
Packit 1c1d7e
Packit 1c1d7e
private:
Packit 1c1d7e
    QStringList qnameList;
Packit 1c1d7e
    QStringList uriList;
Packit 1c1d7e
    QStringList localnameList;
Packit 1c1d7e
    QStringList valueList;
Packit 1c1d7e
Packit 1c1d7e
    //QXmlAttributesPrivate *d;
Packit 1c1d7e
Packit 1c1d7e
    friend class QXmlSimpleReader;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//
Packit 1c1d7e
// SAX Input Source
Packit 1c1d7e
//
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlInputSource
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    QXmlInputSource();
Packit 1c1d7e
    QXmlInputSource( QTextStream& stream );
Packit 1c1d7e
    QXmlInputSource( QFile& file );
Packit 1c1d7e
    virtual ~QXmlInputSource();
Packit 1c1d7e
Packit 1c1d7e
    virtual const QString& data() const;
Packit 1c1d7e
    virtual void setData( const QString& d );
Packit 1c1d7e
Packit 1c1d7e
private:
Packit 1c1d7e
    void readInput( QByteArray& rawData );
Packit 1c1d7e
Packit 1c1d7e
    QString input;
Packit 1c1d7e
Packit 1c1d7e
    //QXmlInputSourcePrivate *d;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//
Packit 1c1d7e
// SAX Exception Classes
Packit 1c1d7e
//
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlParseException
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    QXmlParseException( const QString& name="", int c=-1, int l=-1, const QString& p="", const QString& s="" )
Packit 1c1d7e
	: msg( name ), column( c ), line( l ), pub( p ), sys( s )
Packit 1c1d7e
    { }
Packit 1c1d7e
Packit 1c1d7e
    int columnNumber() const;
Packit 1c1d7e
    int lineNumber() const;
Packit 1c1d7e
    QString publicId() const;
Packit 1c1d7e
    QString systemId() const;
Packit 1c1d7e
    QString message() const;
Packit 1c1d7e
Packit 1c1d7e
private:
Packit 1c1d7e
    QString msg;
Packit 1c1d7e
    int column;
Packit 1c1d7e
    int line;
Packit 1c1d7e
    QString pub;
Packit 1c1d7e
    QString sys;
Packit 1c1d7e
Packit 1c1d7e
    //QXmlParseExceptionPrivate *d;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
//
Packit 1c1d7e
// XML Reader
Packit 1c1d7e
//
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlReader
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    virtual ~QXmlReader() {}
Packit 1c1d7e
    virtual bool feature( const QString& name, bool *ok = 0 ) const = 0;
Packit 1c1d7e
    virtual void setFeature( const QString& name, bool value ) = 0;
Packit 1c1d7e
    virtual bool hasFeature( const QString& name ) const = 0;
Packit 1c1d7e
    virtual void* property( const QString& name, bool *ok = 0 ) const = 0;
Packit 1c1d7e
    virtual void setProperty( const QString& name, void* value ) = 0;
Packit 1c1d7e
    virtual bool hasProperty( const QString& name ) const = 0;
Packit 1c1d7e
    virtual void setEntityResolver( QXmlEntityResolver* handler ) = 0;
Packit 1c1d7e
    virtual QXmlEntityResolver* entityResolver() const = 0;
Packit 1c1d7e
    virtual void setDTDHandler( QXmlDTDHandler* handler ) = 0;
Packit 1c1d7e
    virtual QXmlDTDHandler* DTDHandler() const = 0;
Packit 1c1d7e
    virtual void setContentHandler( QXmlContentHandler* handler ) = 0;
Packit 1c1d7e
    virtual QXmlContentHandler* contentHandler() const = 0;
Packit 1c1d7e
    virtual void setErrorHandler( QXmlErrorHandler* handler ) = 0;
Packit 1c1d7e
    virtual QXmlErrorHandler* errorHandler() const = 0;
Packit 1c1d7e
    virtual void setLexicalHandler( QXmlLexicalHandler* handler ) = 0;
Packit 1c1d7e
    virtual QXmlLexicalHandler* lexicalHandler() const = 0;
Packit 1c1d7e
    virtual void setDeclHandler( QXmlDeclHandler* handler ) = 0;
Packit 1c1d7e
    virtual QXmlDeclHandler* declHandler() const = 0;
Packit 1c1d7e
    virtual bool parse( const QXmlInputSource& input ) = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlSimpleReader : public QXmlReader
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    QXmlSimpleReader();
Packit 1c1d7e
    virtual ~QXmlSimpleReader();
Packit 1c1d7e
Packit 1c1d7e
    bool feature( const QString& name, bool *ok = 0 ) const;
Packit 1c1d7e
    void setFeature( const QString& name, bool value );
Packit 1c1d7e
    bool hasFeature( const QString& name ) const;
Packit 1c1d7e
Packit 1c1d7e
    void* property( const QString& name, bool *ok = 0 ) const;
Packit 1c1d7e
    void setProperty( const QString& name, void* value );
Packit 1c1d7e
    bool hasProperty( const QString& name ) const;
Packit 1c1d7e
Packit 1c1d7e
    void setEntityResolver( QXmlEntityResolver* handler );
Packit 1c1d7e
    QXmlEntityResolver* entityResolver() const;
Packit 1c1d7e
    void setDTDHandler( QXmlDTDHandler* handler );
Packit 1c1d7e
    QXmlDTDHandler* DTDHandler() const;
Packit 1c1d7e
    void setContentHandler( QXmlContentHandler* handler );
Packit 1c1d7e
    QXmlContentHandler* contentHandler() const;
Packit 1c1d7e
    void setErrorHandler( QXmlErrorHandler* handler );
Packit 1c1d7e
    QXmlErrorHandler* errorHandler() const;
Packit 1c1d7e
    void setLexicalHandler( QXmlLexicalHandler* handler );
Packit 1c1d7e
    QXmlLexicalHandler* lexicalHandler() const;
Packit 1c1d7e
    void setDeclHandler( QXmlDeclHandler* handler );
Packit 1c1d7e
    QXmlDeclHandler* declHandler() const;
Packit 1c1d7e
Packit 1c1d7e
    bool parse( const QXmlInputSource& input );
Packit 1c1d7e
Packit 1c1d7e
private:
Packit 1c1d7e
    // variables
Packit 1c1d7e
    QXmlContentHandler* contentHnd;
Packit 1c1d7e
    QXmlErrorHandler*   errorHnd;
Packit 1c1d7e
    QXmlDTDHandler*     dtdHnd;
Packit 1c1d7e
    QXmlEntityResolver* entityRes;
Packit 1c1d7e
    QXmlLexicalHandler* lexicalHnd;
Packit 1c1d7e
    QXmlDeclHandler*    declHnd;
Packit 1c1d7e
Packit 1c1d7e
    QChar c; // the character at reading position
Packit 1c1d7e
    int lineNr; // number of line
Packit 1c1d7e
    int columnNr; // position in line
Packit 1c1d7e
    int pos; // position in string
Packit 1c1d7e
Packit 1c1d7e
    int     namePos;
Packit 1c1d7e
    QChar   nameArray[256]; // only used for names
Packit 1c1d7e
    QString nameValue; // only used for names
Packit 1c1d7e
    int     refPos;
Packit 1c1d7e
    QChar   refArray[256]; // only used for references
Packit 1c1d7e
    QString refValue; // only used for references
Packit 1c1d7e
    int     stringPos;
Packit 1c1d7e
    QChar   stringArray[256]; // used for any other strings that are parsed
Packit 1c1d7e
    QString stringValue; // used for any other strings that are parsed
Packit 1c1d7e
Packit 1c1d7e
    QString xml;
Packit 1c1d7e
    int xmlLength;
Packit 1c1d7e
    QString xmlRef; // used for parsing of entity references
Packit 1c1d7e
Packit 1c1d7e
    QValueStack<QString> tags;
Packit 1c1d7e
Packit 1c1d7e
    QXmlSimpleReaderPrivate* d;
Packit 1c1d7e
Packit 1c1d7e
    static const QChar QEOF;
Packit 1c1d7e
Packit 1c1d7e
    // inlines
Packit 1c1d7e
    virtual bool is_S( const QChar& );
Packit 1c1d7e
    virtual bool is_Letter( const QChar& );
Packit 1c1d7e
    virtual bool is_NameBeginning( const QChar& );
Packit 1c1d7e
    virtual bool is_Digit( const QChar& );
Packit 1c1d7e
    virtual bool is_CombiningChar( const QChar& );
Packit 1c1d7e
    virtual bool is_Extender( const QChar& );
Packit 1c1d7e
    virtual bool is_NameChar( const QChar& );
Packit 1c1d7e
Packit 1c1d7e
    QString& string();
Packit 1c1d7e
    void stringClear();
Packit 1c1d7e
    void stringAddC();
Packit 1c1d7e
    void stringAddC(const QChar&);
Packit 1c1d7e
    QString& name();
Packit 1c1d7e
    void nameClear();
Packit 1c1d7e
    void nameAddC();
Packit 1c1d7e
    void nameAddC(const QChar&);
Packit 1c1d7e
    QString& ref();
Packit 1c1d7e
    void refClear();
Packit 1c1d7e
    void refAddC();
Packit 1c1d7e
    void refAddC(const QChar&);
Packit 1c1d7e
Packit 1c1d7e
    // used by parseReference() and parsePEReference()
Packit 1c1d7e
    enum EntityRecognitionContext { InContent, InAttributeValue, InEntityValue, InDTD };
Packit 1c1d7e
Packit 1c1d7e
    // private functions
Packit 1c1d7e
    void eat_ws();
Packit 1c1d7e
    void next_eat_ws();
Packit 1c1d7e
Packit 1c1d7e
    void next();
Packit 1c1d7e
    bool atEnd();
Packit 1c1d7e
Packit 1c1d7e
    void init( const QXmlInputSource& i );
Packit 1c1d7e
Packit 1c1d7e
    bool entityExist( const QString& ) const;
Packit 1c1d7e
Packit 1c1d7e
    bool parseProlog();
Packit 1c1d7e
    bool parseElement();
Packit 1c1d7e
    bool parseElementEmptyTag( bool &t, QString &uri, QString &lname );
Packit 1c1d7e
    bool parseElementETagBegin2( QString &uri, QString &lname );
Packit 1c1d7e
    bool parseElementAttribute( QString &prefix, QString &uri, QString &lname );
Packit 1c1d7e
    bool parseMisc();
Packit 1c1d7e
    bool parseContent();
Packit 1c1d7e
Packit 1c1d7e
    bool parsePI(bool xmldecl=FALSE);
Packit 1c1d7e
    bool parseDoctype();
Packit 1c1d7e
    bool parseComment();
Packit 1c1d7e
Packit 1c1d7e
    bool parseName( bool useRef=FALSE );
Packit 1c1d7e
    bool parseNmtoken();
Packit 1c1d7e
    bool parseAttribute();
Packit 1c1d7e
    bool parseReference( bool &charDataRead, EntityRecognitionContext context );
Packit 1c1d7e
    bool processReference( bool &charDataRead, EntityRecognitionContext context );
Packit 1c1d7e
Packit 1c1d7e
    bool parseExternalID( bool allowPublicID = FALSE );
Packit 1c1d7e
    bool parsePEReference( EntityRecognitionContext context );
Packit 1c1d7e
    bool parseMarkupdecl();
Packit 1c1d7e
    bool parseAttlistDecl();
Packit 1c1d7e
    bool parseAttType();
Packit 1c1d7e
    bool parseAttValue();
Packit 1c1d7e
    bool parseElementDecl();
Packit 1c1d7e
    bool parseNotationDecl();
Packit 1c1d7e
    bool parseChoiceSeq();
Packit 1c1d7e
    bool parseEntityDecl();
Packit 1c1d7e
    bool parseEntityValue();
Packit 1c1d7e
Packit 1c1d7e
    bool parseString( const QString& s );
Packit 1c1d7e
Packit 1c1d7e
    void reportParseError();
Packit 1c1d7e
Packit 1c1d7e
    friend class QXmlSimpleReaderPrivate;
Packit 1c1d7e
    friend class QXmlLocator;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//
Packit 1c1d7e
// SAX Locator
Packit 1c1d7e
//
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlLocator
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    QXmlLocator( QXmlSimpleReader* parent )
Packit 1c1d7e
    { reader = parent; }
Packit 1c1d7e
    ~QXmlLocator()
Packit 1c1d7e
    { }
Packit 1c1d7e
Packit 1c1d7e
    int columnNumber();
Packit 1c1d7e
    int lineNumber();
Packit 1c1d7e
//    QString getPublicId()
Packit 1c1d7e
//    QString getSystemId()
Packit 1c1d7e
Packit 1c1d7e
private:
Packit 1c1d7e
    QXmlSimpleReader* reader;
Packit 1c1d7e
Packit 1c1d7e
    //QXmlLocatorPrivate *d;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
//
Packit 1c1d7e
// SAX handler classes
Packit 1c1d7e
//
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlContentHandler
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    virtual ~QXmlContentHandler() {}
Packit 1c1d7e
    virtual void setDocumentLocator( QXmlLocator* locator ) = 0;
Packit 1c1d7e
    virtual bool startDocument() = 0;
Packit 1c1d7e
    virtual bool endDocument() = 0;
Packit 1c1d7e
    virtual bool startPrefixMapping( const QString& prefix, const QString& uri ) = 0;
Packit 1c1d7e
    virtual bool endPrefixMapping( const QString& prefix ) = 0;
Packit 1c1d7e
    virtual bool startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts ) = 0;
Packit 1c1d7e
    virtual bool endElement( const QString& namespaceURI, const QString& localName, const QString& qName ) = 0;
Packit 1c1d7e
    virtual bool characters( const QString& ch ) = 0;
Packit 1c1d7e
    virtual bool ignorableWhitespace( const QString& ch ) = 0;
Packit 1c1d7e
    virtual bool processingInstruction( const QString& target, const QString& data ) = 0;
Packit 1c1d7e
    virtual bool skippedEntity( const QString& name ) = 0;
Packit 1c1d7e
    virtual QString errorString() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlErrorHandler
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    virtual ~QXmlErrorHandler() {}
Packit 1c1d7e
    virtual bool warning( const QXmlParseException& exception ) = 0;
Packit 1c1d7e
    virtual bool error( const QXmlParseException& exception ) = 0;
Packit 1c1d7e
    virtual bool fatalError( const QXmlParseException& exception ) = 0;
Packit 1c1d7e
    virtual QString errorString() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlDTDHandler
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    virtual ~QXmlDTDHandler() {}
Packit 1c1d7e
    virtual bool notationDecl( const QString& name, const QString& publicId, const QString& systemId ) = 0;
Packit 1c1d7e
    virtual bool unparsedEntityDecl( const QString& name, const QString& publicId, const QString& systemId, const QString& notationName ) = 0;
Packit 1c1d7e
    virtual QString errorString() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlEntityResolver
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    virtual ~QXmlEntityResolver() {}
Packit 1c1d7e
    virtual bool resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* &ret ) = 0;
Packit 1c1d7e
    virtual QString errorString() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlLexicalHandler
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    virtual ~QXmlLexicalHandler() {}
Packit 1c1d7e
    virtual bool startDTD( const QString& name, const QString& publicId, const QString& systemId ) = 0;
Packit 1c1d7e
    virtual bool endDTD() = 0;
Packit 1c1d7e
//    virtual bool startEntity( const QString& name ) = 0;
Packit 1c1d7e
//    virtual bool endEntity( const QString& name ) = 0;
Packit 1c1d7e
    virtual bool startCDATA() = 0;
Packit 1c1d7e
    virtual bool endCDATA() = 0;
Packit 1c1d7e
    virtual bool comment( const QString& ch ) = 0;
Packit 1c1d7e
    virtual QString errorString() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlDeclHandler
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    virtual ~QXmlDeclHandler() {}
Packit 1c1d7e
    virtual bool attributeDecl( const QString& eName, const QString& aName, const QString& type, const QString& valueDefault, const QString& value ) = 0;
Packit 1c1d7e
    virtual bool internalEntityDecl( const QString& name, const QString& value ) = 0;
Packit 1c1d7e
    virtual bool externalEntityDecl( const QString& name, const QString& publicId, const QString& systemId ) = 0;
Packit 1c1d7e
    virtual QString errorString() = 0;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
class QM_EXPORT QXmlDefaultHandler : public QXmlContentHandler, public QXmlErrorHandler, public QXmlDTDHandler, public QXmlEntityResolver, public QXmlLexicalHandler, public QXmlDeclHandler
Packit 1c1d7e
{
Packit 1c1d7e
public:
Packit 1c1d7e
    QXmlDefaultHandler() { }
Packit 1c1d7e
    virtual ~QXmlDefaultHandler() { }
Packit 1c1d7e
Packit 1c1d7e
    void setDocumentLocator( QXmlLocator* locator );
Packit 1c1d7e
    bool startDocument();
Packit 1c1d7e
    bool endDocument();
Packit 1c1d7e
    bool startPrefixMapping( const QString& prefix, const QString& uri );
Packit 1c1d7e
    bool endPrefixMapping( const QString& prefix );
Packit 1c1d7e
    bool startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts );
Packit 1c1d7e
    bool endElement( const QString& namespaceURI, const QString& localName, const QString& qName );
Packit 1c1d7e
    bool characters( const QString& ch );
Packit 1c1d7e
    bool ignorableWhitespace( const QString& ch );
Packit 1c1d7e
    bool processingInstruction( const QString& target, const QString& data );
Packit 1c1d7e
    bool skippedEntity( const QString& name );
Packit 1c1d7e
Packit 1c1d7e
    bool warning( const QXmlParseException& exception );
Packit 1c1d7e
    bool error( const QXmlParseException& exception );
Packit 1c1d7e
    bool fatalError( const QXmlParseException& exception );
Packit 1c1d7e
Packit 1c1d7e
    bool notationDecl( const QString& name, const QString& publicId, const QString& systemId );
Packit 1c1d7e
    bool unparsedEntityDecl( const QString& name, const QString& publicId, const QString& systemId, const QString& notationName );
Packit 1c1d7e
Packit 1c1d7e
    bool resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* &ret );
Packit 1c1d7e
Packit 1c1d7e
    bool startDTD( const QString& name, const QString& publicId, const QString& systemId );
Packit 1c1d7e
    bool endDTD();
Packit 1c1d7e
//    bool startEntity( const QString& name );
Packit 1c1d7e
//    bool endEntity( const QString& name );
Packit 1c1d7e
    bool startCDATA();
Packit 1c1d7e
    bool endCDATA();
Packit 1c1d7e
    bool comment( const QString& ch );
Packit 1c1d7e
Packit 1c1d7e
    bool attributeDecl( const QString& eName, const QString& aName, const QString& type, const QString& valueDefault, const QString& value );
Packit 1c1d7e
    bool internalEntityDecl( const QString& name, const QString& value );
Packit 1c1d7e
    bool externalEntityDecl( const QString& name, const QString& publicId, const QString& systemId );
Packit 1c1d7e
Packit 1c1d7e
    QString errorString();
Packit 1c1d7e
Packit 1c1d7e
private:
Packit 1c1d7e
    //QXmlDefaultHandlerPrivate *d;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
#ifdef _WS_QWS_
Packit 1c1d7e
#ifdef QT_XML_CPP
Packit 1c1d7e
#define inline
Packit 1c1d7e
#else
Packit 1c1d7e
#define QT_NO_XML_INLINE
Packit 1c1d7e
#endif
Packit 1c1d7e
#endif
Packit 1c1d7e
Packit 1c1d7e
#ifndef QT_NO_XML_INLINE
Packit 1c1d7e
//
Packit 1c1d7e
// inlines
Packit 1c1d7e
//
Packit 1c1d7e
Packit 1c1d7e
inline bool QXmlSimpleReader::is_S(const QChar& ch)
Packit 1c1d7e
{ return ch==' ' || ch=='\t' || ch=='\n' || ch=='\r'; }
Packit 1c1d7e
Packit 1c1d7e
inline bool QXmlSimpleReader::is_Letter( const QChar& ch )
Packit 1c1d7e
{ return ch.isLetter(); }
Packit 1c1d7e
Packit 1c1d7e
inline bool QXmlSimpleReader::is_NameBeginning( const QChar& ch )
Packit 1c1d7e
{ return ch=='_' || ch==':' || ch.isLetter(); }
Packit 1c1d7e
Packit 1c1d7e
inline bool QXmlSimpleReader::is_Digit( const QChar& ch )
Packit 1c1d7e
{ return ch.isDigit(); }
Packit 1c1d7e
Packit 1c1d7e
inline bool QXmlSimpleReader::is_CombiningChar( const QChar& )
Packit 1c1d7e
{ return FALSE; }
Packit 1c1d7e
Packit 1c1d7e
inline bool QXmlSimpleReader::is_Extender( const QChar& )
Packit 1c1d7e
{ return FALSE; }
Packit 1c1d7e
Packit 1c1d7e
inline bool QXmlSimpleReader::is_NameChar( const QChar& ch )
Packit 1c1d7e
{
Packit 1c1d7e
    return ch=='.' || ch=='-' || ch=='_' || ch==':' ||
Packit 1c1d7e
	is_Letter(ch) || is_Digit(ch) ||
Packit 1c1d7e
	is_CombiningChar(ch) || is_Extender(ch);
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
inline void QXmlSimpleReader::next()
Packit 1c1d7e
{
Packit 1c1d7e
    if ( !xmlRef.isEmpty() ) {
Packit 1c1d7e
	c = xmlRef[0];
Packit 1c1d7e
	xmlRef.remove( 0, 1 );
Packit 1c1d7e
    } else {
Packit 1c1d7e
	if ( c=='\n' || c=='\r' ) {
Packit 1c1d7e
	    lineNr++;
Packit 1c1d7e
	    columnNr = -1;
Packit 1c1d7e
	}
Packit 1c1d7e
	if ( pos >= xmlLength ) {
Packit 1c1d7e
	    c = QEOF;
Packit 1c1d7e
	} else {
Packit 1c1d7e
	    c = xml[pos];
Packit 1c1d7e
	    columnNr++;
Packit 1c1d7e
	    pos++;
Packit 1c1d7e
	}
Packit 1c1d7e
    }
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
inline bool QXmlSimpleReader::atEnd()
Packit 1c1d7e
{ return c == QEOF; }
Packit 1c1d7e
Packit 1c1d7e
inline void QXmlSimpleReader::eat_ws()
Packit 1c1d7e
{ while ( !atEnd() && is_S(c) ) next(); }
Packit 1c1d7e
Packit 1c1d7e
inline void QXmlSimpleReader::next_eat_ws()
Packit 1c1d7e
{ next(); eat_ws(); }
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
// use buffers instead of QString::operator+= when single characters are read
Packit 1c1d7e
inline QString& QXmlSimpleReader::string()
Packit 1c1d7e
{
Packit 1c1d7e
    stringValue += QString( stringArray, stringPos );
Packit 1c1d7e
    stringPos = 0;
Packit 1c1d7e
    return stringValue;
Packit 1c1d7e
}
Packit 1c1d7e
inline QString& QXmlSimpleReader::name()
Packit 1c1d7e
{
Packit 1c1d7e
    nameValue += QString( nameArray, namePos );
Packit 1c1d7e
    namePos = 0;
Packit 1c1d7e
    return nameValue;
Packit 1c1d7e
}
Packit 1c1d7e
inline QString& QXmlSimpleReader::ref()
Packit 1c1d7e
{
Packit 1c1d7e
    refValue += QString( refArray, refPos );
Packit 1c1d7e
    refPos = 0;
Packit 1c1d7e
    return refValue;
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
inline void QXmlSimpleReader::stringClear()
Packit 1c1d7e
{ stringValue = ""; stringPos = 0; }
Packit 1c1d7e
inline void QXmlSimpleReader::nameClear()
Packit 1c1d7e
{ nameValue = ""; namePos = 0; }
Packit 1c1d7e
inline void QXmlSimpleReader::refClear()
Packit 1c1d7e
{ refValue = ""; refPos = 0; }
Packit 1c1d7e
Packit 1c1d7e
inline void QXmlSimpleReader::stringAddC()
Packit 1c1d7e
{
Packit 1c1d7e
    if ( stringPos >= 256 ) {
Packit 1c1d7e
	stringValue += QString( stringArray, stringPos );
Packit 1c1d7e
	stringPos = 0;
Packit 1c1d7e
    }
Packit 1c1d7e
    stringArray[stringPos++] = c;
Packit 1c1d7e
}
Packit 1c1d7e
inline void QXmlSimpleReader::nameAddC()
Packit 1c1d7e
{
Packit 1c1d7e
    if ( namePos >= 256 ) {
Packit 1c1d7e
	nameValue += QString( nameArray, namePos );
Packit 1c1d7e
	namePos = 0;
Packit 1c1d7e
    }
Packit 1c1d7e
    nameArray[namePos++] = c;
Packit 1c1d7e
}
Packit 1c1d7e
inline void QXmlSimpleReader::refAddC()
Packit 1c1d7e
{
Packit 1c1d7e
    if ( refPos >= 256 ) {
Packit 1c1d7e
	refValue += QString( refArray, refPos );
Packit 1c1d7e
	refPos = 0;
Packit 1c1d7e
    }
Packit 1c1d7e
    refArray[refPos++] = c;
Packit 1c1d7e
}
Packit 1c1d7e
Packit 1c1d7e
inline void QXmlSimpleReader::stringAddC(const QChar& ch)
Packit 1c1d7e
{
Packit 1c1d7e
    if ( stringPos >= 256 ) {
Packit 1c1d7e
	stringValue += QString( stringArray, stringPos );
Packit 1c1d7e
	stringPos = 0;
Packit 1c1d7e
    }
Packit 1c1d7e
    stringArray[stringPos++] = ch;
Packit 1c1d7e
}
Packit 1c1d7e
inline void QXmlSimpleReader::nameAddC(const QChar& ch)
Packit 1c1d7e
{
Packit 1c1d7e
    if ( namePos >= 256 ) {
Packit 1c1d7e
	nameValue += QString( nameArray, namePos );
Packit 1c1d7e
	namePos = 0;
Packit 1c1d7e
    }
Packit 1c1d7e
    nameArray[namePos++] = ch;
Packit 1c1d7e
}
Packit 1c1d7e
inline void QXmlSimpleReader::refAddC(const QChar& ch)
Packit 1c1d7e
{
Packit 1c1d7e
    if ( refPos >= 256 ) {
Packit 1c1d7e
	refValue += QString( refArray, refPos );
Packit 1c1d7e
	refPos = 0;
Packit 1c1d7e
    }
Packit 1c1d7e
    refArray[refPos++] = ch;
Packit 1c1d7e
}
Packit 1c1d7e
#endif
Packit 1c1d7e
Packit 1c1d7e
#ifdef _WS_QWS_
Packit 1c1d7e
#ifdef QT_XML_CPP
Packit 1c1d7e
#undef inline
Packit 1c1d7e
#endif
Packit 1c1d7e
#endif
Packit 1c1d7e
Packit 1c1d7e
#endif //QT_NO_XML
Packit 1c1d7e
Packit 1c1d7e
#endif