#pragma once

#include <iostream>
#include <sstream>


namespace util
{


// コマンドライン引数に任意箇所からアクセスするためのシングルトン
template<typename CHARTYPE>
class ArgumentsT
{
public:
	static void SetArg( int argc , CHARTYPE* argv[] )
	{
		instance().m_Argc = argc;
		instance().m_Argv = argv;
	}

	static int GetArgc(void)
	{
		return instance().m_Argc;
	}

	static CHARTYPE** GetArgv(void)
	{
		return instance().m_Argv;
	}


private:
	static ArgumentsT& instance(void)
	{
		static ArgumentsT instance;
		return instance;
	}

	ArgumentsT(void)
	{
		m_Argc = 0;
		m_Argv = NULL;
	}


private:
	int        m_Argc;
	CHARTYPE** m_Argv;
};


typedef ArgumentsT< char    > ArgumentsA;
typedef ArgumentsT< wchar_t > ArgumentsW;


}
