/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */

/* Make sure we have internals defined.  */
#include <_mingw.h>

#ifndef __OBJC__
#undef interface
#define interface struct
#endif

#ifndef RPC_NO_WINDOWS_H
#include <windows.h>
#endif

#ifndef __RPC_H__
#define __RPC_H__

#ifdef __cplusplus
extern "C" {
#endif

#include <basetsd.h>

#if defined(__ia64__) || defined(__x86_64)
#define __RPC_WIN64__
#else
#if !defined (_ARM_)
#define __RPC_WIN32__
#else
#define __RPC_ARM32__
#endif
#endif

#ifdef __RPC_WIN64__
#include <pshpack8.h>
#endif

#ifndef __MIDL_USER_DEFINED
#define __MIDL_USER_DEFINED
#define midl_user_allocate MIDL_user_allocate
#define midl_user_free MIDL_user_free
#endif

  typedef void *I_RPC_HANDLE;
  typedef __LONG32 RPC_STATUS;

#define RPC_UNICODE_SUPPORTED
#define __RPC_FAR
#define __RPC_API __stdcall
#define __RPC_USER __RPC_API
#define __RPC_STUB __RPC_API
#define RPC_ENTRY __RPC_API

#ifndef DECLSPEC_IMPORT
#define DECLSPEC_IMPORT __declspec(dllimport)
#endif

#ifndef _RPCRT4_
#define RPCRTAPI DECLSPEC_IMPORT
#else
#define RPCRTAPI
#endif

#ifndef _RPCNS4_
#define RPCNSAPI DECLSPEC_IMPORT
#else
#define RPCNSAPI
#endif

#include <rpcdce.h>
#ifndef _KRPCENV_
#include <rpcnsi.h>
#endif
#include <rpcnterr.h>
#include <excpt.h>
#include <winerror.h>

/* TODO:  This isn't actual working on gcc.  Either we need to implement
   their __try/__except/__finally feature, or we need to do at least for x64
   emulation-code via inline-assembler ...  */
#define RpcTryExcept __try {
#define RpcExcept(expr) } __except(expr) {
#define RpcEndExcept }
#define RpcTryFinally __try {
#define RpcFinally } __finally {
#define RpcEndFinally }

#define RpcExceptionCode() GetExceptionCode()
#define RpcAbnormalTermination() AbnormalTermination()

#ifndef RPC_NO_WINDOWS_H
#include <rpcasync.h>
#endif

#ifdef __RPC_WIN64__
#include <poppack.h>
#endif

#ifdef __cplusplus
}
#endif
#endif
