/* * InvokerClient interface defns for use with gcc. * * Note: These declarations mirror those of the InvokeBridge * class declaration. The COM exporter for a .NET assembly (class?) * generates it; please note that the IIDs are derived from * the method signatures of the exported classes/interfaces. * * (c) 2008-2009, Sigbjorn Finne * */ #include #include #include #ifdef __cplusplus extern "C"{ #endif #ifndef STDCALL #define STDCALL __stdcall #endif extern const CLSID CLSID_HsInvokeBridge; extern const IID IID_IUnknown; extern const IID IID_NULL; extern const IID IID_HsInvokeBridge; #ifdef WANT_UUID_DECLS const CLSID CLSID_HsInvokeBridge = { 0x39D497D9,0x60E0,0x3525,{0xB7,0xF2,0x7B,0xC0,0x96,0xD3,0xA2,0xA3}}; // bring them in (and duplicate) as it simplifies linking and GHCi usage.. #if 1 const IID IID_IUnknown = {0x00000000L, 0x0000, 0x0000, {0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46}}; const IID IID_ISupportErrorInfo = {0xDF0B3D60L, 0x548F, 0x101B, {0x8E,0x65,0x08,0x00,0x2B,0x2B,0xD1,0x19}}; #endif // NOTE: this IID cannot (as far as I know) be pinned by me, but will be // generated by the .NET COM Interop exporter. Generation is seeded based // on the signature of the class though, so will only change if/when it does // in meaningful ways. //const IID IID_HsInvokeBridge = { 0x26355556, 0x885E, 0x3E38, {0xA7, 0x3C, 0x15, 0x7F, 0xD4, 0x5B, 0x1A, 0x56}}; //const IID IID_HsInvokeBridge = { 0x0754C75B, 0x14B4, 0x3D86, {0x89,0x0D,0x27,0x22,0x6E,0x64,0xBC,0xBB}}; const IID IID_HsInvokeBridge = { 0x2B4F82F1, 0xB306, 0x3506, {0xAB,0x26,0x09,0xE8,0x9F,0x8C,0x25,0xAA}}; #endif #ifndef __HsInvokeBridge_INTERFACE_DEFINED__ #define __HsInvokeBridge_INTERFACE_DEFINED__ #undef INTERFACE #define INTERFACE HsInvokeBridge DECLARE_INTERFACE(HsInvokeBridge) { STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE; STDMETHOD_(ULONG,AddRef)(THIS) PURE; STDMETHOD_(ULONG,Release)(THIS) PURE; STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE; STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE; STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE; STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE; STDMETHOD(ToString)(THIS_ BSTR*) PURE; STDMETHOD(Equals)(THIS_ BSTR*) PURE; STDMETHOD(GetHashCode)(THIS_ long*) PURE; STDMETHOD(GetType)(THIS_ IUnknown**); STDMETHOD(CreateObject)(THIS_ BSTR,BSTR,SAFEARRAY*, VARIANT*) PURE; STDMETHOD(InvokeMethod)(THIS_ VARIANT,BSTR,SAFEARRAY*,long,long*,long,VARIANT*) PURE; STDMETHOD(InvokeMethodBoxed)(THIS_ VARIANT,BSTR,SAFEARRAY*,long,long*,long,IUnknown**) PURE; STDMETHOD(InvokeStaticMethod)(THIS_ BSTR,BSTR,SAFEARRAY*,long,long*,long,VARIANT*) PURE; STDMETHOD(InvokeStaticMethodBoxed)(THIS_ BSTR,BSTR,SAFEARRAY*,long,long*,long,IUnknown**) PURE; HRESULT ( STDCALL *GetField )( HsInvokeBridge * This, /* [in] */ VARIANT obj, /* [in] */ SAFEARRAY *args, /* [in] */ BSTR fieldSpec, /* [retval][out] */ VARIANT *pRetVal); HRESULT ( STDCALL *GetFieldBoxed )( HsInvokeBridge * This, /* [in] */ VARIANT obj, /* [in] */ SAFEARRAY *args, /* [in] */ BSTR fieldSpec, /* [retval][out] */ IUnknown **pRetVal); HRESULT ( STDCALL *GetStaticField )( HsInvokeBridge * This, /* [in] */ BSTR clsName, /* [in] */ BSTR fieldSpec, /* [retval][out] */ VARIANT *pRetVal); HRESULT ( STDCALL *GetStaticFieldBoxed )( HsInvokeBridge * This, /* [in] */ BSTR clsName, /* [in] */ BSTR fieldSpec, /* [retval][out] */ IUnknown **pRetVal); HRESULT ( STDCALL *SetField )( HsInvokeBridge * This, /* [in] */ VARIANT obj, /* [in] */ BSTR fieldSpec, /* [in] */ VARIANT val); HRESULT ( STDCALL *SetStaticField )( HsInvokeBridge * This, /* [in] */ BSTR clsName, /* [in] */ BSTR fieldSpec, /* [in] */ VARIANT val); HRESULT ( STDCALL *NewString )( HsInvokeBridge * This, /* [in] */ BSTR s, /* [retval][out] */VARIANT* pRetVal); HRESULT ( STDCALL *NewVector )( HsInvokeBridge * This, /* [in] */ long ty, /* [in] */ long sz, /* [retval][out] */IUnknown **pRetVal); HRESULT ( STDCALL *NewArgArray )( HsInvokeBridge * This, /* [in] */ long sz, /* [retval][out] */IUnknown **pRetVal); HRESULT ( STDCALL *SetArg )( HsInvokeBridge * This, /* [in] */ SAFEARRAY * arr, /* [in] */ VARIANT val, /* [in] */ long idx); HRESULT ( STDCALL *GetArg )( HsInvokeBridge * This, /* [in] */ SAFEARRAY * arr, /* [in] */ long idx, /* [retval][out] */ VARIANT *pRetVal); HRESULT ( STDCALL *GetType_2 )( HsInvokeBridge * This, /* [in] */ BSTR typeName, /* [retval][out] */ IUnknown **pRetVal); HRESULT ( STDCALL *DefineDelegator )( HsInvokeBridge * This, /* [in] */ BSTR delTy, /* [in] */ int funPtr, /* [retval][out] */ VARIANT *pRetVal); HRESULT ( STDCALL *DerefHandle )( HsInvokeBridge * This, /* [in] */ long hPtr, /* [retval][out] */ VARIANT *pRetVal); HRESULT ( STDCALL *SetDumpExceptionsFlag )( HsInvokeBridge * This, /* [in] */ unsigned char flg); }; #endif #define HsInvokeBridge_QueryInterface(This,riid,ppvObject) \ (This)->lpVtbl->QueryInterface(This,riid,ppvObject) #define HsInvokeBridge_AddRef(This) \ (This)->lpVtbl->AddRef(This) #define HsInvokeBridge_Release(This) \ (This)->lpVtbl->Release(This) #define HsInvokeBridge_GetTypeInfoCount(This,pctinfo) \ (This)->lpVtbl->GetTypeInfoCount(This,pctinfo) #define HsInvokeBridge_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \ (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo) #define HsInvokeBridge_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \ (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) #define HsInvokeBridge_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \ (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) #define HsInvokeBridge_get_ToString(This,pRetVal) \ (This)->lpVtbl->get_ToString(This,pRetVal) #define HsInvokeBridge_Equals(This,obj,pRetVal) \ (This)->lpVtbl->Equals(This,obj,pRetVal) #define HsInvokeBridge_GetHashCode(This,pRetVal) \ (This)->lpVtbl->GetHashCode(This,pRetVal) #define HsInvokeBridge_GetType(This,pRetVal) \ (This)->lpVtbl->GetType(This,pRetVal) #define HsInvokeBridge_CreateObject(This,assemName,objSpec,args,pRetVal) \ (This)->lpVtbl->CreateObject(This,assemName,objSpec,args,pRetVal) #define HsInvokeBridge_InvokeMethod(This,obj,methSpec,args,arg_len,arg_tys,res_ty,pRetVal) \ (This)->lpVtbl->InvokeMethod(This,obj,methSpec,args,arg_len,arg_tys,res_ty,pRetVal) #define HsInvokeBridge_InvokeMethodBoxed(This,obj,methSpec,args,arg_len,arg_tys,res_ty,pRetVal) \ (This)->lpVtbl->InvokeMethodBoxed(This,obj,methSpec,args,arg_len,arg_tys,res_ty,pRetVal) #define HsInvokeBridge_InvokeStaticMethod(This,assemName,methSpec,args,arg_len,arg_tys,res_ty,pRetVal) \ (This)->lpVtbl->InvokeStaticMethod(This,assemName,methSpec,args,arg_len,arg_tys,res_ty,pRetVal) #define HsInvokeBridge_InvokeStaticMethodBoxed(This,assemName,methSpec,args,arg_len,arg_tys,res_ty,pRetVal) \ (This)->lpVtbl->InvokeStaticMethodBoxed(This,assemName,methSpec,args,arg_len,arg_tys,res_ty,pRetVal) #define HsInvokeBridge_GetField(This,obj,args,fieldSpec,pRetVal) \ (This)->lpVtbl->GetField(This,obj,args,fieldSpec,pRetVal) #define HsInvokeBridge_GetFieldBoxed(This,obj,args,fieldSpec,pRetVal) \ (This)->lpVtbl->GetFieldBoxed(This,obj,args,fieldSpec,pRetVal) #define HsInvokeBridge_GetStaticField(This,clsName,fieldSpec,pRetVal) \ (This)->lpVtbl->GetStaticField(This,clsName,fieldSpec,pRetVal) #define HsInvokeBridge_GetStaticFieldBoxed(This,clsName,fieldSpec,pRetVal) \ (This)->lpVtbl->GetStaticFieldBoxed(This,clsName,fieldSpec,pRetVal) #define HsInvokeBridge_SetField(This,obj,fieldSpec,val) \ (This)->lpVtbl->SetField(This,obj,fieldSpec,val) #define HsInvokeBridge_SetStaticField(This,clsName,fieldSpec,val) \ (This)->lpVtbl->SetStaticField(This,clsName,fieldSpec,val) #define HsInvokeBridge_NewString(This,s,pRetVal) \ (This)->lpVtbl->NewString(This,s,pRetVal) #define HsInvokeBridge_NewVector(This,ty,sz,pRetVal) \ (This)->lpVtbl->NewVector(This,ty,sz,pRetVal) #define HsInvokeBridge_NewArgArray(This,sz,pRetVal) \ (This)->lpVtbl->NewArgArray(This,sz,pRetVal) #define HsInvokeBridge_SetArg(This,arr,val,idx) \ (This)->lpVtbl->SetArg(This,arr,val,idx) #define HsInvokeBridge_GetArg(This,arr,idx,pRetVal) \ (This)->lpVtbl->GetArg(This,arr,idx,pRetVal) #define HsInvokeBridge_GetType_2(This,typeName,pRetVal) \ (This)->lpVtbl->GetType_2(This,typeName,pRetVal) #define HsInvokeBridge_DefineDelegator(This,delTy,funPtr,pRetVal) \ (This)->lpVtbl->DefineDelegator(This,delTy,funPtr,pRetVal) #define HsInvokeBridge_DerefHandle(This,hPtr,pRetVal) \ (This)->lpVtbl->DerefHandle(This,hPtr,pRetVal) #define HsInvokeBridge_SetDumpExceptionsFlag(This,flg) \ (This)->lpVtbl->SetDumpExceptionsFlag(This,flg) #ifdef __cplusplus } #endif