#pragma once

#include "ApiHelper.h"

class CFuncList;

class CGobiApiService
{
public:
	CGobiApiService(void);
	~CGobiApiService(void);

	///////////////////////////////////////////////////////////////////////////////
	///
	///	Get list of available functions
	///
	///	\param	[OUT] pFuncList
	///			Pointer to list of available functions
	///
	///	\return	TRUE if list successfully retrieved, FALSE otherwise 			
	///
	///////////////////////////////////////////////////////////////////////////////
	virtual BOOL GetAvailFuncList(CFuncList* pFuncList) = 0;

	///////////////////////////////////////////////////////////////////////////////
	///
	///	Execute list of specified functions
	///
	///	\param	[IN] pFuncList
	///			Pointer to list of functions to execute
	/// 
	/// \param	[OUT] nTotalExec
	///			Total of functions executed
	///
	///	\return	Number of errors encountered			
	///
	///////////////////////////////////////////////////////////////////////////////
	virtual UINT ExecuteFunctions(CFuncList* pFuncList, UINT &nTotalExec) = 0;

	static CGobiApiService* m_pThis;

protected:
	static HMODULE m_hQCDll;

	UINT m_nNumErrors;	// number of errors
	
};
