// 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
Messung V0.5 C=98 H=96 G=96
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland