00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef MARSYAS_COMMANDLINEOPTIONS_H
00021 #define MARSYAS_COMMANDLINEOPTIONS_H
00022
00023 #include "common_header.h"
00024
00025 #include <vector>
00026 #include <string>
00027 #include <map>
00028 #include <iostream>
00029 #include <cstdlib>
00030
00031 namespace Marsyas
00032 {
00042 class marsyas_EXPORT CommandLineOptions
00043 {
00044 protected:
00045 std::vector<std::string> arguments_;
00046 std::vector<std::string> remaining_;
00047
00048
00049 std::map<std::string, mrs_real> realOptions_;
00050 std::map<std::string, mrs_natural> naturalOptions_;
00051 std::map<std::string, std::string> stringOptions_;
00052 std::map<std::string, bool> boolOptions_;
00053 std::map<std::string, std::string> longNames_;
00054
00055 std::map<std::string, std::string>::iterator nameIter_;
00056 std::map<std::string, mrs_real>::iterator riter_;
00057 std::map<std::string, mrs_natural>::iterator niter_;
00058 std::map<std::string, std::string>::iterator siter_;
00059 std::map<std::string, bool>::iterator biter_;
00060
00061 public:
00062 CommandLineOptions();
00063 void addRealOption(std::string lname, std::string sname, mrs_real value);
00064 void addNaturalOption(std::string lname, std::string sname, mrs_natural value);
00065 void addStringOption(std::string lname, std::string sname, std::string value);
00066 void addBoolOption(std::string lname, std::string sname, bool value);
00067
00068 void readOptions(int argc, const char** argv);
00069 bool getBoolOption(std::string lname);
00070 mrs_natural getNaturalOption(std::string lname);
00071 mrs_real getRealOption(std::string lname);
00072 std::string getStringOption(std::string lname);
00073 std::vector<std::string> getRemaining();
00074 };
00075
00076 }
00077
00078 #endif
00079
00080
00081