You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdegraphics/kpovmodeler/pmserializer.h

180 lines
4.6 KiB

//-*-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 <config.h>
#endif
class TQIODevice;
#include "pmobject.h"
#include "pmerrordialog.h"
#include <tqdict.h>
/**
* 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<PMMessage> > 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