⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 variant.h

📁 网络socket,IO,线程池
💻 H
字号:
#ifndef _M_VARIANTTYPE_2004_7_13_ZHY_H
#define _M_VARIANTTYPE_2004_7_13_ZHY_H

#pragma warning(disable:4786)

#include <string>
using namespace std;

#include "exception.h"
using namespace CommonInclude;

namespace CommonInclude{

enum	VARIANT_TYPE
{
	TYPE_NONE = 0,
	TYPE_INT  = 1,
	TYPE_STR  = 3,
	TYPE_PROPERTY  = 4,
	TYPE_TIME = 5
};

class	CProperty;

class	CVariant
{
public:
	CVariant();
	~CVariant();
	
	CVariant(const CVariant& var);
	CVariant(int nValue);	
	CVariant(const char* szString);
	CVariant(const string& strString);
	CVariant(const CProperty& property);
	CVariant(const CTime& time);
	
	VARIANT_TYPE GetType() const 
	{
		return m_nType;
	}
	
	const CVariant& Assign(const CVariant& val);
	const CVariant& Assign(int nValue);	
	const CVariant& Assign(const char* szString);
	const CVariant& Assign(const string& strString);
	const CVariant& Assign(const CProperty& property);
	const CVariant& Assign(const CTime& time);
	
	const CVariant& operator=(const CVariant& val)
	{
		return	Assign(val);
	}
	
	bool	operator==(const CVariant& val) const 
	{
		return	IsEqual(val) == 0;
	}
	
	bool	operator!=(const CVariant& val) const 
	{
		return	IsEqual(val) != 0;
	}
	
	bool	operator>=(const CVariant& val) const 
	{
		return	IsEqual(val) >= 0;
	}
	
		bool	operator<=(const CVariant& val) const 
	{
		return	IsEqual(val) <= 0;
	}
	
		bool	operator > (const CVariant& val) const 
	{
		return	IsEqual(val) > 0;
	}
		bool	operator < (const CVariant& val) const 
	{
		return	IsEqual(val) < 0;
	}
	
	int	AsInteger() const;
	float	AsFloat() const;
	const string& AsString() const;
	const CProperty& AsProperty() const ;
	const CTime& AsTime() const ;
	
	int&	AsRefInteger();	
	string& AsRefString();
	CProperty& AsRefProperty();
	CTime& AsRefTime();
	
	string & Appen2String(string & str) const;

	
	VARIANT_TYPE	m_nType;	
	union	InternalData
	{
		InternalData():m_nValue(0){}
		int	   m_nValue;
		float	   m_fValue;
		string*	   m_pStrValue;
		CProperty* m_pProperty;
		CTime*	   m_pTime;
	};	
	InternalData	m_data;

private:
	int	IsEqual(const CVariant& val)	const;
	void	Empty();
	
};
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -