/** * @file WVariant.h * @brief 封装数据底层数据类型 * @author * @time */ #pragma once //#include #include #define WDATATYPE_STRING 0 // 字符串 #define WDATATYPE_DOUBLE 1 // 浮点型 #define WDATATYPE_INT 2 // 整型 #define WDATATYPE_BOOL 3 // bool #define WDATATYPE_TIME 4 // 时间 #define WDATATYPE_NULL 255 // 空类型 #define NULL_FLT FLT_MAX #define NULL_INT INT_MAX namespace wuya { class AFX_EXT_CLASS WVariant { public: WVariant(void); WVariant(double dValue); WVariant(bool bValue); WVariant(int iValue); WVariant(LPCTSTR strValue); WVariant(const CString& strValue); WVariant(const COleDateTime& time); WVariant(const WVariant& variant); ~WVariant(void); WVariant& operator= (const WVariant& varValue); void SetValue(double dValue); void SetValue(bool bValue); void SetValue(int iValue); void SetValue(LPCTSTR strValue); void SetValue(const COleDateTime& time); void GetValue(double& dValue); void GetValue(bool& bValue); void GetValue(int& iValue); void GetValue(CString& strValue); void GetValue(COleDateTime& time); /** @brief 设置类型为WDATATYPE_NULL */ void SetNull(); /** @brief 判断类型是否为空 */ BOOL IsNull(); void SetType(BYTE type); // 设置为新类型,值设置为空 void ChangeType(BYTE type); // 转换为新类型,值保留 static BOOL IsNullDblValue(double dValue); static BOOL IsNullIntValue(int iValue); static double GetNullDblValue(); static int GetNullIntValue(); private: void ChangeToString(); void ChangeToDbl(); void ChangeToInt(); void ChangeToBool(); void ChangeToTime(); private: BYTE m_byteType; // 类型 //boost::any m_anyValue; // 存储数据 }; };