make varPrintArg usable from modules

varPrintArg() prints an AmArg variable into var (string) array,
useful for modules
sayer/1.4-spce2.6
Stefan Sayer 16 years ago
parent 6e6162df11
commit ccdbae75ed

@ -332,31 +332,6 @@ void DSMCall::onSipReply(const AmSipReply& reply, int old_dlg_status) {
}
}
static void varPrintArg(const AmArg& a, map<string, string>& dst, const string& name) {
switch (a.getType()) {
case AmArg::Undef: dst[name] = "null"; return;
case AmArg::Int: dst[name] = a.asInt()<0 ?
"-"+int2str(abs(a.asInt())):int2str(abs(a.asInt())); return;
case AmArg::Bool:
dst[name] = a.asBool()?"true":"false"; return;
case AmArg::Double:
dst[name] = double2str(a.asDouble()); return;
case AmArg::CStr:
dst[name] = a.asCStr(); return;
case AmArg::Array:
for (size_t i = 0; i < a.size(); i ++)
varPrintArg(a.get(i), dst, name+"["+int2str(i)+"]");
return;
case AmArg::Struct:
for (AmArg::ValueStruct::const_iterator it = a.asStruct()->begin();
it != a.asStruct()->end(); it ++) {
varPrintArg(it->second, dst, name+"."+it->first);
}
return;
default: dst[name] = "<UNKONWN TYPE>"; return;
}
}
void DSMCall::process(AmEvent* event)
{

@ -465,3 +465,30 @@ DSMTransition::DSMTransition()
DSMTransition::~DSMTransition(){
}
void varPrintArg(const AmArg& a, map<string, string>& dst, const string& name) {
switch (a.getType()) {
case AmArg::Undef: dst[name] = "null"; return;
case AmArg::Int: dst[name] = a.asInt()<0 ?
"-"+int2str(abs(a.asInt())):int2str(abs(a.asInt())); return;
case AmArg::Bool:
dst[name] = a.asBool()?"true":"false"; return;
case AmArg::Double:
dst[name] = double2str(a.asDouble()); return;
case AmArg::CStr:
dst[name] = a.asCStr(); return;
case AmArg::Array:
for (size_t i = 0; i < a.size(); i ++)
varPrintArg(a.get(i), dst, name+"["+int2str(i)+"]");
return;
case AmArg::Struct:
for (AmArg::ValueStruct::const_iterator it = a.asStruct()->begin();
it != a.asStruct()->end(); it ++) {
varPrintArg(it->second, dst, name+"."+it->first);
}
return;
default: dst[name] = "<UNKONWN TYPE>"; return;
}
}

@ -29,6 +29,7 @@
#include "DSMElemContainer.h"
#include "AmSipMsg.h"
#include "AmArg.h"
class AmSession;
class DSMSession;
@ -235,5 +236,6 @@ class DSMStateEngine {
bool onInvite(const AmSipRequest& req, DSMSession* sess);
};
extern void varPrintArg(const AmArg& a, map<string, string>& dst, const string& name);
#endif

Loading…
Cancel
Save