diff --git a/Source/7zip/Common/Alloc.cpp b/Source/7zip/Common/Alloc.cpp new file mode 100644 index 00000000..4015d3e5 --- /dev/null +++ b/Source/7zip/Common/Alloc.cpp @@ -0,0 +1,52 @@ +// Common/Alloc.cpp + +#include "StdAfx.h" + +#ifndef WIN32 +#include +#endif + +#include "Alloc.h" +// #include "NewHandler.h" + +void *MyAlloc(size_t size) +{ + return ::malloc(size); +} + +void MyFree(void *address) +{ + ::free(address); +} + +void *BigAlloc(size_t size) +{ + #ifdef WIN32 + return ::VirtualAlloc(0, size, MEM_COMMIT, PAGE_READWRITE); + #else + return ::malloc(size); + #endif +} + +void BigFree(void *address) +{ + if (address == 0) + return; + #ifdef WIN32 + ::VirtualFree(address, 0, MEM_RELEASE); + #else + ::free(address); + #endif +} + +/* +void *BigAllocE(size_t size) +{ + void *res = BigAlloc(size); + #ifndef _NO_EXCEPTIONS + if (res == 0) + throw CNewException(); + #endif + return res; +} +*/ diff --git a/Source/7zip/Common/Alloc.h b/Source/7zip/Common/Alloc.h new file mode 100644 index 00000000..881af966 --- /dev/null +++ b/Source/7zip/Common/Alloc.h @@ -0,0 +1,14 @@ +// Common/Alloc.h + +#ifndef __COMMON_ALLOC_H +#define __COMMON_ALLOC_H + +#include + +void *MyAlloc(size_t size); +void MyFree(void *address); +void *BigAlloc(size_t size); +void BigFree(void *address); +// void *BigAllocE(size_t size); + +#endif diff --git a/Source/7zip/Common/MyUnknown.h b/Source/7zip/Common/MyUnknown.h new file mode 100644 index 00000000..912ff93e --- /dev/null +++ b/Source/7zip/Common/MyUnknown.h @@ -0,0 +1,25 @@ +// MyUnknown.h + +#ifndef __MYUNKNOWN_H +#define __MYUNKNOWN_H + +#ifdef WIN32 + +// #include +#ifdef _WIN32_WCE +#if (_WIN32_WCE > 300) +#include +#else +#define MIDL_INTERFACE(x) struct +#endif +#else +#include +#endif + +#include + +#else +#include "MyWindows.h" +#endif + +#endif diff --git a/Source/7zip/Common/MyWindows.h b/Source/7zip/Common/MyWindows.h new file mode 100644 index 00000000..7181de70 --- /dev/null +++ b/Source/7zip/Common/MyWindows.h @@ -0,0 +1,193 @@ +// MyWindows.h + +#ifndef __MYWINDOWS_H +#define __MYWINDOWS_H + +#ifndef WIN32 + +#include + +#include "../../Platform.h" + +#include "Types.h" + +typedef short VARIANT_BOOL; + +typedef wchar_t OLECHAR; +typedef OLECHAR *BSTR; +typedef const OLECHAR *LPCOLESTR; +typedef OLECHAR *LPOLESTR; + +typedef struct _FILETIME +{ + DWORD dwLowDateTime; + DWORD dwHighDateTime; +}FILETIME; + +#define HRESULT LONG +#define FAILED(Status) ((HRESULT)(Status)<0) +typedef ULONG PROPID; +typedef LONG SCODE; + +#define S_OK ((HRESULT)0x00000000L) +#define S_FALSE ((HRESULT)0x00000001L) +#define E_NOINTERFACE ((HRESULT)0x80004002L) +#define E_ABORT ((HRESULT)0x80004004L) +#define E_FAIL ((HRESULT)0x80004005L) +#define STG_E_INVALIDFUNCTION ((HRESULT)0x80030001L) +#define E_OUTOFMEMORY ((HRESULT)0x8007000EL) +#define E_INVALIDARG ((HRESULT)0x80070057L) + +#ifdef _MSC_VER +#define STDMETHODCALLTYPE __stdcall +#else +#define STDMETHODCALLTYPE +#endif + +#define STDMETHOD_(t, f) virtual t STDMETHODCALLTYPE f +#define STDMETHOD(f) STDMETHOD_(HRESULT, f) +#define STDMETHODIMP_(type) type STDMETHODCALLTYPE +#define STDMETHODIMP STDMETHODIMP_(HRESULT) + +#define PURE = 0 + +typedef struct { + unsigned long Data1; + unsigned short Data2; + unsigned short Data3; + unsigned char Data4[8]; +} GUID; + +#ifdef __cplusplus + #define MY_EXTERN_C extern "C" +#else + #define MY_EXTERN_C extern +#endif + +#ifdef INITGUID + #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + MY_EXTERN_C const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } } +#else + #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ + MY_EXTERN_C const GUID name +#endif + +#ifdef __cplusplus +#define REFGUID const GUID & +#else +#define REFGUID const GUID * __MIDL_CONST +#endif + +#define REFCLSID REFGUID +#define REFIID REFGUID + +#define MIDL_INTERFACE(x) struct +inline bool operator==(REFGUID g1, REFGUID g2) +{ + for (size_t i = 0; i < sizeof(g1); i++) + if (((unsigned char *)&g1)[i] != ((unsigned char *)&g2)[i]) + return false; + return true; +} +inline bool operator!=(REFGUID g1, REFGUID g2) + { return !(g1 == g2); } + +struct IUnknown +{ + STDMETHOD(QueryInterface) (REFIID iid, void **outObject) PURE; + STDMETHOD_(ULONG, AddRef)() PURE; + STDMETHOD_(ULONG, Release)() PURE; +}; + +typedef IUnknown *LPUNKNOWN; + +#define VARIANT_TRUE ((VARIANT_BOOL)-1) +#define VARIANT_FALSE ((VARIANT_BOOL)0) + +enum VARENUM +{ + VT_EMPTY = 0, + VT_NULL = 1, + VT_I2 = 2, + VT_I4 = 3, + VT_R4 = 4, + VT_R8 = 5, + VT_CY = 6, + VT_DATE = 7, + VT_BSTR = 8, + VT_DISPATCH = 9, + VT_ERROR = 10, + VT_BOOL = 11, + VT_VARIANT = 12, + VT_UNKNOWN = 13, + VT_DECIMAL = 14, + VT_I1 = 16, + VT_UI1 = 17, + VT_UI2 = 18, + VT_UI4 = 19, + VT_I8 = 20, + VT_UI8 = 21, + VT_INT = 22, + VT_UINT = 23, + VT_VOID = 24, + VT_HRESULT = 25, + VT_FILETIME = 64 +}; + +typedef unsigned short VARTYPE; +typedef WORD PROPVAR_PAD1; +typedef WORD PROPVAR_PAD2; +typedef WORD PROPVAR_PAD3; + +typedef struct tagPROPVARIANT +{ + VARTYPE vt; + PROPVAR_PAD1 wReserved1; + PROPVAR_PAD2 wReserved2; + PROPVAR_PAD3 wReserved3; + union + { + CHAR cVal; + UCHAR bVal; + SHORT iVal; + USHORT uiVal; + LONG lVal; + ULONG ulVal; + INT intVal; + UINT uintVal; + LARGE_INTEGER hVal; + ULARGE_INTEGER uhVal; + VARIANT_BOOL boolVal; + SCODE scode; + FILETIME filetime; + BSTR bstrVal; + }; +} PROPVARIANT; + +typedef tagPROPVARIANT tagVARIANT; +typedef tagVARIANT VARIANT; +typedef VARIANT VARIANTARG; + +BSTR SysAllocStringByteLen(LPCSTR psz, unsigned int len); +BSTR SysAllocString(const OLECHAR *sz); +void SysFreeString(BSTR bstr); +UINT SysStringByteLen(BSTR bstr); +UINT SysStringLen(BSTR bstr); + +DWORD GetLastError(); +HRESULT VariantClear(VARIANTARG *prop); +HRESULT VariantCopy(VARIANTARG *dest, VARIANTARG *src); +LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2); + +#define CP_ACP 0 +#define CP_OEMCP 1 + +typedef enum tagSTREAM_SEEK +{ + STREAM_SEEK_SET = 0, + STREAM_SEEK_CUR = 1, + STREAM_SEEK_END = 2 +} STREAM_SEEK; + +#endif +#endif