Source: classlib/include/cvariant.h


Annotated List
Files
Globals
Hierarchy
Index
/***************************************************************************
			cvariant.h  -  classe wrapper per tipo variant
                             -------------------
    begin                : Mon Oct 7 2002
    copyright            : (C) 2002 by Nicola De Nisco
    email                : nicola@winada.it
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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 __CVARIANT_H
#define __CVARIANT_H

#include 

/**

	class Variant

	A class able to contain various data types.
	It's almost compatible with the MFC version
	of this object.

*/

class Variant
{
public:
	inline Variant() {
		VariantInit(&v);
	}
	inline Variant(short val) {
		Int16ToVariant(val, &v);
	}
	inline Variant(int val) {
		Int32ToVariant(val, &v);
	}
	inline Variant(long val) {
		Int32ToVariant(val, &v);
	}
	inline Variant(float val) {
		FloatToVariant(val, &v);
	}
	inline Variant(double val) {
		DoubleToVariant(val, &v);
	}
	inline Variant(LPCSTR val) {
		StringToVariant(val, &v);
	}
	inline Variant(LPCSTR val, int maxlen) {
		SafeStringToVariant(val, &v, maxlen);
	}

	inline virtual ~Variant() {
		VariantClear(&v);
	}

	inline short getShort() {
		return VariantToInt16(&v);
	}
	inline int getInt() {
		return VariantToInt32(&v);
	}
	inline float getFloat() {
		return VariantToFloat(&v);
	}
	inline double getDouble() {
		return VariantToDouble(&v);
	}
	inline char* getString() {
		return VariantToString(&v);
	}
	inline DATE getDate() {
		return VariantToDate(&v);
	}
	inline BOOL getBOOL() {
		return VariantToBOOL(&v);
	}

	inline short operator=(short val) {
		VariantClear(&v);
		Int16ToVariant(val, &v);
		return val;
	}
	inline int operator=(int val) {
		VariantClear(&v);
		Int32ToVariant(val, &v);
		return val;
	}
	inline long operator=(long val) {
		VariantClear(&v);
		Int32ToVariant(val, &v);
		return val;
	}
	inline float operator=(float val) {
		VariantClear(&v);
		FloatToVariant(val, &v);
		return val;
	}
	inline double operator=(double val) {
		VariantClear(&v);
		DoubleToVariant(val, &v);
		return val;
	}
	inline LPCSTR operator=(LPCSTR val) {
		VariantClear(&v);
		StringToVariant(val, &v);
		return val;
	}
	
	inline VARIANT* getVariant() {return &v;}

	inline int Send(int sock, int flags = MSG_NOSIGNAL) {
		return sendVariant(sock, &v, flags);
	}
	inline int Recv(int sock, int flags = MSG_NOSIGNAL | MSG_WAITALL) {
		return recvVariant(sock, &v, flags);
	}
	inline int Read(int handle) {
		return readVariant(handle, &v);
	}
	inline int Write(int handle) {
		return writeVariant(handle, &v);
	}

	inline int operator==(const Variant& o) const {return &o == this;}
		
protected:
	VARIANT v;
};


#endif // __CVARIANT_H


Generated by: nicola on gulliver.wadahome.it on Sun May 25 13:54:34 2003, using kdoc 2.0a53.