| 1 |
/** |
| 2 |
* This file has no copyright assigned and is placed in the Public Domain. |
| 3 |
* This file is part of the mingw-w64 runtime package. |
| 4 |
* No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 |
*/ |
| 6 |
#ifndef __REQUIRED_RPCNDR_H_VERSION__ |
| 7 |
#define __REQUIRED_RPCNDR_H_VERSION__ 475 |
| 8 |
#endif |
| 9 |
|
| 10 |
#include "rpc.h" |
| 11 |
#include "rpcndr.h" |
| 12 |
|
| 13 |
#ifndef __RPCNDR_H_VERSION__ |
| 14 |
#error this stub requires an updated version of <rpcndr.h> |
| 15 |
#endif |
| 16 |
|
| 17 |
#ifndef COM_NO_WINDOWS_H |
| 18 |
#include "windows.h" |
| 19 |
#include "ole2.h" |
| 20 |
#endif |
| 21 |
|
| 22 |
#ifndef __bits1_5_h__ |
| 23 |
#define __bits1_5_h__ |
| 24 |
|
| 25 |
#ifndef __IBackgroundCopyJob2_FWD_DEFINED__ |
| 26 |
#define __IBackgroundCopyJob2_FWD_DEFINED__ |
| 27 |
typedef struct IBackgroundCopyJob2 IBackgroundCopyJob2; |
| 28 |
#endif |
| 29 |
|
| 30 |
#ifndef __BackgroundCopyManager1_5_FWD_DEFINED__ |
| 31 |
#define __BackgroundCopyManager1_5_FWD_DEFINED__ |
| 32 |
#ifdef __cplusplus |
| 33 |
typedef class BackgroundCopyManager1_5 BackgroundCopyManager1_5; |
| 34 |
#else |
| 35 |
typedef struct BackgroundCopyManager1_5 BackgroundCopyManager1_5; |
| 36 |
#endif |
| 37 |
#endif |
| 38 |
|
| 39 |
#ifndef __IBackgroundCopyJob2_FWD_DEFINED__ |
| 40 |
#define __IBackgroundCopyJob2_FWD_DEFINED__ |
| 41 |
typedef struct IBackgroundCopyJob2 IBackgroundCopyJob2; |
| 42 |
#endif |
| 43 |
|
| 44 |
#include "bits.h" |
| 45 |
|
| 46 |
#ifdef __cplusplus |
| 47 |
extern "C"{ |
| 48 |
#endif |
| 49 |
|
| 50 |
#ifndef __MIDL_user_allocate_free_DEFINED__ |
| 51 |
#define __MIDL_user_allocate_free_DEFINED__ |
| 52 |
void *__RPC_API MIDL_user_allocate(size_t); |
| 53 |
void __RPC_API MIDL_user_free(void *); |
| 54 |
#endif |
| 55 |
|
| 56 |
#ifndef __IBackgroundCopyJob2_INTERFACE_DEFINED__ |
| 57 |
#define __IBackgroundCopyJob2_INTERFACE_DEFINED__ |
| 58 |
|
| 59 |
typedef struct _BG_JOB_REPLY_PROGRESS { |
| 60 |
UINT64 BytesTotal; |
| 61 |
UINT64 BytesTransferred; |
| 62 |
} BG_JOB_REPLY_PROGRESS; |
| 63 |
|
| 64 |
typedef enum __MIDL_IBackgroundCopyJob2_0001 { |
| 65 |
BG_AUTH_TARGET_SERVER = 1,BG_AUTH_TARGET_PROXY = BG_AUTH_TARGET_SERVER + 1 |
| 66 |
} BG_AUTH_TARGET; |
| 67 |
|
| 68 |
typedef enum __MIDL_IBackgroundCopyJob2_0002 { |
| 69 |
BG_AUTH_SCHEME_BASIC = 1,BG_AUTH_SCHEME_DIGEST,BG_AUTH_SCHEME_NTLM, |
| 70 |
BG_AUTH_SCHEME_NEGOTIATE,BG_AUTH_SCHEME_PASSPORT |
| 71 |
} BG_AUTH_SCHEME; |
| 72 |
|
| 73 |
typedef struct __MIDL_IBackgroundCopyJob2_0003 { |
| 74 |
LPWSTR UserName; |
| 75 |
LPWSTR Password; |
| 76 |
} BG_BASIC_CREDENTIALS; |
| 77 |
|
| 78 |
typedef BG_BASIC_CREDENTIALS *PBG_BASIC_CREDENTIALS; |
| 79 |
|
| 80 |
typedef union __MIDL_IBackgroundCopyJob2_0004 { |
| 81 |
BG_BASIC_CREDENTIALS Basic; |
| 82 |
} BG_AUTH_CREDENTIALS_UNION; |
| 83 |
|
| 84 |
typedef struct __MIDL_IBackgroundCopyJob2_0005 { |
| 85 |
BG_AUTH_TARGET Target; |
| 86 |
BG_AUTH_SCHEME Scheme; |
| 87 |
BG_AUTH_CREDENTIALS_UNION Credentials; |
| 88 |
} BG_AUTH_CREDENTIALS; |
| 89 |
|
| 90 |
typedef BG_AUTH_CREDENTIALS *PBG_AUTH_CREDENTIALS; |
| 91 |
|
| 92 |
EXTERN_C const IID IID_IBackgroundCopyJob2; |
| 93 |
#if defined(__cplusplus) && !defined(CINTERFACE) |
| 94 |
struct IBackgroundCopyJob2 : public IBackgroundCopyJob { |
| 95 |
public: |
| 96 |
virtual HRESULT WINAPI SetNotifyCmdLine(LPCWSTR Program,LPCWSTR Parameters) = 0; |
| 97 |
virtual HRESULT WINAPI GetNotifyCmdLine(LPWSTR *pProgram,LPWSTR *pParameters) = 0; |
| 98 |
virtual HRESULT WINAPI GetReplyProgress(BG_JOB_REPLY_PROGRESS *pProgress) = 0; |
| 99 |
virtual HRESULT WINAPI GetReplyData(byte **ppBuffer,UINT64 *pLength) = 0; |
| 100 |
virtual HRESULT WINAPI SetReplyFileName(LPCWSTR ReplyFileName) = 0; |
| 101 |
virtual HRESULT WINAPI GetReplyFileName(LPWSTR *pReplyFileName) = 0; |
| 102 |
virtual HRESULT WINAPI SetCredentials(BG_AUTH_CREDENTIALS *credentials) = 0; |
| 103 |
virtual HRESULT WINAPI RemoveCredentials(BG_AUTH_TARGET Target,BG_AUTH_SCHEME Scheme) = 0; |
| 104 |
}; |
| 105 |
#else |
| 106 |
typedef struct IBackgroundCopyJob2Vtbl { |
| 107 |
BEGIN_INTERFACE |
| 108 |
HRESULT (WINAPI *QueryInterface)(IBackgroundCopyJob2 *This,REFIID riid,void **ppvObject); |
| 109 |
ULONG (WINAPI *AddRef)(IBackgroundCopyJob2 *This); |
| 110 |
ULONG (WINAPI *Release)(IBackgroundCopyJob2 *This); |
| 111 |
HRESULT (WINAPI *AddFileSet)(IBackgroundCopyJob2 *This,ULONG cFileCount,BG_FILE_INFO *pFileSet); |
| 112 |
HRESULT (WINAPI *AddFile)(IBackgroundCopyJob2 *This,LPCWSTR RemoteUrl,LPCWSTR LocalName); |
| 113 |
HRESULT (WINAPI *EnumFiles)(IBackgroundCopyJob2 *This,IEnumBackgroundCopyFiles **pEnum); |
| 114 |
HRESULT (WINAPI *Suspend)(IBackgroundCopyJob2 *This); |
| 115 |
HRESULT (WINAPI *Resume)(IBackgroundCopyJob2 *This); |
| 116 |
HRESULT (WINAPI *Cancel)(IBackgroundCopyJob2 *This); |
| 117 |
HRESULT (WINAPI *Complete)(IBackgroundCopyJob2 *This); |
| 118 |
HRESULT (WINAPI *GetId)(IBackgroundCopyJob2 *This,GUID *pVal); |
| 119 |
HRESULT (WINAPI *GetType)(IBackgroundCopyJob2 *This,BG_JOB_TYPE *pVal); |
| 120 |
HRESULT (WINAPI *GetProgress)(IBackgroundCopyJob2 *This,BG_JOB_PROGRESS *pVal); |
| 121 |
HRESULT (WINAPI *GetTimes)(IBackgroundCopyJob2 *This,BG_JOB_TIMES *pVal); |
| 122 |
HRESULT (WINAPI *GetState)(IBackgroundCopyJob2 *This,BG_JOB_STATE *pVal); |
| 123 |
HRESULT (WINAPI *GetError)(IBackgroundCopyJob2 *This,IBackgroundCopyError **ppError); |
| 124 |
HRESULT (WINAPI *GetOwner)(IBackgroundCopyJob2 *This,LPWSTR *pVal); |
| 125 |
HRESULT (WINAPI *SetDisplayName)(IBackgroundCopyJob2 *This,LPCWSTR Val); |
| 126 |
HRESULT (WINAPI *GetDisplayName)(IBackgroundCopyJob2 *This,LPWSTR *pVal); |
| 127 |
HRESULT (WINAPI *SetDescription)(IBackgroundCopyJob2 *This,LPCWSTR Val); |
| 128 |
HRESULT (WINAPI *GetDescription)(IBackgroundCopyJob2 *This,LPWSTR *pVal); |
| 129 |
HRESULT (WINAPI *SetPriority)(IBackgroundCopyJob2 *This,BG_JOB_PRIORITY Val); |
| 130 |
HRESULT (WINAPI *GetPriority)(IBackgroundCopyJob2 *This,BG_JOB_PRIORITY *pVal); |
| 131 |
HRESULT (WINAPI *SetNotifyFlags)(IBackgroundCopyJob2 *This,ULONG Val); |
| 132 |
HRESULT (WINAPI *GetNotifyFlags)(IBackgroundCopyJob2 *This,ULONG *pVal); |
| 133 |
HRESULT (WINAPI *SetNotifyInterface)(IBackgroundCopyJob2 *This,IUnknown *Val); |
| 134 |
HRESULT (WINAPI *GetNotifyInterface)(IBackgroundCopyJob2 *This,IUnknown **pVal); |
| 135 |
HRESULT (WINAPI *SetMinimumRetryDelay)(IBackgroundCopyJob2 *This,ULONG Seconds); |
| 136 |
HRESULT (WINAPI *GetMinimumRetryDelay)(IBackgroundCopyJob2 *This,ULONG *Seconds); |
| 137 |
HRESULT (WINAPI *SetNoProgressTimeout)(IBackgroundCopyJob2 *This,ULONG Seconds); |
| 138 |
HRESULT (WINAPI *GetNoProgressTimeout)(IBackgroundCopyJob2 *This,ULONG *Seconds); |
| 139 |
HRESULT (WINAPI *GetErrorCount)(IBackgroundCopyJob2 *This,ULONG *Errors); |
| 140 |
HRESULT (WINAPI *SetProxySettings)(IBackgroundCopyJob2 *This,BG_JOB_PROXY_USAGE ProxyUsage,const WCHAR *ProxyList,const WCHAR *ProxyBypassList); |
| 141 |
HRESULT (WINAPI *GetProxySettings)(IBackgroundCopyJob2 *This,BG_JOB_PROXY_USAGE *pProxyUsage,LPWSTR *pProxyList,LPWSTR *pProxyBypassList); |
| 142 |
HRESULT (WINAPI *TakeOwnership)(IBackgroundCopyJob2 *This); |
| 143 |
HRESULT (WINAPI *SetNotifyCmdLine)(IBackgroundCopyJob2 *This,LPCWSTR Program,LPCWSTR Parameters); |
| 144 |
HRESULT (WINAPI *GetNotifyCmdLine)(IBackgroundCopyJob2 *This,LPWSTR *pProgram,LPWSTR *pParameters); |
| 145 |
HRESULT (WINAPI *GetReplyProgress)(IBackgroundCopyJob2 *This,BG_JOB_REPLY_PROGRESS *pProgress); |
| 146 |
HRESULT (WINAPI *GetReplyData)(IBackgroundCopyJob2 *This,byte **ppBuffer,UINT64 *pLength); |
| 147 |
HRESULT (WINAPI *SetReplyFileName)(IBackgroundCopyJob2 *This,LPCWSTR ReplyFileName); |
| 148 |
HRESULT (WINAPI *GetReplyFileName)(IBackgroundCopyJob2 *This,LPWSTR *pReplyFileName); |
| 149 |
HRESULT (WINAPI *SetCredentials)(IBackgroundCopyJob2 *This,BG_AUTH_CREDENTIALS *credentials); |
| 150 |
HRESULT (WINAPI *RemoveCredentials)(IBackgroundCopyJob2 *This,BG_AUTH_TARGET Target,BG_AUTH_SCHEME Scheme); |
| 151 |
END_INTERFACE |
| 152 |
} IBackgroundCopyJob2Vtbl; |
| 153 |
struct IBackgroundCopyJob2 { |
| 154 |
CONST_VTBL struct IBackgroundCopyJob2Vtbl *lpVtbl; |
| 155 |
}; |
| 156 |
#ifdef COBJMACROS |
| 157 |
#define IBackgroundCopyJob2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) |
| 158 |
#define IBackgroundCopyJob2_AddRef(This) (This)->lpVtbl->AddRef(This) |
| 159 |
#define IBackgroundCopyJob2_Release(This) (This)->lpVtbl->Release(This) |
| 160 |
#define IBackgroundCopyJob2_AddFileSet(This,cFileCount,pFileSet) (This)->lpVtbl->AddFileSet(This,cFileCount,pFileSet) |
| 161 |
#define IBackgroundCopyJob2_AddFile(This,RemoteUrl,LocalName) (This)->lpVtbl->AddFile(This,RemoteUrl,LocalName) |
| 162 |
#define IBackgroundCopyJob2_EnumFiles(This,pEnum) (This)->lpVtbl->EnumFiles(This,pEnum) |
| 163 |
#define IBackgroundCopyJob2_Suspend(This) (This)->lpVtbl->Suspend(This) |
| 164 |
#define IBackgroundCopyJob2_Resume(This) (This)->lpVtbl->Resume(This) |
| 165 |
#define IBackgroundCopyJob2_Cancel(This) (This)->lpVtbl->Cancel(This) |
| 166 |
#define IBackgroundCopyJob2_Complete(This) (This)->lpVtbl->Complete(This) |
| 167 |
#define IBackgroundCopyJob2_GetId(This,pVal) (This)->lpVtbl->GetId(This,pVal) |
| 168 |
#define IBackgroundCopyJob2_GetType(This,pVal) (This)->lpVtbl->GetType(This,pVal) |
| 169 |
#define IBackgroundCopyJob2_GetProgress(This,pVal) (This)->lpVtbl->GetProgress(This,pVal) |
| 170 |
#define IBackgroundCopyJob2_GetTimes(This,pVal) (This)->lpVtbl->GetTimes(This,pVal) |
| 171 |
#define IBackgroundCopyJob2_GetState(This,pVal) (This)->lpVtbl->GetState(This,pVal) |
| 172 |
#define IBackgroundCopyJob2_GetError(This,ppError) (This)->lpVtbl->GetError(This,ppError) |
| 173 |
#define IBackgroundCopyJob2_GetOwner(This,pVal) (This)->lpVtbl->GetOwner(This,pVal) |
| 174 |
#define IBackgroundCopyJob2_SetDisplayName(This,Val) (This)->lpVtbl->SetDisplayName(This,Val) |
| 175 |
#define IBackgroundCopyJob2_GetDisplayName(This,pVal) (This)->lpVtbl->GetDisplayName(This,pVal) |
| 176 |
#define IBackgroundCopyJob2_SetDescription(This,Val) (This)->lpVtbl->SetDescription(This,Val) |
| 177 |
#define IBackgroundCopyJob2_GetDescription(This,pVal) (This)->lpVtbl->GetDescription(This,pVal) |
| 178 |
#define IBackgroundCopyJob2_SetPriority(This,Val) (This)->lpVtbl->SetPriority(This,Val) |
| 179 |
#define IBackgroundCopyJob2_GetPriority(This,pVal) (This)->lpVtbl->GetPriority(This,pVal) |
| 180 |
#define IBackgroundCopyJob2_SetNotifyFlags(This,Val) (This)->lpVtbl->SetNotifyFlags(This,Val) |
| 181 |
#define IBackgroundCopyJob2_GetNotifyFlags(This,pVal) (This)->lpVtbl->GetNotifyFlags(This,pVal) |
| 182 |
#define IBackgroundCopyJob2_SetNotifyInterface(This,Val) (This)->lpVtbl->SetNotifyInterface(This,Val) |
| 183 |
#define IBackgroundCopyJob2_GetNotifyInterface(This,pVal) (This)->lpVtbl->GetNotifyInterface(This,pVal) |
| 184 |
#define IBackgroundCopyJob2_SetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->SetMinimumRetryDelay(This,Seconds) |
| 185 |
#define IBackgroundCopyJob2_GetMinimumRetryDelay(This,Seconds) (This)->lpVtbl->GetMinimumRetryDelay(This,Seconds) |
| 186 |
#define IBackgroundCopyJob2_SetNoProgressTimeout(This,Seconds) (This)->lpVtbl->SetNoProgressTimeout(This,Seconds) |
| 187 |
#define IBackgroundCopyJob2_GetNoProgressTimeout(This,Seconds) (This)->lpVtbl->GetNoProgressTimeout(This,Seconds) |
| 188 |
#define IBackgroundCopyJob2_GetErrorCount(This,Errors) (This)->lpVtbl->GetErrorCount(This,Errors) |
| 189 |
#define IBackgroundCopyJob2_SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList) (This)->lpVtbl->SetProxySettings(This,ProxyUsage,ProxyList,ProxyBypassList) |
| 190 |
#define IBackgroundCopyJob2_GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList) (This)->lpVtbl->GetProxySettings(This,pProxyUsage,pProxyList,pProxyBypassList) |
| 191 |
#define IBackgroundCopyJob2_TakeOwnership(This) (This)->lpVtbl->TakeOwnership(This) |
| 192 |
#define IBackgroundCopyJob2_SetNotifyCmdLine(This,Program,Parameters) (This)->lpVtbl->SetNotifyCmdLine(This,Program,Parameters) |
| 193 |
#define IBackgroundCopyJob2_GetNotifyCmdLine(This,pProgram,pParameters) (This)->lpVtbl->GetNotifyCmdLine(This,pProgram,pParameters) |
| 194 |
#define IBackgroundCopyJob2_GetReplyProgress(This,pProgress) (This)->lpVtbl->GetReplyProgress(This,pProgress) |
| 195 |
#define IBackgroundCopyJob2_GetReplyData(This,ppBuffer,pLength) (This)->lpVtbl->GetReplyData(This,ppBuffer,pLength) |
| 196 |
#define IBackgroundCopyJob2_SetReplyFileName(This,ReplyFileName) (This)->lpVtbl->SetReplyFileName(This,ReplyFileName) |
| 197 |
#define IBackgroundCopyJob2_GetReplyFileName(This,pReplyFileName) (This)->lpVtbl->GetReplyFileName(This,pReplyFileName) |
| 198 |
#define IBackgroundCopyJob2_SetCredentials(This,credentials) (This)->lpVtbl->SetCredentials(This,credentials) |
| 199 |
#define IBackgroundCopyJob2_RemoveCredentials(This,Target,Scheme) (This)->lpVtbl->RemoveCredentials(This,Target,Scheme) |
| 200 |
#endif |
| 201 |
#endif |
| 202 |
HRESULT WINAPI IBackgroundCopyJob2_SetNotifyCmdLine_Proxy(IBackgroundCopyJob2 *This,LPCWSTR Program,LPCWSTR Parameters); |
| 203 |
void __RPC_STUB IBackgroundCopyJob2_SetNotifyCmdLine_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); |
| 204 |
HRESULT WINAPI IBackgroundCopyJob2_GetNotifyCmdLine_Proxy(IBackgroundCopyJob2 *This,LPWSTR *pProgram,LPWSTR *pParameters); |
| 205 |
void __RPC_STUB IBackgroundCopyJob2_GetNotifyCmdLine_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); |
| 206 |
HRESULT WINAPI IBackgroundCopyJob2_GetReplyProgress_Proxy(IBackgroundCopyJob2 *This,BG_JOB_REPLY_PROGRESS *pProgress); |
| 207 |
void __RPC_STUB IBackgroundCopyJob2_GetReplyProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); |
| 208 |
HRESULT WINAPI IBackgroundCopyJob2_GetReplyData_Proxy(IBackgroundCopyJob2 *This,byte **ppBuffer,UINT64 *pLength); |
| 209 |
void __RPC_STUB IBackgroundCopyJob2_GetReplyData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); |
| 210 |
HRESULT WINAPI IBackgroundCopyJob2_SetReplyFileName_Proxy(IBackgroundCopyJob2 *This,LPCWSTR ReplyFileName); |
| 211 |
void __RPC_STUB IBackgroundCopyJob2_SetReplyFileName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); |
| 212 |
HRESULT WINAPI IBackgroundCopyJob2_GetReplyFileName_Proxy(IBackgroundCopyJob2 *This,LPWSTR *pReplyFileName); |
| 213 |
void __RPC_STUB IBackgroundCopyJob2_GetReplyFileName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); |
| 214 |
HRESULT WINAPI IBackgroundCopyJob2_SetCredentials_Proxy(IBackgroundCopyJob2 *This,BG_AUTH_CREDENTIALS *credentials); |
| 215 |
void __RPC_STUB IBackgroundCopyJob2_SetCredentials_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); |
| 216 |
HRESULT WINAPI IBackgroundCopyJob2_RemoveCredentials_Proxy(IBackgroundCopyJob2 *This,BG_AUTH_TARGET Target,BG_AUTH_SCHEME Scheme); |
| 217 |
void __RPC_STUB IBackgroundCopyJob2_RemoveCredentials_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase); |
| 218 |
#endif |
| 219 |
|
| 220 |
#ifndef __BackgroundCopyManager1_5_LIBRARY_DEFINED__ |
| 221 |
#define __BackgroundCopyManager1_5_LIBRARY_DEFINED__ |
| 222 |
EXTERN_C const IID LIBID_BackgroundCopyManager1_5; |
| 223 |
EXTERN_C const CLSID CLSID_BackgroundCopyManager1_5; |
| 224 |
#ifdef __cplusplus |
| 225 |
class BackgroundCopyManager1_5; |
| 226 |
#endif |
| 227 |
#endif |
| 228 |
|
| 229 |
#include "bits2_0.h" |
| 230 |
|
| 231 |
extern RPC_IF_HANDLE __MIDL_itf_bits1_5_0124_v0_0_c_ifspec; |
| 232 |
extern RPC_IF_HANDLE __MIDL_itf_bits1_5_0124_v0_0_s_ifspec; |
| 233 |
|
| 234 |
#ifdef __cplusplus |
| 235 |
} |
| 236 |
#endif |
| 237 |
#endif |