misc/libphysfs/lzma/CPP/Common/MyWindows.h
changeset 13881 99b265e0d1d0
parent 13880 5f819b90d479
child 13882 b172a5d40eee
equal deleted inserted replaced
13880:5f819b90d479 13881:99b265e0d1d0
     1 // MyWindows.h
       
     2 
       
     3 #ifndef __MYWINDOWS_H
       
     4 #define __MYWINDOWS_H
       
     5 
       
     6 #ifdef _WIN32
       
     7 
       
     8 #include <windows.h>
       
     9 
       
    10 #define CHAR_PATH_SEPARATOR '\\'
       
    11 #define WCHAR_PATH_SEPARATOR L'\\'
       
    12 #define STRING_PATH_SEPARATOR "\\"
       
    13 #define WSTRING_PATH_SEPARATOR L"\\"
       
    14 
       
    15 #else
       
    16 
       
    17 #define CHAR_PATH_SEPARATOR '/'
       
    18 #define WCHAR_PATH_SEPARATOR L'/'
       
    19 #define STRING_PATH_SEPARATOR "/"
       
    20 #define WSTRING_PATH_SEPARATOR L"/"
       
    21 
       
    22 #include <stddef.h> // for wchar_t
       
    23 #include <string.h>
       
    24 
       
    25 #include "MyGuidDef.h"
       
    26 
       
    27 typedef char CHAR;
       
    28 typedef unsigned char UCHAR;
       
    29 
       
    30 #undef BYTE
       
    31 typedef unsigned char BYTE;
       
    32 
       
    33 typedef short SHORT;
       
    34 typedef unsigned short USHORT;
       
    35 
       
    36 #undef WORD
       
    37 typedef unsigned short WORD;
       
    38 typedef short VARIANT_BOOL;
       
    39 
       
    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;
       
    46 
       
    47 #undef DWORD
       
    48 typedef UINT32 DWORD;
       
    49 
       
    50 typedef Int64 LONGLONG;
       
    51 typedef UInt64 ULONGLONG;
       
    52 
       
    53 typedef struct LARGE_INTEGER { LONGLONG QuadPart; }LARGE_INTEGER;
       
    54 typedef struct _ULARGE_INTEGER { ULONGLONG QuadPart;} ULARGE_INTEGER;
       
    55 
       
    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;
       
    65 
       
    66 typedef struct _FILETIME
       
    67 {
       
    68   DWORD dwLowDateTime;
       
    69   DWORD dwHighDateTime;
       
    70 }FILETIME;
       
    71 
       
    72 #define HRESULT LONG
       
    73 #define FAILED(Status) ((HRESULT)(Status)<0)
       
    74 typedef ULONG PROPID;
       
    75 typedef LONG SCODE;
       
    76 
       
    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)
       
    86 
       
    87 #ifdef _MSC_VER
       
    88 #define STDMETHODCALLTYPE __stdcall 
       
    89 #else
       
    90 #define STDMETHODCALLTYPE 
       
    91 #endif
       
    92 
       
    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)
       
    97 
       
    98 #define PURE = 0
       
    99 
       
   100 #define MIDL_INTERFACE(x) struct 
       
   101 
       
   102 #ifdef __cplusplus
       
   103 
       
   104 DEFINE_GUID(IID_IUnknown,
       
   105 0x00000000, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
       
   106 struct IUnknown
       
   107 {
       
   108   STDMETHOD(QueryInterface) (REFIID iid, void **outObject) PURE;
       
   109   STDMETHOD_(ULONG, AddRef)() PURE;
       
   110   STDMETHOD_(ULONG, Release)() PURE;
       
   111   #ifndef _WIN32
       
   112   virtual ~IUnknown() {}
       
   113   #endif
       
   114 };
       
   115 
       
   116 typedef IUnknown *LPUNKNOWN;
       
   117 
       
   118 #endif
       
   119 
       
   120 #define VARIANT_TRUE ((VARIANT_BOOL)-1)
       
   121 #define VARIANT_FALSE ((VARIANT_BOOL)0)
       
   122 
       
   123 enum VARENUM
       
   124 {
       
   125   VT_EMPTY = 0,
       
   126   VT_NULL = 1,
       
   127   VT_I2 = 2,
       
   128   VT_I4 = 3,
       
   129   VT_R4 = 4,
       
   130   VT_R8 = 5,
       
   131   VT_CY = 6,
       
   132   VT_DATE = 7,
       
   133   VT_BSTR = 8,
       
   134   VT_DISPATCH = 9,
       
   135   VT_ERROR = 10,
       
   136   VT_BOOL = 11,
       
   137   VT_VARIANT = 12,
       
   138   VT_UNKNOWN = 13,
       
   139   VT_DECIMAL = 14,
       
   140   VT_I1 = 16,
       
   141   VT_UI1 = 17,
       
   142   VT_UI2 = 18,
       
   143   VT_UI4 = 19,
       
   144   VT_I8 = 20,
       
   145   VT_UI8 = 21,
       
   146   VT_INT = 22,
       
   147   VT_UINT = 23,
       
   148   VT_VOID = 24,
       
   149   VT_HRESULT = 25,
       
   150   VT_FILETIME = 64
       
   151 };
       
   152 
       
   153 typedef unsigned short VARTYPE;
       
   154 typedef WORD PROPVAR_PAD1;
       
   155 typedef WORD PROPVAR_PAD2;
       
   156 typedef WORD PROPVAR_PAD3;
       
   157 
       
   158 #ifdef __cplusplus
       
   159 
       
   160 typedef struct tagPROPVARIANT
       
   161 {
       
   162   VARTYPE vt;
       
   163   PROPVAR_PAD1 wReserved1;
       
   164   PROPVAR_PAD2 wReserved2;
       
   165   PROPVAR_PAD3 wReserved3;
       
   166   union 
       
   167   {
       
   168     CHAR cVal;
       
   169     UCHAR bVal;
       
   170     SHORT iVal;
       
   171     USHORT uiVal;
       
   172     LONG lVal;
       
   173     ULONG ulVal;
       
   174     INT intVal;
       
   175     UINT uintVal;
       
   176     LARGE_INTEGER hVal;
       
   177     ULARGE_INTEGER uhVal;
       
   178     VARIANT_BOOL boolVal;
       
   179     SCODE scode;
       
   180     FILETIME filetime;
       
   181     BSTR bstrVal;
       
   182   };
       
   183 } PROPVARIANT;
       
   184 
       
   185 typedef PROPVARIANT tagVARIANT;
       
   186 typedef tagVARIANT VARIANT;
       
   187 typedef VARIANT VARIANTARG;
       
   188 
       
   189 MY_EXTERN_C HRESULT VariantClear(VARIANTARG *prop);
       
   190 MY_EXTERN_C HRESULT VariantCopy(VARIANTARG *dest, VARIANTARG *src);
       
   191 
       
   192 #endif
       
   193 
       
   194 MY_EXTERN_C BSTR SysAllocStringByteLen(LPCSTR psz, UINT len);
       
   195 MY_EXTERN_C BSTR SysAllocString(const OLECHAR *sz);
       
   196 MY_EXTERN_C void SysFreeString(BSTR bstr);
       
   197 MY_EXTERN_C UINT SysStringByteLen(BSTR bstr);
       
   198 MY_EXTERN_C UINT SysStringLen(BSTR bstr);
       
   199 
       
   200 MY_EXTERN_C DWORD GetLastError();
       
   201 MY_EXTERN_C LONG CompareFileTime(const FILETIME* ft1, const FILETIME* ft2);
       
   202 
       
   203 #define CP_ACP    0
       
   204 #define CP_OEMCP  1
       
   205 
       
   206 typedef enum tagSTREAM_SEEK
       
   207 {
       
   208   STREAM_SEEK_SET = 0,
       
   209   STREAM_SEEK_CUR = 1,
       
   210   STREAM_SEEK_END = 2
       
   211 } STREAM_SEEK;
       
   212 
       
   213 #endif
       
   214 #endif