1// Windows/PropVariant.h
2
3#ifndef __WINDOWS_PROPVARIANT_H
4#define __WINDOWS_PROPVARIANT_H
5
6#include "../Common/MyWindows.h"
7#include "../Common/Types.h"
8
9namespace NWindows {
10namespace NCOM {
11
12class CPropVariant : public tagPROPVARIANT
13{
14public:
15  CPropVariant() { vt = VT_EMPTY; wReserved1 = 0; }
16  ~CPropVariant() { Clear(); }
17  CPropVariant(const PROPVARIANT &varSrc);
18  CPropVariant(const CPropVariant &varSrc);
19  CPropVariant(BSTR bstrSrc);
20  CPropVariant(LPCOLESTR lpszSrc);
21  CPropVariant(bool bSrc) { vt = VT_BOOL; wReserved1 = 0; boolVal = (bSrc ? VARIANT_TRUE : VARIANT_FALSE); };
22  CPropVariant(Byte value) { vt = VT_UI1; wReserved1 = 0; bVal = value; }
23  CPropVariant(Int16 value) { vt = VT_I2; wReserved1 = 0; iVal = value; }
24  CPropVariant(Int32 value) { vt = VT_I4; wReserved1 = 0; lVal = value; }
25  CPropVariant(UInt32 value) { vt = VT_UI4; wReserved1 = 0; ulVal = value; }
26  CPropVariant(UInt64 value) { vt = VT_UI8; wReserved1 = 0; uhVal.QuadPart = value; }
27  CPropVariant(const FILETIME &value) { vt = VT_FILETIME; wReserved1 = 0; filetime = value; }
28
29  CPropVariant& operator=(const CPropVariant &varSrc);
30  CPropVariant& operator=(const PROPVARIANT &varSrc);
31  CPropVariant& operator=(BSTR bstrSrc);
32  CPropVariant& operator=(LPCOLESTR lpszSrc);
33  CPropVariant& operator=(const char *s);
34  CPropVariant& operator=(bool bSrc);
35  CPropVariant& operator=(Byte value);
36  CPropVariant& operator=(Int16 value);
37  CPropVariant& operator=(Int32 value);
38  CPropVariant& operator=(UInt32 value);
39  CPropVariant& operator=(Int64 value);
40  CPropVariant& operator=(UInt64 value);
41  CPropVariant& operator=(const FILETIME &value);
42
43  HRESULT Clear();
44  HRESULT Copy(const PROPVARIANT *pSrc);
45  HRESULT Attach(PROPVARIANT *pSrc);
46  HRESULT Detach(PROPVARIANT *pDest);
47
48  HRESULT InternalClear();
49  void InternalCopy(const PROPVARIANT *pSrc);
50
51  int Compare(const CPropVariant &a1);
52};
53
54}}
55
56#endif
57