diff options
-rw-r--r-- | arg.c | 71 | ||||
-rw-r--r-- | arg.h | 1 |
2 files changed, 63 insertions, 9 deletions
@@ -740,23 +740,57 @@ int __add_arg( arg_t *arg, int type, void *val ) -/* -CmdArgVar::CmdArgVar() + +CmdArgVal::CmdArgVal() { - this->_type = 0; - this->val = NULL; + this->used = 0; + this->ptr = NULL; } -uint8_t* CmdArgVar::get() +int CmdArgVal::isUsed() { - return this->val; + return this->used; } -int CmdArgVar::type() +void CmdArgVal::setUsed() { - return this->_type; + this->used = 1; } -*/ + +void CmdArgVal::setValue(char *val) +{ + this->ptr = val; +} + +char* CmdArgVal::getValue() +{ + return this->ptr; +} + +CmdArgValConf::CmdArgValConf() +{ + this->used = 0; + this->def = 0; + this->ptr = NULL; + this->default_ptr = NULL; + this->result = NULL; +} + +int CmdArgValConf::isUsed() +{ + return this->used; +} + +void CmdArgValConf::setUsed() +{ + this->used = 1; +} + +void CmdArgValConf::link(CmdArgVal *valArg) +{ + this->result = valArg; +} + /* CmdArg::CmdArg() { @@ -867,6 +901,7 @@ void CmdArgFlagConf::link(CmdArgFlag *flagArg) this->result = flagArg; } + CmdArgDefault::CmdArgDefault() { this->param = NULL; @@ -900,6 +935,16 @@ CmdArgDefault::CmdArgDefault(char *param, CmdArgFlagConf *def, char *help, CmdAr this->result = (void *)result; } +CmdArgDefault::CmdArgDefault(char *param, CmdArgValConf *def, char *help, CmdArgVal *result) +{ + this->param = param; + this->type = ARGT_VAL; + this->def = (void *)def; + this->used = 0; + this->help = help; + this->result = (void *)result; +} + void CmdArgDefault::setParam(char *param) { @@ -997,6 +1042,14 @@ void CmdArg::load(int argc, char **argv) } case ARGT_VAL: { + CmdArgVal *val=(CmdArgVal *)param->getResult(); + CmdArgValConf *conf=(CmdArgValConf *)param->getDefault(); + + param->setUsed(); + val->setUsed(); + //flag->setFlag(); + val->setValue(param->getParam()); + conf->setUsed(); break; } @@ -318,6 +318,7 @@ public: int isUsed(); //char* get(); //do not free void setUsed(); + void setValue(char *val); void setFlag(); char *getValue(); }; |