Source code
Revision control
Copy as Markdown
Other Tools
// Windows/PropVariant.h↩
↩
#ifndef __WINDOWS_PROP_VARIANT_H↩
#define __WINDOWS_PROP_VARIANT_H↩
↩
#include "../Common/MyTypes.h"↩
#include "../Common/MyWindows.h"↩
#include "../Common/MyString.h"↩
↩
namespace NWindows {↩
namespace NCOM {↩
↩
BSTR AllocBstrFromAscii(const char *s) throw();↩
↩
HRESULT PropVariant_Clear(PROPVARIANT *p) throw();↩
↩
HRESULT PropVarEm_Alloc_Bstr(PROPVARIANT *p, unsigned numChars) throw();↩
HRESULT PropVarEm_Set_Str(PROPVARIANT *p, const char *s) throw();↩
↩
inline void PropVarEm_Set_UInt32(PROPVARIANT *p, UInt32 v) throw()↩
{↩
p->vt = VT_UI4;↩
p->ulVal = v;↩
}↩
↩
inline void PropVarEm_Set_UInt64(PROPVARIANT *p, UInt64 v) throw()↩
{↩
p->vt = VT_UI8;↩
p->uhVal.QuadPart = v;↩
}↩
↩
inline void PropVarEm_Set_FileTime64(PROPVARIANT *p, UInt64 v) throw()↩
{↩
p->vt = VT_FILETIME;↩
p->filetime.dwLowDateTime = (DWORD)v;↩
p->filetime.dwHighDateTime = (DWORD)(v >> 32);↩
}↩
↩
inline void PropVarEm_Set_Bool(PROPVARIANT *p, bool b) throw()↩
{↩
p->vt = VT_BOOL;↩
p->boolVal = (b ? VARIANT_TRUE : VARIANT_FALSE);↩
}↩
↩
↩
class CPropVariant : public tagPROPVARIANT↩
{↩
public:↩
CPropVariant()↩
{↩
vt = VT_EMPTY;↩
wReserved1 = 0;↩
// wReserved2 = 0;↩
// wReserved3 = 0;↩
// uhVal.QuadPart = 0;↩
bstrVal = 0;↩
}↩
~CPropVariant() throw() { Clear(); }↩
CPropVariant(const PROPVARIANT &varSrc);↩
CPropVariant(const CPropVariant &varSrc);↩
CPropVariant(BSTR bstrSrc);↩
CPropVariant(LPCOLESTR lpszSrc);↩
CPropVariant(bool bSrc) { vt = VT_BOOL; wReserved1 = 0; boolVal = (bSrc ? VARIANT_TRUE : VARIANT_FALSE); }↩
CPropVariant(Byte value) { vt = VT_UI1; wReserved1 = 0; bVal = value; }↩
↩
private:↩
CPropVariant(Int16 value); // { vt = VT_I2; wReserved1 = 0; iVal = value; }↩
CPropVariant(Int32 value); // { vt = VT_I4; wReserved1 = 0; lVal = value; }↩
↩
public:↩
CPropVariant(UInt32 value) { vt = VT_UI4; wReserved1 = 0; ulVal = value; }↩
CPropVariant(UInt64 value) { vt = VT_UI8; wReserved1 = 0; uhVal.QuadPart = value; }↩
CPropVariant(Int64 value) { vt = VT_I8; wReserved1 = 0; hVal.QuadPart = value; }↩
CPropVariant(const FILETIME &value) { vt = VT_FILETIME; wReserved1 = 0; filetime = value; }↩
↩
CPropVariant& operator=(const CPropVariant &varSrc);↩
CPropVariant& operator=(const PROPVARIANT &varSrc);↩
CPropVariant& operator=(BSTR bstrSrc);↩
CPropVariant& operator=(LPCOLESTR lpszSrc);↩
CPropVariant& operator=(const UString &s);↩
CPropVariant& operator=(const UString2 &s);↩
CPropVariant& operator=(const char *s);↩
CPropVariant& operator=(const AString &s)↩
{ return (*this)=(const char *)s; }↩
↩
CPropVariant& operator=(bool bSrc) throw();↩
CPropVariant& operator=(Byte value) throw();↩
↩
private:↩
CPropVariant& operator=(Int16 value) throw();↩
↩
public:↩
CPropVariant& operator=(Int32 value) throw();↩
CPropVariant& operator=(UInt32 value) throw();↩
CPropVariant& operator=(UInt64 value) throw();↩
CPropVariant& operator=(Int64 value) throw();↩
CPropVariant& operator=(const FILETIME &value) throw();↩
↩
BSTR AllocBstr(unsigned numChars);↩
↩
HRESULT Clear() throw();↩
HRESULT Copy(const PROPVARIANT *pSrc) throw();↩
HRESULT Attach(PROPVARIANT *pSrc) throw();↩
HRESULT Detach(PROPVARIANT *pDest) throw();↩
↩
HRESULT InternalClear() throw();↩
void InternalCopy(const PROPVARIANT *pSrc);↩
↩
int Compare(const CPropVariant &a) throw();↩
};↩
↩
}}↩
↩
#endif↩