#pragma once
#include "CGICommand.h"
#include "Settings.h"
#include "InterfaceWrapperMacro.h"

class ICGIManager
{
public:
	//!	一致するCGIコマンドがあるか取得する
	virtual int TargetIsCGI(LPCSTR targetPath) = 0;

	//!	一致するCGIコマンドを取得する
	virtual int GetCGICommand(LPCSTR targetPath, IWorkspaceAccessPtr command) = 0;

	//!	CGI共通設定を取得
	virtual void GetCGIManagerSetting(IWorkspaceAccessRefPtr setting) = 0;
};
//!	ポインタ型
typedef ICGIManager* ICGIManagerPtr;


/*!
	ICGIManagerラッパ
*/
class CICGIManagerWrap
{
public:
	//!	色々宣言
	DEFINE_MANAGER_WRAPPER_CONSTRUCTOR(CICGIManagerWrap, ICGIManager, 1);

	//!	一致するCGIコマンドがあるか取得する
	virtual int TargetIsCGI(CString targetPath)
	{
		return m_ifPtr->TargetIsCGI(targetPath);
	}

	//!	一致するCGIコマンドを取得する
	virtual int GetCGICommand(CString targetPath, CCGICommand command)
	{
		return m_ifPtr->GetCGICommand(targetPath, CWorkspaceAccess(command).GetIWorkspaceAccess());
	}

	//!	CGI共通設定を取得
	virtual CCGIManagerSetting GetCGIManagerSetting()
	{
		CWorkspaceAccess	ret;
		m_ifPtr->GetCGIManagerSetting(ret.GetIWorkspaceAccessRef());
		return ret;
	}
};
