#ifndef PARAMETER_MANAGER_H
#define PARAMETER_MANAGER_H
namespace fw
{
/**
* \brief Une classe pour gérer les paramètres des arguments d'entrée de
* ligne de commande du programme.
*/
class Parameter
{
public:
Parameter(const std::string& sName);
virtual ~Parameter();
// Met un argument du paramètre
void PushArgument(const std::string& sArgument);
// Récupère le nom du paramètre
const std::string& GetName() const;
// Récupère un argument
const char* GetArgument(uint32 iArgumentNumber) const;
// Retourne le nombre d'argument
uint32 GetArgumentCount() const;
private:
std::string m_sName;
std::vector<std::string> m_vArguments;
};
class CommandLineManager : public Singleton<CommandLineManager>
{
public:
CommandLineManager(int argc, char* argv[]);
~CommandLineManager();
// Est-ce que la ligne de commande a ce paramètre
bool HasParameter(const std::string& sParameter);
// Le nombre de paramètre
uint32 GetParameterCount();
// Récupère le paramètre
Parameter* GetParameter(const std::string& sParameter);
private:
// Evalue la ligne de commande
void ParseCommandLineArguments(uint32 iArgumentCount, char* paArguments[]);
private:
std::map<std::string, Parameter*> m_vParameters;
};
}
#endif