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.
222 lines
5.3 KiB
222 lines
5.3 KiB
//-*-C++-*-
|
|
/*
|
|
**************************************************************************
|
|
description
|
|
--------------------
|
|
copyright : (C) 2002 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 PMVARIANT_H
|
|
#define PMVARIANT_H
|
|
|
|
#include <qstring.h>
|
|
#include "pmcolor.h"
|
|
#include "pmvector.h"
|
|
#include "pmthreestate.h"
|
|
|
|
class PMObject;
|
|
|
|
/**
|
|
* Variant class for KPovModeler.
|
|
*
|
|
* Can store and convert: int, unsigned int, double, bool,
|
|
* PMThreeState, QString, PMVector, PMColor, PMObject*.
|
|
*
|
|
* Enums are stored as QString.
|
|
*
|
|
* The variant can store one type at a time. You can try to convert
|
|
* the type with the convertTo* methods. These will return bool on success.
|
|
* If the variant could not be converted, the old type and value
|
|
* did not change.
|
|
*/
|
|
|
|
class PMVariant
|
|
{
|
|
public:
|
|
/**
|
|
* Type of stored data
|
|
*/
|
|
enum PMVariantDataType { Integer, Unsigned, Double, Bool,
|
|
ThreeState, String, Vector, Color,
|
|
ObjectPointer, None };
|
|
/**
|
|
* Creates an empty variant object
|
|
*/
|
|
PMVariant( );
|
|
/**
|
|
* Stores an integer
|
|
*/
|
|
PMVariant( int data );
|
|
/**
|
|
* Stores an unsigned integer
|
|
*/
|
|
PMVariant( unsigned int data );
|
|
/**
|
|
* Stores a double
|
|
*/
|
|
PMVariant( double data );
|
|
/**
|
|
* Stores a boolean
|
|
*/
|
|
PMVariant( bool data );
|
|
/**
|
|
* Stores a @ref PMThreeState
|
|
*/
|
|
PMVariant( PMThreeState data );
|
|
/**
|
|
* Stores a string
|
|
*/
|
|
PMVariant( const QString& data );
|
|
/**
|
|
* Stores a @ref PMVector
|
|
*/
|
|
PMVariant( const PMVector& data );
|
|
/**
|
|
* Stores a @ref PMColor
|
|
*/
|
|
PMVariant( const PMColor& data );
|
|
/**
|
|
* Stores a pointer to a PMObject
|
|
*/
|
|
PMVariant( PMObject* obj );
|
|
/**
|
|
* Copy constructor
|
|
*/
|
|
PMVariant( const PMVariant& v );
|
|
/**
|
|
* Deletes the variant
|
|
*/
|
|
~PMVariant( );
|
|
|
|
/**
|
|
* Assignment operator
|
|
*/
|
|
PMVariant& operator= ( const PMVariant& v );
|
|
|
|
/**
|
|
* Returns true if no data is stored
|
|
*/
|
|
bool isNull( ) const { return !m_pData; }
|
|
|
|
/**
|
|
* Sets the integer value
|
|
*/
|
|
void setInt( int data );
|
|
/**
|
|
* Sets the unsigned value
|
|
*/
|
|
void setUnsigned( unsigned int data );
|
|
/**
|
|
* Sets the double value
|
|
*/
|
|
void setDouble( double data );
|
|
/**
|
|
* Sets the boolean value
|
|
*/
|
|
void setBool( bool data );
|
|
/**
|
|
* Sets the PMThreeState value
|
|
*/
|
|
void setThreeState( PMThreeState data );
|
|
/**
|
|
* Sets the string data
|
|
*/
|
|
void setString( const QString& data );
|
|
/**
|
|
* Sets the vector data
|
|
*/
|
|
void setVector( const PMVector& data );
|
|
/**
|
|
* Sets the color data
|
|
*/
|
|
void setColor( const PMColor& data );
|
|
/**
|
|
* Sets the object pointer
|
|
*/
|
|
void setObject( PMObject* o );
|
|
|
|
/**
|
|
* Returns the integer value. Data type has to be Integer!
|
|
*/
|
|
int intData( ) const;
|
|
/**
|
|
* Returns the unsigned value. Data type has to be Unsigned!
|
|
*/
|
|
int unsignedData( ) const;
|
|
/**
|
|
* Returns the double value. Data type has to be Double!
|
|
*/
|
|
double doubleData( ) const;
|
|
/**
|
|
* Returns the boolean value. Data type has to be Bool!
|
|
*/
|
|
bool boolData( ) const;
|
|
/**
|
|
* Returns the PMThreeState value. Data type has to be ThreeState!
|
|
*/
|
|
PMThreeState threeStateData( ) const;
|
|
/**
|
|
* Returns the string data. Data type has to be String!
|
|
*/
|
|
QString stringData( ) const;
|
|
/**
|
|
* Returns the vector data. Data type has to be Vector!
|
|
*/
|
|
PMVector vectorData( ) const;
|
|
/**
|
|
* Returns the color data. Data type has to be Color!
|
|
*/
|
|
PMColor colorData( ) const;
|
|
/**
|
|
* Returns the object pointer. Data type has to be ObjectPointer!
|
|
*/
|
|
PMObject* objectData( ) const;
|
|
|
|
/**
|
|
* Converts the variant to an integer. Returns true if possible
|
|
*/
|
|
bool convertTo( PMVariantDataType t );
|
|
|
|
/**
|
|
* Returns the type of the stored data
|
|
*/
|
|
PMVariantDataType dataType( ) const { return m_dataType; }
|
|
|
|
/**
|
|
* Returns the value of the stored data in string format
|
|
*/
|
|
QString asString( ) const;
|
|
/**
|
|
* Sets the value of the variant based on the string
|
|
*/
|
|
bool fromString( const PMVariant::PMVariantDataType t, const QString& value );
|
|
private:
|
|
void clear( );
|
|
|
|
/**
|
|
* a pointer to the stored data
|
|
*/
|
|
void* m_pData;
|
|
/**
|
|
* Type of the data
|
|
*/
|
|
PMVariantDataType m_dataType;
|
|
};
|
|
|
|
// Streaming operators for PMVariant
|
|
QDataStream& operator<<( QDataStream& stream, const PMVariant& value );
|
|
QDataStream& operator>>( QDataStream& stream, PMVariant& value );
|
|
|
|
|
|
#endif
|