00001 #pragma once
00002 #include "..\ViewIntf.h"
00003 #include "DefClassNames.h"
00004
00005 #if 0
00006
00007 typedef enum {
00008 TL_UNDEFINED,
00009 TL_BOOL,
00010 TL_CHAR,
00011 TL_UCHAR,
00012 TL_SHORT,
00013 TL_USHORT,
00014 TL_INT,
00015 TL_UINT,
00016 TL_LONG,
00017 TL_ULONG,
00018 TL_LONGLONG,
00019 TL_ULONGLONG,
00020 TL_FLOAT,
00021 TL_DOUBLE,
00022 TL_LPCTSTR,
00023 } TL_DATATYPE;
00024
00025 typedef union vardata {
00026 bool BoolVal;
00027 char CharVal;
00028 unsigned char UcharVal;
00029 short ShortVal;
00030 unsigned short UshortVal;
00031 int IntVal;
00032 unsigned int UintVal;
00033 long LongVal;
00034 unsigned long UlongVal;
00035 long long LongLongVal;
00036 unsigned long long ULongLongVal;
00037 float FloatVal;
00038 double DoubleVal;
00039 LPCTSTR LpctstrVal;
00040 } VARDATA;
00041 #endif
00042
00044 class CVariantBase {
00045 public:
00046 CVariantBase();
00047 ~CVariantBase() {}
00048
00049 VARDATA m_Data;
00050 CString m_Str;
00051
00052 public:
00053 TL_DATATYPE vt;
00054 bool m_IsHex;
00055 };
00056
00057
00072 class CVariant : public CVariantBase
00073 {
00074 public:
00075
00076
00077 CVariant(void);
00078 CVariant(const CVariant &right);
00079 CVariant(bool val);
00080 CVariant(char val);
00081 CVariant(unsigned char val);
00082 CVariant(short val);
00083 CVariant(unsigned short val);
00084 CVariant(int val);
00085 CVariant(unsigned int val);
00086 CVariant(long val);
00087 CVariant(unsigned long val);
00088 CVariant(long long val);
00089 CVariant(unsigned long long val);
00090 CVariant(float val);
00091 CVariant(double val);
00092 CVariant(LPCTSTR val);
00093
00094 virtual ~CVariant(void);
00095
00096
00097 CVariant &operator = (const CVariant &right);
00098 CVariant &operator = (bool b);
00099 CVariant &operator = (char val);
00100 CVariant &operator = (unsigned char val);
00101 CVariant &operator = (short val);
00102 CVariant &operator = (unsigned short val);
00103 CVariant &operator = (int val);
00104 CVariant &operator = (unsigned int val);
00105 CVariant &operator = (long val);
00106 CVariant &operator = (unsigned long val);
00107 CVariant &operator = (long long val);
00108 CVariant &operator = (unsigned long long val);
00109 CVariant &operator = (float val);
00110 CVariant &operator = (double val);
00111 CVariant &operator = (LPCTSTR val);
00112
00113
00114 bool operator == (const CVariant &right) const;
00115 bool operator != (const CVariant &right) const;
00116
00117
00118
00119 operator LPCTSTR();
00120 operator bool();
00121 operator char();
00122 operator unsigned char();
00123 operator short();
00124 operator unsigned short();
00125 operator int();
00126 operator unsigned int();
00127 operator long();
00128 operator unsigned long();
00129 operator long long();
00130 operator unsigned long long();
00131 operator float();
00132 operator double();
00133
00134 bool GetDispString(CString &dispStr, bool UseFormat = true);
00135
00136 void SetFormatString(LPCTSTR FormatStr) {
00137 m_FormatStr = FormatStr;
00138 };
00139
00140 const char * GetFormatString() {
00141 return m_FormatStr;
00142 };
00143
00144 BOOL TextToVar(const CString& strText);
00145 void SetType(TL_DATATYPE NewType);
00146
00147 CString m_FormatStr;
00148
00149
00150 #ifdef _DEBUG
00151 void ComponentTest();
00152 #endif
00153
00154 private:
00155 void SaveLptstr(LPCTSTR val);
00156
00157 };