void XMLRPC2DIServer::amarg2xmlrpcval(AmArg& a, XmlRpcValue& result) { switch (a.getType()) { case AmArg::CStr: result = string(a.asCStr()); break; case AmArg::Int: result=a.asInt(); break; case AmArg::Double: result=a.asDouble(); break; case AmArg::Array: result.setSize(a.size()); for (size_t i=0;i<a.size();i++) { // duh... recursion... amarg2xmlrpcval(a.get(i), result[i]); } break; default: { WARN("unsupported return value type %d\n", a.getType()); } break; // TODO: do sth with the data here ? } }
void XMLRPC2DIServer::amarg2xmlrpcval(const AmArg& a, XmlRpcValue& result) { switch (a.getType()) { case AmArg::CStr: // DBG("a->X CSTR\n"); result = string(a.asCStr()); break; case AmArg::Int: // DBG("a->X INT\n"); result=a.asInt(); break; case AmArg::Double: // DBG("a->X DOUBLE\n"); result=a.asDouble(); break; case AmArg::Array: // DBG("a->X ARRAY size %u\n", a.size()); result.setSize(a.size()); for (size_t i=0;i<a.size();i++) { // duh... recursion... amarg2xmlrpcval(a.get(i), result[i]); } break; case AmArg::Struct: // DBG("a->X STRUCT size %u\n", a.size()); for (AmArg::ValueStruct::const_iterator it = a.begin(); it != a.end(); it++) { // duh... recursion... amarg2xmlrpcval(it->second, result[it->first]); } break; default: { WARN("unsupported return value type %d\n", a.getType()); } break; // TODO: do sth with the data here ? } }