|
|
|
|
@ -84,6 +84,7 @@ DSMAction* DSMCoreModule::getAction(const string& from_str) {
|
|
|
|
|
DEF_CMD("inc", SCIncAction);
|
|
|
|
|
DEF_CMD("log", SCLogAction);
|
|
|
|
|
DEF_CMD("clear", SCClearAction);
|
|
|
|
|
DEF_CMD("clearArray", SCClearArrayAction);
|
|
|
|
|
DEF_CMD("logVars", SCLogVarsAction);
|
|
|
|
|
DEF_CMD("logParams", SCLogParamsAction);
|
|
|
|
|
DEF_CMD("logSelects", SCLogSelectsAction);
|
|
|
|
|
@ -634,6 +635,25 @@ EXEC_ACTION_START(SCClearAction) {
|
|
|
|
|
sc_sess->var.erase(var_name);
|
|
|
|
|
} EXEC_ACTION_END;
|
|
|
|
|
|
|
|
|
|
EXEC_ACTION_START(SCClearArrayAction) {
|
|
|
|
|
string varprefix = (arg.length() && arg[0] == '$')?
|
|
|
|
|
arg.substr(1) : arg;
|
|
|
|
|
DBG("clear variable array '%s.*'\n", varprefix.c_str());
|
|
|
|
|
|
|
|
|
|
varprefix+=".";
|
|
|
|
|
|
|
|
|
|
map<string, string>::iterator lb = sc_sess->var.lower_bound(varprefix);
|
|
|
|
|
while (lb != sc_sess->var.end()) {
|
|
|
|
|
if ((lb->first.length() < varprefix.length()) ||
|
|
|
|
|
strncmp(lb->first.c_str(), varprefix.c_str(),varprefix.length()))
|
|
|
|
|
break;
|
|
|
|
|
map<string, string>::iterator lb_d = lb;
|
|
|
|
|
lb++;
|
|
|
|
|
sc_sess->var.erase(lb_d);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} EXEC_ACTION_END;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CONST_ACTION_2P(SCAppendAction,',', false);
|
|
|
|
|
EXEC_ACTION_START(SCAppendAction) {
|
|
|
|
|
|