////////////////////////////////////////////////////////////////////////////
// CCmdOpt クラスのインタフェース宣言
// コマンドラインのオプションを解釈する
////////////////////////////////////////////////////////////////////////////

#if !defined( CMDOPT_H_INCLUDED_ )
#define CMDOPT_H_INCLUDED_

#include <string>
#include <map>

using namespace std;

// コマンドの種別
typedef enum enumCMDTYPE
{
	CT_FILE_OPEN,
	CT_BOOT_SERVER,
	CT_STOP_SERVER
} CMDTYPE;

class CCmdOpt
{
public:
	CCmdOpt();
	~CCmdOpt();

	// 初期化
	bool Initialize( int argc, char *argv[] );

	// コマンドの種別を取得
	CMDTYPE GetCmdType() const;

	const string& GetFileName() const;
	int GetLineNumber() const;
	const string& GetLangType() const;
	bool GetStandAlone() const;
	bool GetBootServer() const;
	bool GetStopSvrByForce() const;

protected:
	bool help( const char *cmd );

	int RecognizeFlg( int argc, char *argv[], const char *pFlg );

	CMDTYPE CmdType;
	string FileName;
	int LineNumber;
	string LangType;
	bool StandAlone;
	bool StopSvrByForce;
};

#endif // CMDOPT_H_INCLUDED_

