1*5c66ce18SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*5c66ce18SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*5c66ce18SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*5c66ce18SAndrew Rist * distributed with this work for additional information 6*5c66ce18SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*5c66ce18SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*5c66ce18SAndrew Rist * "License"); you may not use this file except in compliance 9*5c66ce18SAndrew Rist * with the License. You may obtain a copy of the License at 10*5c66ce18SAndrew Rist * 11*5c66ce18SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*5c66ce18SAndrew Rist * 13*5c66ce18SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*5c66ce18SAndrew Rist * software distributed under the License is distributed on an 15*5c66ce18SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*5c66ce18SAndrew Rist * KIND, either express or implied. See the License for the 17*5c66ce18SAndrew Rist * specific language governing permissions and limitations 18*5c66ce18SAndrew Rist * under the License. 19*5c66ce18SAndrew Rist * 20*5c66ce18SAndrew Rist *************************************************************/ 21*5c66ce18SAndrew Rist 22*5c66ce18SAndrew Rist 23cdf0e10cSrcweir // Callback.h : Declaration of the CCallback 24cdf0e10cSrcweir 25cdf0e10cSrcweir #ifndef __CALLBACK_H_ 26cdf0e10cSrcweir #define __CALLBACK_H_ 27cdf0e10cSrcweir 28cdf0e10cSrcweir #include "resource.h" // main symbols 29cdf0e10cSrcweir 30cdf0e10cSrcweir ///////////////////////////////////////////////////////////////////////////// 31cdf0e10cSrcweir // CCallback 32cdf0e10cSrcweir class ATL_NO_VTABLE CCallback : 33cdf0e10cSrcweir public CComObjectRootEx<CComSingleThreadModel>, 34cdf0e10cSrcweir public CComCoClass<CCallback, &CLSID_Callback>, 35cdf0e10cSrcweir public IDispatchImpl<ICallback, &IID_ICallback, &LIBID_XCALLBACK_IMPLLib> 36cdf0e10cSrcweir { 37cdf0e10cSrcweir public: CCallback()38cdf0e10cSrcweir CCallback() 39cdf0e10cSrcweir { 40cdf0e10cSrcweir } 41cdf0e10cSrcweir 42cdf0e10cSrcweir DECLARE_REGISTRY_RESOURCEID(IDR_CALLBACK) 43cdf0e10cSrcweir 44cdf0e10cSrcweir DECLARE_PROTECT_FINAL_CONSTRUCT() 45cdf0e10cSrcweir 46cdf0e10cSrcweir BEGIN_COM_MAP(CCallback) 47cdf0e10cSrcweir COM_INTERFACE_ENTRY(ICallback) 48cdf0e10cSrcweir COM_INTERFACE_ENTRY(IDispatch) 49cdf0e10cSrcweir END_COM_MAP() 50cdf0e10cSrcweir 51cdf0e10cSrcweir // ICallback 52cdf0e10cSrcweir public: 53cdf0e10cSrcweir STDMETHOD(inSeqByte)(/*[in]*/ LPSAFEARRAY val); 54cdf0e10cSrcweir STDMETHOD(inSeqXEventListener)(/*[in]*/ LPSAFEARRAY listener, LPSAFEARRAY event); 55cdf0e10cSrcweir STDMETHOD(outSeqByte)(/*[out]*/ LPSAFEARRAY* outVal); 56cdf0e10cSrcweir STDMETHOD(inValues)(/*[in]*/short aChar, /*[in]*/ long aLong, /*[in]*/ BSTR aString); 57cdf0e10cSrcweir STDMETHOD(inoutLong)(/*[in,out]*/ long* inoutVal); 58cdf0e10cSrcweir STDMETHOD(inoutShort)(/*[in,out]*/ short* inoutVal); 59cdf0e10cSrcweir STDMETHOD(inoutByte)(/*[in,out]*/ unsigned char* inoutVal); 60cdf0e10cSrcweir STDMETHOD(inoutDouble)(/*[in,out]*/ double* inoutVal); 61cdf0e10cSrcweir STDMETHOD(inoutFloat)(/*[in,out]*/ float* inoutVal); 62cdf0e10cSrcweir STDMETHOD(inoutString)(/*[in,out]*/ BSTR *inoutVal); 63cdf0e10cSrcweir STDMETHOD(inoutChar)(/*[in,out]*/ short* inoutVal); 64cdf0e10cSrcweir STDMETHOD(inoutBool)(/*[in,out]*/ VARIANT_BOOL * inoutVal); 65cdf0e10cSrcweir STDMETHOD(inoutAny)(/*[in,out]*/ VARIANT* inoutVal); 66cdf0e10cSrcweir STDMETHOD(inoutSeqAny)(/*[in,out]*/ LPSAFEARRAY* pArray); 67cdf0e10cSrcweir STDMETHOD(inoutEnum)(/*[in,out]*/ long * inoutVal); 68cdf0e10cSrcweir STDMETHOD(inoutStruct)(/*[in,out]*/ IDispatch** inoutVal); 69cdf0e10cSrcweir STDMETHOD(inoutInterface)(/*[in,out]*/ IDispatch** ppdisp); 70cdf0e10cSrcweir STDMETHOD(inoutValuesAll)( 71cdf0e10cSrcweir /* [out][in] */ IDispatch __RPC_FAR *__RPC_FAR *aXSimple, 72cdf0e10cSrcweir /* [out][in] */ IDispatch __RPC_FAR *__RPC_FAR *aStruct, 73cdf0e10cSrcweir /* [out][in] */ long __RPC_FAR *aEnum, 74cdf0e10cSrcweir /* [out][in] */ SAFEARRAY __RPC_FAR * __RPC_FAR *aSeq, 75cdf0e10cSrcweir /* [out][in] */ VARIANT __RPC_FAR *aAny, 76cdf0e10cSrcweir /* [out][in] */ VARIANT_BOOL __RPC_FAR *aBool, 77cdf0e10cSrcweir /* [out][in] */ short __RPC_FAR *aChar, 78cdf0e10cSrcweir /* [out][in] */ BSTR __RPC_FAR *aString, 79cdf0e10cSrcweir /* [out][in] */ float __RPC_FAR *aFloat, 80cdf0e10cSrcweir /* [out][in] */ double __RPC_FAR *aDouble, 81cdf0e10cSrcweir /* [out][in] */ unsigned char __RPC_FAR *aByte, 82cdf0e10cSrcweir /* [out][in] */ short __RPC_FAR *aShort, 83cdf0e10cSrcweir /* [out][in] */ long __RPC_FAR *aLong); 84cdf0e10cSrcweir 85cdf0e10cSrcweir STDMETHOD(outByte)( unsigned char* outByte); 86cdf0e10cSrcweir STDMETHOD(outLong)(/*[out]*/ long* outLong); 87cdf0e10cSrcweir STDMETHOD(outShort)(/*[out]*/ short *outShort); 88cdf0e10cSrcweir STDMETHOD(outDouble)(/*[out]*/ double* outDouble); 89cdf0e10cSrcweir STDMETHOD(outFloat)(/*[out]*/ float* outFloat); 90cdf0e10cSrcweir STDMETHOD(outString)(/*[out]*/ BSTR * outString); 91cdf0e10cSrcweir STDMETHOD(outChar)(short* outChar); 92cdf0e10cSrcweir STDMETHOD(outBool)(VARIANT_BOOL* outBool); 93cdf0e10cSrcweir STDMETHOD(outAny)(VARIANT* outAny); 94cdf0e10cSrcweir STDMETHOD(outSeqAny)(/*[out]*/LPSAFEARRAY* outSeq); 95cdf0e10cSrcweir STDMETHOD(outEnum)(/*[out]*/ long* outEnum); 96cdf0e10cSrcweir STDMETHOD(outStruct)(/*[out]*/ IDispatch** outStruct); 97cdf0e10cSrcweir virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE outValuesAll( 98cdf0e10cSrcweir /* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppdisp, 99cdf0e10cSrcweir /* [out] */ IDispatch __RPC_FAR *__RPC_FAR *ppSimpleStruct, 100cdf0e10cSrcweir /* [out] */ long __RPC_FAR *aSimpleEnum, 101cdf0e10cSrcweir /* [out] */ LPSAFEARRAY* outSeq, 102cdf0e10cSrcweir /* [out] */ VARIANT __RPC_FAR *varAny, 103cdf0e10cSrcweir /* [out] */ VARIANT_BOOL __RPC_FAR *aBool, 104cdf0e10cSrcweir /* [out] */ short __RPC_FAR *aChar, 105cdf0e10cSrcweir /* [out] */ BSTR __RPC_FAR *aString, 106cdf0e10cSrcweir /* [out] */ float __RPC_FAR *aFloat, 107cdf0e10cSrcweir /* [out] */ double __RPC_FAR *aDouble, 108cdf0e10cSrcweir /* [out] */ unsigned char __RPC_FAR *aByte, 109cdf0e10cSrcweir /* [out] */ short __RPC_FAR *aShort, 110cdf0e10cSrcweir /* [out] */ long __RPC_FAR *aLong); 111cdf0e10cSrcweir // ); 112cdf0e10cSrcweir // 113cdf0e10cSrcweir // STDMETHOD(outValuesAll)( 114cdf0e10cSrcweir // /*[out]*/ IDispatch** ppdisp, 115cdf0e10cSrcweir // /*[out]*/ IUnknown** ppSimpleStruct, 116cdf0e10cSrcweir // /*[out]*/ long* aSimpleEnum, 117cdf0e10cSrcweir // /*[out]*/ VARIANT* ArrayAny, 118cdf0e10cSrcweir // /*[out]*/ VARIANT* varAny, 119cdf0e10cSrcweir // /*[out]*/ VARIANT_BOOL * aBool, 120cdf0e10cSrcweir // /*[out]*/ unsigned short* aChar, 121cdf0e10cSrcweir // /*[out]*/ BSTR* aString, /*[out]*/ float* aFloat, 122cdf0e10cSrcweir // /*[out]*/ double* aDouble, 123cdf0e10cSrcweir // /*[out]*/ signed char* aByte, /*[out]*/ short* aShort, /*[out]*/long* aLong, /*[out]*/ unsigned short* aUShort, /*[out]*/ unsigned long* aULong); 124cdf0e10cSrcweir STDMETHOD(outValuesMixed)(/*[in]*/ long val, /*[out]*/ long* pval, /*[in]*/ BSTR string); 125cdf0e10cSrcweir STDMETHOD(outInterface)(/*[out]*/ IDispatch** ppdisp); 126cdf0e10cSrcweir STDMETHOD(returnInterface)(/*[out, retval]*/ IDispatch** ppdisp); 127cdf0e10cSrcweir STDMETHOD(func1)(); 128cdf0e10cSrcweir }; 129cdf0e10cSrcweir 130cdf0e10cSrcweir #endif //__CALLBACK_H_ 131cdf0e10cSrcweir 132