8 #define DRIPLINE_API_EXPORTS 16 scarab::param_ptr_t t_param(
new scarab::param_node() );
17 scarab::param_node& t_node = (*t_param).as_node();
18 for(
auto i_entry = a_table.begin(); i_entry != a_table.end(); ++i_entry )
27 scarab::param_ptr_t t_param(
new scarab::param_array() );
28 scarab::param_array& t_array = (*t_param).as_array();
29 for(
auto i_entry = a_array.begin(); i_entry != a_array.end(); ++i_entry )
38 using AmqpClient::TableValue;
40 switch( a_value.GetType() )
42 case TableValue::ValueType::VT_void:
43 return scarab::param_ptr_t(
new scarab::param() );
45 case TableValue::ValueType::VT_bool:
46 return scarab::param_ptr_t(
new scarab::param_value( a_value.GetBool() ) );
48 case TableValue::ValueType::VT_int8:
49 return scarab::param_ptr_t(
new scarab::param_value( a_value.GetInt8() ) );
51 case TableValue::ValueType::VT_int16:
52 return scarab::param_ptr_t(
new scarab::param_value( a_value.GetInt16() ) );
54 case TableValue::ValueType::VT_int32:
55 return scarab::param_ptr_t(
new scarab::param_value( a_value.GetInt32() ) );
57 case TableValue::ValueType::VT_int64:
58 return scarab::param_ptr_t(
new scarab::param_value( a_value.GetInt64() ) );
60 case TableValue::ValueType::VT_float:
61 return scarab::param_ptr_t(
new scarab::param_value( a_value.GetFloat() ) );
63 case TableValue::ValueType::VT_double:
64 return scarab::param_ptr_t(
new scarab::param_value( a_value.GetDouble() ) );
66 case TableValue::ValueType::VT_string:
67 return scarab::param_ptr_t(
new scarab::param_value( a_value.GetString() ) );
69 case TableValue::ValueType::VT_array:
72 case TableValue::ValueType::VT_table:
75 case TableValue::ValueType::VT_uint8:
76 return scarab::param_ptr_t(
new scarab::param_value( a_value.GetUint8() ) );
78 case TableValue::ValueType::VT_uint16:
79 return scarab::param_ptr_t(
new scarab::param_value( a_value.GetUint16() ) );
81 case TableValue::ValueType::VT_uint32:
82 return scarab::param_ptr_t(
new scarab::param_value( a_value.GetUint32() ) );
84 case TableValue::ValueType::VT_uint64:
85 return scarab::param_ptr_t(
new scarab::param_value( a_value.GetUint64() ) );
88 throw std::domain_error(
"Invalid SimpleAMQPClient TableValue type" );
91 return scarab::param_ptr_t();
96 AmqpClient::Table t_table;
97 for(
auto i_entry = a_node.begin(); i_entry != a_node.end(); ++i_entry )
99 t_table.insert( AmqpClient::TableEntry( i_entry.name(),
param_to_table(*i_entry) ) );
106 AmqpClient::Array t_array;
107 for(
auto i_entry = a_array.begin(); i_entry != a_array.end(); ++i_entry )
116 if( a_value.is_bool() )
return AmqpClient::TableValue( a_value.as_bool() );
117 if( a_value.is_int() )
return AmqpClient::TableValue( a_value.as_int() );
118 if( a_value.is_uint() )
return AmqpClient::TableValue( a_value.as_uint() );
119 if( a_value.is_double() )
return AmqpClient::TableValue( a_value.as_double() );
120 if( a_value.is_string() )
return AmqpClient::TableValue( a_value.as_string() );
121 throw std::domain_error(
"Invalid param value type" );
126 if( a_param.is_null() )
return AmqpClient::TableValue();
127 if( a_param.is_node() )
return param_to_table( a_param.as_node() );
128 if( a_param.is_array() )
return param_to_table( a_param.as_array() );
129 if( a_param.is_value() )
return param_to_table( a_param.as_value() );
130 throw std::domain_error(
"Invalid param type" );
scarab::param_ptr_t table_to_param(const AmqpClient::Table &a_table)
AmqpClient::TableValue param_to_table(const scarab::param_node &a_node)