9 enum BasicType { None,Bool,Int,Float,Double,String };
13 CommandArg() : type(None),name(NULL),data(NULL) {}
14 CommandArg(BasicType type_input,
const char* name_input,
void* data_input)
15 :type(type_input),name(name_input),data(data_input) {}
26 void AddBoolArg(
const char* name,
bool& val);
27 void AddIntArg(
const char* name,
int& val);
28 void AddFloatArg(
const char* name,
float& val);
29 void AddDoubleArg(
const char* name,
double& val);
30 void AddStringArg(
const char* name,
const char*& val);
31 const char* GetArgName(
int arg)
const {
return args[arg].name; }
33 virtual const char* Name() = 0;
34 virtual void PrintDescription(std::ostream& out);
35 virtual void PrintDetailedDescription(std::ostream& out);
36 virtual const char* Description() {
return "unknown function."; }
37 virtual size_t NumArgs() {
return args.size(); }
38 virtual int MinInputs() {
return 0; }
39 virtual int MaxInputs() {
return 0; }
40 virtual int NumOutputs() {
return 0; }
41 virtual bool ProcessLine();
42 virtual bool SetArg(
int arg,
const char* val);
45 const char* GetInput(
int i)
const {
return inputs[i]; }
46 const char* GetOutput(
int i=1) {
return outputs[i]; }
47 int NumInputs()
const {
return inputs.size(); }
49 std::vector<const char*>* line;
50 std::vector<const char*> inputs;
51 std::vector<const char*> outputs;
52 std::vector<CommandArg> args;
59 CommandAuto(
const char* name_input,
const char* desc_input=NULL)
60 :name(name_input),desc(desc_input) {}
62 virtual const char* Name() {
return name; }
63 virtual const char* Description() {
if(desc)
return desc;
else return CommandBase::Description(); }
74 :
CommandAuto(name,
": sets a value."),target(target_input) {}
75 virtual size_t NumArgs() {
return 1; }
76 virtual bool SetArg(
int arg,
const char* val)
78 std::istringstream str;
85 virtual int Do() {
return 1; }
93 CommandSetValue(
const char* name_input, T* target_input,
const T& val_input)
94 :
CommandAuto(name_input,
": sets a value."),target(target_input),val(val_input) {}
105 void PrintUsage(
const char* appName);
106 void PrintCommands(
CommandBase* commands [],
int numCommands);
107 int ReadArguments(
CommandBase* commands [],
int numCommands,
int argc,
const char** argv);
Definition: CommandLine.h:11
Definition: CommandLine.cpp:11
Definition: CommandLine.h:57
Definition: CommandLine.h:22
Definition: CommandLine.h:91