//-*-C++-*- /* ************************************************************************** description -------------------- copyright : (C) 2003 by Andreas Zehender email : zehender@kde.org ************************************************************************** ************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * **************************************************************************/ #ifndef PMSERIALIZER_H #define PMSERIALIZER_H #ifdef HAVE_CONFIG_H #include #endif class TQIODevice; #include "pmobject.h" #include "pmerrordialog.h" #include /** * Class to serialize an object or a list of objects. * * Normally you don't have to create instances of this type or subclasses, * the class @ref PMIOFormat has factory methods to create them. * * There is one sub class for each format. * * During serialization, errors can occur. These are returned * by the method @ref errors. */ class PMSerializer { public: /** * Default constructor * * The serialized data will be written to the io device */ PMSerializer( TQIODevice* dev ); /** * Destructor */ virtual ~PMSerializer( ); /** * Returns the translated description of the format. Should return * the same string as description( ) of the corresponding * IO format. */ virtual TQString description( ) const = 0; /** * Serializes one object to the device */ virtual void serialize( PMObject* o ) = 0; /** * Serializes a list of objects. The default * implementation will call serialize( PMObject* ) for each object. */ virtual void serializeList( const PMObjectList& objects ); /** * Closes the serializer */ virtual void close( ) = 0; /** * Returns the messages of the serializer */ PMMessageList messages( ) const { return m_messages; } /** * Returns true if there were errors during serializing */ bool errors( ) const { return m_errors > 0; } /** * Returns true if there were warnings during serializing */ bool warnings( ) const { return m_warnings > 0; } /** * Returns true, if a fatal error occurred * and it doesn't make sense to continue */ bool fatal( ) const { return m_bFatalError; } /** * Returns a bitwise combination of @ref PMErrorFlags constants */ int errorFlags( ) const; /** * Adds an error to the message string */ void printError( const TQString& msg ); /** * Adds a warning to the message string */ void printWarning( const TQString& msg ); /** * Adds an info to the message string */ void printInfo( const TQString& msg ); /** * Adds the message to the message string. Type is "error", "warning", * "info" */ void printMessage( const TQString& type, const TQString& msg ); /** * Sets the fatal error flag */ void setFatalError( ) { m_bFatalError = true; } /** * returns the maximum number of errors */ static unsigned maxErrors( ) { return s_maxErrors; } /** * sets the maximum number of errors to m */ static void setMaxErrors( unsigned m ) { s_maxErrors = m; } /** * returns the maximum number of warnings */ static unsigned maxWarnings( ) { return s_maxWarnings; } /** * sets the maximum number of warnings to m */ static void setMaxWarnings( unsigned m ) { s_maxWarnings = m; } protected: /** * The assigned IO device for serialization */ TQIODevice* m_pDev; private: /** * The serializer output (errors, warnings...) */ PMMessageList m_messages; /** * A dictionary object -> message */ TQPtrDict< TQPtrList > m_messageDict; /** * Number of warnings during parsing */ unsigned int m_warnings; /** * Number of errors during parsing */ unsigned int m_errors; /** * Flag for fatal errors */ bool m_bFatalError; /** * maximum number of errors */ static unsigned int s_maxErrors; /** * maximum number of warnings */ static unsigned int s_maxWarnings; }; #endif