// interopsvcObj.h : Declaration of the CinteropsvcObj

#pragma once
#include "resource.h"       // main symbols

#include "interopsvc.h"


// CinteropsvcObj

class ATL_NO_VTABLE CinteropsvcObj : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CinteropsvcObj, &CLSID_interop>,
	public IDispatchImpl<Iinterop, &IID_Iinterop, &LIBID_interopsvcLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
	CinteropsvcObj()
	{
	}

DECLARE_REGISTRY_RESOURCEID(IDR_INTEROPSVCOBJ)


BEGIN_COM_MAP(CinteropsvcObj)
	COM_INTERFACE_ENTRY(Iinterop)
	COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()


	DECLARE_PROTECT_FINAL_CONSTRUCT()

	HRESULT FinalConstruct()
	{
		return S_OK;
	}
	
	void FinalRelease() 
	{
	}

public:
	STDMETHOD(echoPolyMorphStruct)(/*[in]*/ VARIANT inputPolyMorphStruct, /*[out, retval]*/ VARIANT *outputPolyMorphStruct);
	STDMETHOD(echoPolyMorphArray)(/*[in]*/ VARIANT inputPolyMorphArray, /*[out, retval]*/ VARIANT *outputPolyMorphArray);
	STDMETHOD(echoPolyMorph)(/*[in]*/ VARIANT inputPolyMorph, /*[out, retval]*/ VARIANT *outputPolyMorph);
	STDMETHOD(echoBoolean)(/*[in]*/ VARIANT inputBoolean, /*[out, retval]*/ VARIANT *outputBoolean);
	STDMETHOD(echoDecimal)(/*[in]*/ VARIANT inputDecimal, /*[out, retval]*/ VARIANT *outputDecimal);
	STDMETHOD(echoDate)(/*[in]*/ VARIANT inputDate, /*[out, retval]*/ VARIANT *outputDate);
	STDMETHOD(echoHexBinary)(/*[in]*/ VARIANT inputHexBinary, /*[out, retval]*/ VARIANT *outputHexBinary);
	STDMETHOD(echoBase64)(/*[in]*/ VARIANT inputBase64, /*[out, retval]*/ VARIANT *outputBase64);
	STDMETHOD(echoStructArray)(/*[in]*/ VARIANT inputStructArray, /*[out, retval]*/ VARIANT *outputStructArray);
	STDMETHOD(echoStruct)(/*[in]*/ VARIANT inputStruct, /*[out, retval]*/ VARIANT *outputStruct);
	STDMETHOD(echoFloatArray)(/*[in]*/ VARIANT inputFloatArray, /*[out, retval]*/ VARIANT *outputFloatArray);
	STDMETHOD(echoFloat)(/*[in]*/ VARIANT inputFloat, /*[out, retval]*/ VARIANT *outputFloat);
	STDMETHOD(echoIntegerArray)(/*[in]*/ VARIANT inputIntegerArray, /*[out, retval]*/ VARIANT *outputIntegerArray);
	STDMETHOD(echoInteger)(/*[in]*/ VARIANT inputInteger, /*[out, retval]*/ VARIANT *outputInteger);
	STDMETHOD(echoStringArray)(/*[in]*/ VARIANT inputStringArray, /*[out, retval]*/ VARIANT *outputStringArray);
	STDMETHOD(echoString)(/*[in]*/ VARIANT inputString, /*[out, retval]*/ VARIANT *outputString);
	STDMETHOD(echoVoid)();
};

OBJECT_ENTRY_AUTO(__uuidof(interop), CinteropsvcObj)
