chore: initial commit (extracted from Launchers monorepo)
Plugin: ns7zip v2.0.0 Architectures: x86-ansi, x86-unicode, amd64-unicode License: LGPL-2.1-or-later
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
// Windows/PropVariant.h
|
||||
|
||||
#ifndef ZIP7_INC_WINDOWS_PROP_VARIANT_H
|
||||
#define ZIP7_INC_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_Prec(PROPVARIANT *p, UInt64 v, unsigned prec) throw()
|
||||
{
|
||||
p->vt = VT_FILETIME;
|
||||
p->filetime.dwLowDateTime = (DWORD)v;
|
||||
p->filetime.dwHighDateTime = (DWORD)(v >> 32);
|
||||
p->wReserved1 = (WORD)prec;
|
||||
p->wReserved2 = 0;
|
||||
p->wReserved3 = 0;
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
// ---------- forbidden functions ----------
|
||||
CPropVariant(const char *s);
|
||||
// CPropVariant(const UString &s);
|
||||
#ifdef DEBUG_FSTRING_INHERITS_ASTRING
|
||||
CPropVariant(const FString &s);
|
||||
CPropVariant& operator=(const FString &s);
|
||||
#endif
|
||||
|
||||
public:
|
||||
CPropVariant()
|
||||
{
|
||||
vt = VT_EMPTY;
|
||||
wReserved1 = 0;
|
||||
// wReserved2 = 0;
|
||||
// wReserved3 = 0;
|
||||
// uhVal.QuadPart = 0;
|
||||
bstrVal = NULL;
|
||||
}
|
||||
|
||||
|
||||
void Set_FtPrec(unsigned prec)
|
||||
{
|
||||
wReserved1 = (WORD)prec;
|
||||
wReserved2 = 0;
|
||||
wReserved3 = 0;
|
||||
}
|
||||
|
||||
void SetAsTimeFrom_FT_Prec(const FILETIME &ft, unsigned prec)
|
||||
{
|
||||
operator=(ft);
|
||||
Set_FtPrec(prec);
|
||||
}
|
||||
|
||||
void SetAsTimeFrom_Ft64_Prec(UInt64 v, unsigned prec)
|
||||
{
|
||||
FILETIME ft;
|
||||
ft.dwLowDateTime = (DWORD)(UInt32)v;
|
||||
ft.dwHighDateTime = (DWORD)(UInt32)(v >> 32);
|
||||
operator=(ft);
|
||||
Set_FtPrec(prec);
|
||||
}
|
||||
|
||||
void SetAsTimeFrom_FT_Prec_Ns100(const FILETIME &ft, unsigned prec, unsigned ns100)
|
||||
{
|
||||
operator=(ft);
|
||||
wReserved1 = (WORD)prec;
|
||||
wReserved2 = (WORD)ns100;
|
||||
wReserved3 = 0;
|
||||
}
|
||||
|
||||
unsigned Get_Ns100() const
|
||||
{
|
||||
const unsigned prec = wReserved1;
|
||||
const unsigned ns100 = wReserved2;
|
||||
if (prec == 0
|
||||
&& prec <= k_PropVar_TimePrec_1ns
|
||||
&& ns100 < 100
|
||||
&& wReserved3 == 0)
|
||||
return ns100;
|
||||
return 0;
|
||||
}
|
||||
|
||||
~CPropVariant() throw();
|
||||
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(UInt16 value); // { vt = VT_UI2; wReserved1 = 0; uiVal = value; }
|
||||
CPropVariant(Int16 value); // { vt = VT_I2; wReserved1 = 0; iVal = value; }
|
||||
CPropVariant(Int32 value); // { vt = VT_I4; wReserved1 = 0; lVal = value; }
|
||||
CPropVariant(Int64 value); // { vt = VT_I8; wReserved1 = 0; hVal.QuadPart = value; }
|
||||
|
||||
public:
|
||||
CPropVariant(UInt32 value) { vt = VT_UI4; wReserved1 = 0; ulVal = value; }
|
||||
CPropVariant(UInt64 value) { vt = VT_UI8; wReserved1 = 0; uhVal.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();
|
||||
CPropVariant& operator=(UInt16 value) throw();
|
||||
CPropVariant& operator=(Int32 value) throw();
|
||||
CPropVariant& operator=(Int64 value) throw();
|
||||
|
||||
public:
|
||||
CPropVariant& operator=(UInt32 value) throw();
|
||||
CPropVariant& operator=(UInt64 value) throw();
|
||||
CPropVariant& operator=(const FILETIME &value) throw();
|
||||
|
||||
void Set_Int32(Int32 value) throw();
|
||||
void Set_Int64(Int64 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
|
||||
Reference in New Issue
Block a user