/*!
 	@file
 	@brief	入力ドライバの親 オブジェクト
 */

#ifndef CInputDriver_h
#define CInputDriver_h

#include"CKeybordDriver.h"
#include"CMouseDriver.h"
#include"CCharCodeDriver.h"
#include<boost/smart_ptr.hpp>

namespace Maid
{
	/*!
	 	@class	IInputDriver CInputDriver.h
	 	@brief	入力ドライバクラス
	 */
	class IInputDriver
	{
	public:
		virtual ~IInputDriver(){}

		//! キーボードドライバの作成
		/*!
		 	@return キーボードドライバ
		 */
		virtual SPKEYBORDDRIVER CreateKeybordDriver()=0;

		//! マウスドライバの作成
		/*!
		 	@return マウスドライバ
		 */
		virtual SPMOUSEDRIVER   CreateMouseDriver()=0;

		//! 文字コードドライバの作成
		/*!
		 	@return 文字コードドライバ
		 */
		virtual SPCHARCODEDRIVER   CreateCharCodeDriver()=0;
	};

	typedef boost::shared_ptr<IInputDriver> SPINPUTDRIVER;

}

#endif