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

Reply via email to