// interopsvcBObj.h : Declaration of the CinteropsvcBObj

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

#include "interopsvcB.h"


// CinteropsvcBObj

class ATL_NO_VTABLE CinteropsvcBObj : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CinteropsvcBObj, &CLSID_interopB>,
	public IDispatchImpl<IinteropB, &IID_IinteropB, &LIBID_interopsvcBLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
	CinteropsvcBObj()
	{
	}

DECLARE_REGISTRY_RESOURCEID(IDR_INTEROPSVCBOBJ)


BEGIN_COM_MAP(CinteropsvcBObj)
	COM_INTERFACE_ENTRY(IinteropB)
	COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()


	DECLARE_PROTECT_FINAL_CONSTRUCT()

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

public:
	STDMETHOD(echoNestedArray)(/*[in]*/ VARIANT inputStruct, /*[out, retval]*/ VARIANT *outputStruct);
	STDMETHOD(echoNestedStruct)(/*[in]*/ VARIANT inputStruct, /*[out, retval]*/ VARIANT *outputStruct);
	STDMETHOD(echo2DStringArray)(/*[in]*/ VARIANT input2DStringArray, /*[out, retval]*/ VARIANT *output2DStringArray);
	STDMETHOD(echoSimpleTypesAsStruct)(/*[in]*/ BSTR inputString, /*[in]*/ int inputInteger, /*[in]*/ float inputFloat, /*[out, retval]*/ VARIANT *outputStruct);
	STDMETHOD(echoStructAsSimpleTypes)(/*[in]*/ VARIANT inputStruct, /*[out]*/ BSTR *outputString, /*[out]*/ int *outputInteger, /*[out]*/ float *outputFloat);
};

OBJECT_ENTRY_AUTO(__uuidof(interopB), CinteropsvcBObj)
