Author: sayer
Date: 2010-03-05 18:07:19 +0100 (Fri, 05 Mar 2010)
New Revision: 1654
Modified:
trunk/apps/dsm/DSMCoreModule.cpp
trunk/apps/dsm/DSMCoreModule.h
trunk/apps/dsm/DSMModule.cpp
trunk/apps/dsm/doc/dsm_syntax.txt
Log:
changed expression evaluation: set() does not evaluate expressions, eval() does
Modified: trunk/apps/dsm/DSMCoreModule.cpp
===================================================================
--- trunk/apps/dsm/DSMCoreModule.cpp 2010-03-05 16:40:47 UTC (rev 1653)
+++ trunk/apps/dsm/DSMCoreModule.cpp 2010-03-05 17:07:19 UTC (rev 1654)
@@ -67,6 +67,7 @@
DEF_CMD("disableDTMFDetection", SCDisableDTMFDetection);
DEF_CMD("set", SCSetAction);
+ DEF_CMD("eval", SCEvalAction);
DEF_CMD("setVar", SCSetVarAction);
DEF_CMD("var", SCGetVarAction);
DEF_CMD("append", SCAppendAction);
@@ -443,11 +444,21 @@
string var_name = (par1.length() && par1[0] == '$')?
par1.substr(1) : par1;
- sc_sess->var[var_name] = resolveVars(par2, sess, sc_sess, event_params,
true);
+ sc_sess->var[var_name] = resolveVars(par2, sess, sc_sess, event_params);
DBG("set $%s='%s'\n",
var_name.c_str(), sc_sess->var[var_name].c_str());
} EXEC_ACTION_END;
+CONST_ACTION_2P(SCEvalAction,'=', false);
+EXEC_ACTION_START(SCEvalAction) {
+ string var_name = (par1.length() && par1[0] == '$')?
+ par1.substr(1) : par1;
+
+ sc_sess->var[var_name] = resolveVars(par2, sess, sc_sess, event_params,
true);
+ DBG("eval $%s='%s'\n",
+ var_name.c_str(), sc_sess->var[var_name].c_str());
+} EXEC_ACTION_END;
+
CONST_ACTION_2P(SCSetVarAction,'=', false);
EXEC_ACTION_START(SCSetVarAction) {
string var_name = resolveVars(par1, sess, sc_sess, event_params);
Modified: trunk/apps/dsm/DSMCoreModule.h
===================================================================
--- trunk/apps/dsm/DSMCoreModule.h 2010-03-05 16:40:47 UTC (rev 1653)
+++ trunk/apps/dsm/DSMCoreModule.h 2010-03-05 17:07:19 UTC (rev 1654)
@@ -74,6 +74,7 @@
DEF_ACTION_1P(SCThrowOnErrorAction);
DEF_ACTION_2P(SCSetAction);
+DEF_ACTION_2P(SCEvalAction);
DEF_ACTION_2P(SCAppendAction);
DEF_ACTION_2P(SCSubStrAction);
DEF_ACTION_1P(SCIncAction);
Modified: trunk/apps/dsm/DSMModule.cpp
===================================================================
--- trunk/apps/dsm/DSMModule.cpp 2010-03-05 16:40:47 UTC (rev 1653)
+++ trunk/apps/dsm/DSMModule.cpp 2010-03-05 17:07:19 UTC (rev 1654)
@@ -98,7 +98,12 @@
}
switch(s[0]) {
- case '$': return sc_sess->var[s.substr(1)];
+ case '$': {
+ map<string, string>::iterator it = sc_sess->var.find(s.substr(1));
+ if (it != sc_sess->var.end())
+ return it->second;
+ return "";
+ }
case '#':
if (event_params)
return (*event_params)[s.substr(1)];
Modified: trunk/apps/dsm/doc/dsm_syntax.txt
===================================================================
--- trunk/apps/dsm/doc/dsm_syntax.txt 2010-03-05 16:40:47 UTC (rev 1653)
+++ trunk/apps/dsm/doc/dsm_syntax.txt 2010-03-05 17:07:19 UTC (rev 1654)
@@ -119,6 +119,9 @@
e.g. set($var="text"); set($var=$var2); set($var=#key)
var($dstvar=srcvarname)
e.g. var($dstvar=$var_counter)
+ eval($var=value)
+ evaluate expression (only simple binary + and - supported)
+ e.g. set($var=1+5); set($var=$var2); set($var=#key)
append($var, value)
e.g. append($var, "text"); append($var, #key);
append($var, @select); append($var, $var2);
_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev