99 m_hpHead->Set(t, dwParam,
new CFuncT<T>);
146 void Set(
const T& t, DWORD dwParam = 0)
149 m_hpHead->Set(t, dwParam,
new CFuncT<T>);
173 if ( strcmp(
m_hpHead->m_strType,
typeid(T).name()) != 0 )
178 if (
m_hpHead->m_dwSizeof !=
sizeof(T) )
182 _t = *(
static_cast<const T*
>(
m_hpHead->m_pVal));
198 if ( strcmp(
m_hpHead->m_strType,
typeid(T).name()) != 0 )
203 if (
m_hpHead->m_dwSizeof !=
sizeof(T) )
207 return *(
static_cast<const T*
>(
m_hpHead->m_pVal));
231 IFuncBase* m_pFuncBase;
239 THead(
void) : m_pFuncBase(NULL), m_pVal(NULL), m_dwSizeof(0), m_dwParam(0)
245 if ( m_pFuncBase != NULL )
247 m_pFuncBase->Destractor(m_pVal);
254 void Set(
const T& t, DWORD dwParam, IFuncBase* P = NULL)
259 m_dwSizeof =
sizeof(T);
261 m_strType =
typeid(T).name();
268 struct CFuncT : IFuncBase
270 virtual void Destractor(LPVOID V)
272 delete static_cast<T*
>(V);
331 m_hpHead->Set(t, dwParam,
new CFuncT<T>);
352 void Set(
const T& t, DWORD dwParam = 0)
355 m_hpHead->Set(t, dwParam,
new CFuncT<T>);
365 if (
m_hpHead->m_pFuncBase == NULL )
377 virtual void Destractor(LPVOID V)
379 delete static_cast<T*
>(V);
383 _s =
static_cast<T*
>(V)->
ToString();
400 TRACE1(
"%s\n",u.GetTypeName());
401 TRACE1(
"%s\n",u2.GetTypeName());
403 TRACE1(
"%s\n",u.GetTypeName());
407 VERIFY( ! u2.Get(s) );
408 TRACE1(
"%s\n",u.GetTypeName());
409 TRACE1(
"%s\n",u2.GetTypeName());
410 TRACE1(
"%d\n",u.Ref((
CStr*)0).GetLength());
411 TRACE1(
"%s\n",u.Ref((
CStr*)0));
412 TRACE1(
"%d\n",u2.Ref((
int*)0));
415 TRACE1(
"%s\n",u.GetTypeName());
416 TRACE1(
"%s\n",u2.GetTypeName());
CUnionEx(const CUnionEx &other)
コピーコンストラクタ.
CUnionEx(const T &t, DWORD dwParam=0)
コンストラクタ.
void ToString(CSimpleStr &_s) const
[取得] 文字列取得
void Set(const T &t, DWORD dwParam=0)
[設定] 代入.
CUnion(const CUnion &other)
コピーコンストラクタ.
LPCSTR GetTypeName(void) const
[取得] 型名取得.
bool Get(T &_t) const
[取得] 取得.
const T & Ref(T *P) const
[取得] 参照取得.
CUnion(const T &t, DWORD dwParam=0)
コンストラクタ.
CUnion & operator=(const CUnion &other)
[代入] コピーオペレータ.
CPointerHandleT< THead > m_hpHead
実体参照ハンドル
DWORD GetParam(void) const
[取得] パラメータ取得.
void Set(const T &t, DWORD dwParam=0)
[設定] 代入.
UNION管理拡張クラス用ファンクションインターフェース
virtual void ToString(CSimpleStr &_s, LPVOID V)=0
文字列へ変換
UNION管理クラス用ファンクションインターフェース
virtual ~IFuncBase(void)
デストラクタ
virtual void Destractor(LPVOID V)=0
デストラクト実行