/*!
 	@file
 	@brief	キーボードドライバ
\n			このクラスを継承して各ＯＳごとの機能をラップします
 */

#ifndef CKeybordDriver_h
#define CKeybordDriver_h

#include"../../Setup/CompileMode.h"
#include"../../Auxiliary/Macro.h"
#include<boost/smart_ptr.hpp>
#include<vector>

namespace Maid
{
	/*!
	 	@class	IKeybordDriver CKeybordDriver.h
	 	@brief	キーボードドライバ
	\n			各キーが押されているか調べれるだけなので
	\n			キーボードに対応した文字コードが欲しい場合は ICharCodeDriver から取得すること
	 */

	class IKeybordDriver
	{
	public:
		virtual ~IKeybordDriver()=0{};	//!<	デストラクタ

		//! キーボードドライバの初期化
		/*!
		 */
		virtual void	Initialize()=0;
		//! キーボードドライバの解放
		/*!
		 */
		virtual void		Finalize()=0;

		//! 各ボタンが押されているか調べる
		/*!
		 	@param	KeyList	[ o]	各ボタンの状態
		 
		*/
		virtual void	IsDown( MySTL::vector<bool>& KeyList )	 const=0;

		//! このドライバで識別できるボタンの数を取得する
		/*!
		 	@return ボタンの数
		 */
		virtual int	GetButtonnMax() const=0;

		//! このクラスで扱っている変数を初期状態にする
		/*!
		 */
		virtual void Reset()=0;

	};

	typedef boost::shared_ptr<IKeybordDriver> SPKEYBORDDRIVER;

}

#endif