other-licenses/7zstub/src/Common/MyWindows.h

Fri, 16 Jan 2015 18:13:44 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 18:13:44 +0100
branch
TOR_BUG_9701
changeset 14
925c144e1f1f
permissions
-rw-r--r--

Integrate suggestion from review to improve consistency with existing code.

     1 // MyWindows.h
     3 #ifndef __MYWINDOWS_H
     4 #define __MYWINDOWS_H
     6 #ifdef _WIN32
     8 #include <windows.h>
    10 #define CHAR_PATH_SEPARATOR '\\'
    11 #define WCHAR_PATH_SEPARATOR L'\\'
    12 #define STRING_PATH_SEPARATOR "\\"
    13 #define WSTRING_PATH_SEPARATOR L"\\"
    15 #else
    17 #define CHAR_PATH_SEPARATOR '/'
    18 #define WCHAR_PATH_SEPARATOR L'/'
    19 #define STRING_PATH_SEPARATOR "/"
    20 #define WSTRING_PATH_SEPARATOR L"/"
    22 #include <stddef.h> // for wchar_t
    23 #include <string.h>
    25 #include "MyGuidDef.h"
    27 typedef char CHAR;
    28 typedef unsigned char UCHAR;
    30 #undef BYTE
    31 typedef unsigned char BYTE;
    33 typedef short SHORT;
    34 typedef unsigned short USHORT;
    36 #undef WORD
    37 typedef unsigned short WORD;
    38 typedef short VARIANT_BOOL;
    40 typedef int INT;
    41 typedef Int32 INT32;
    42 typedef unsigned int UINT;
    43 typedef UInt32 UINT32;
    44 typedef INT32 LONG;   // LONG, ULONG and DWORD must be 32-bit
    45 typedef UINT32 ULONG;
    47 #undef DWORD
    48 typedef UINT32 DWORD;
    50 typedef Int64 LONGLONG;
    51 typedef UInt64 ULONGLONG;
    53 typedef struct LARGE_INTEGER { LONGLONG QuadPart; }LARGE_INTEGER;
    54 typedef struct _ULARGE_INTEGER { ULONGLONG QuadPart;} ULARGE_INTEGER;
    56 typedef const CHAR *LPCSTR;
    57 typedef CHAR TCHAR;
    58 typedef const TCHAR *LPCTSTR;
    59 typedef wchar_t WCHAR;
    60 typedef WCHAR OLECHAR;
    61 typedef const WCHAR *LPCWSTR;
    62 typedef OLECHAR *BSTR;
    63 typedef const OLECHAR *LPCOLESTR;
    64 typedef OLECHAR *LPOLESTR;
    66 typedef struct _FILETIME
    67 {
    68   DWORD dwLowDateTime;
    69   DWORD dwHighDateTime;
    70 }FILETIME;
    72 #define HRESULT LONG
    73 #define FAILED(Status) ((HRESULT)(Status)<0)
    74 typedef ULONG PROPID;
    75 typedef LONG SCODE;
    77 #define S_OK    ((HRESULT)0x00000000L)
    78 #define S_FALSE ((HRESULT)0x00000001L)
    79 #define E_NOTIMPL ((HRESULT)0x80004001L)
    80 #define E_NOINTERFACE ((HRESULT)0x80004002L)
    81 #define E_ABORT ((HRESULT)0x80004004L)
    82 #define E_FAIL ((HRESULT)0x80004005L)
    83 #define STG_E_INVALIDFUNCTION ((HRESULT)0x80030001L)
    84 #define E_OUTOFMEMORY ((HRESULT)0x8007000EL)
    85 #define E_INVALIDARG ((HRESULT)0x80070057L)
    87 #ifdef _MSC_VER
    88 #define STDMETHODCALLTYPE __stdcall 
    89 #else
    90 #define STDMETHODCALLTYPE 
    91 #endif
    93 #define STDMETHOD_(t, f) virtual t STDMETHODCALLTYPE f
    94 #define STDMETHOD(f) STDMETHOD_(HRESULT, f)
    95 #define STDMETHODIMP_(type) type STDMETHODCALLTYPE
    96 #define STDMETHODIMP STDMETHODIMP_(HRESULT)
    98 #define PURE = 0
   100 #define MIDL_INTERFACE(x) struct 
   102 struct IUnknown
   103 {
   104   STDMETHOD(QueryInterface) (REFIID iid, void **outObject) PURE;
   105   STDMETHOD_(ULONG, AddRef)() PURE;
   106   STDMETHOD_(ULONG, Release)() PURE;
   107 };
   109 typedef IUnknown *LPUNKNOWN;
   111 #define VARIANT_TRUE ((VARIANT_BOOL)-1)
   112 #define VARIANT_FALSE ((VARIANT_BOOL)0)
   114 enum VARENUM
   115 {	
   116   VT_EMPTY	= 0,
   117 	VT_NULL	= 1,
   118 	VT_I2	= 2,
   119 	VT_I4	= 3,
   120 	VT_R4	= 4,
   121 	VT_R8	= 5,
   122 	VT_CY	= 6,
   123 	VT_DATE	= 7,
   124 	VT_BSTR	= 8,
   125 	VT_DISPATCH	= 9,
   126 	VT_ERROR	= 10,
   127 	VT_BOOL	= 11,
   128 	VT_VARIANT	= 12,
   129 	VT_UNKNOWN	= 13,
   130 	VT_DECIMAL	= 14,
   131 	VT_I1	= 16,
   132 	VT_UI1	= 17,
   133 	VT_UI2	= 18,
   134 	VT_UI4	= 19,
   135 	VT_I8	= 20,
   136 	VT_UI8	= 21,
   137 	VT_INT	= 22,
   138 	VT_UINT	= 23,
   139 	VT_VOID	= 24,
   140 	VT_HRESULT	= 25,
   141 	VT_FILETIME	= 64
   142 };
   144 typedef unsigned short VARTYPE;
   145 typedef WORD PROPVAR_PAD1;
   146 typedef WORD PROPVAR_PAD2;
   147 typedef WORD PROPVAR_PAD3;
   149 typedef struct tagPROPVARIANT
   150 {
   151   VARTYPE vt;
   152   PROPVAR_PAD1 wReserved1;
   153   PROPVAR_PAD2 wReserved2;
   154   PROPVAR_PAD3 wReserved3;
   155   union 
   156   {
   157     CHAR cVal;
   158     UCHAR bVal;
   159     SHORT iVal;
   160     USHORT uiVal;
   161     LONG lVal;
   162     ULONG ulVal;
   163     INT intVal;
   164     UINT uintVal;
   165     LARGE_INTEGER hVal;
   166     ULARGE_INTEGER uhVal;
   167     VARIANT_BOOL boolVal;
   168     SCODE scode;
   169     FILETIME filetime;
   170     BSTR bstrVal;
   171   };
   172 } PROPVARIANT;
   174 typedef PROPVARIANT tagVARIANT;
   175 typedef tagVARIANT VARIANT;
   176 typedef VARIANT VARIANTARG;
   178 MY_EXTERN_C BSTR SysAllocStringByteLen(LPCSTR psz, UINT len);
   179 MY_EXTERN_C BSTR SysAllocString(const OLECHAR *sz);
   180 MY_EXTERN_C void SysFreeString(BSTR bstr);
   181 MY_EXTERN_C UINT SysStringByteLen(BSTR bstr);
   182 MY_EXTERN_C UINT SysStringLen(BSTR bstr);
   184 MY_EXTERN_C DWORD GetLastError();
   185 MY_EXTERN_C HRESULT VariantClear(VARIANTARG *prop);
   186 MY_EXTERN_C HRESULT VariantCopy(VARIANTARG *dest, VARIANTARG *src);
   187 MY_EXTERN_C LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2);
   189 #define CP_ACP    0
   190 #define CP_OEMCP  1
   192 typedef enum tagSTREAM_SEEK
   193 {	
   194   STREAM_SEEK_SET	= 0,
   195   STREAM_SEEK_CUR	= 1,
   196   STREAM_SEEK_END	= 2
   197 } STREAM_SEEK;
   199 #endif
   200 #endif

mercurial