// TheCoClass.h : Declaration of the CTheCoClass

#ifndef __THECOCLASS_H_
#define __THECOCLASS_H_

#include "resource.h"       // main symbols
#include <vector>

/////////////////////////////////////////////////////////////////////////////
// CTheCoClass
//
class ATL_NO_VTABLE CTheCoClass : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CTheCoClass, &CLSID_TheCoClass>,
	public IDispatchImpl<IBasicAccess, &IID_IBasicAccess, &LIBID_BASICATLSERVERLib>,
	public IDispatchImpl<IArrayAccess, &IID_IArrayAccess, &LIBID_BASICATLSERVERLib>,
	public IRawArrayAccess
{
public:
	//
	CTheCoClass()
	{
		m_theString="Initial string";
	}

DECLARE_REGISTRY_RESOURCEID(IDR_THECOCLASS)

DECLARE_PROTECT_FINAL_CONSTRUCT()

//
BEGIN_COM_MAP(CTheCoClass)
	COM_INTERFACE_ENTRY(IBasicAccess)
	COM_INTERFACE_ENTRY(IArrayAccess)
	COM_INTERFACE_ENTRY_IID(IID_IDispatch,IBasicAccess)
	COM_INTERFACE_ENTRY(IRawArrayAccess)
END_COM_MAP()

// 
public:
	STDMETHOD(setString)(/*[in]*/ BSTR theString);
	STDMETHOD(getString)(/*[out,retval]*/ BSTR* theString);
// 
public:
	STDMETHOD(sum)(/*[in]*/ VARIANT theArray, /*[out,retval]*/ double* theSum );
	STDMETHOD(getArray)(/*[out,retval]*/ VARIANT* theString);
// 
public:
	STDMETHOD(getRawArray)(/*[in]*/ long size, /*[out,size_is(size)]*/ double array[]);
	STDMETHOD(putRawArray)(/*[in]*/ long size, /*[in, size_is(size)]*/ double array[]);

protected:
	//
	CComBSTR m_theString;
	std::vector<double> previousResults;
};

#endif //__THECOCLASS_H_



Hosted by www.Geocities.ws

1