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() ) );
85 throw std::domain_error(
"Invalid SimpleAMQPClient TableValue type" );
88 return scarab::param_ptr_t();
93 AmqpClient::Table t_table;
94 for(
auto i_entry = a_node.begin(); i_entry != a_node.end(); ++i_entry )
96 t_table.insert( AmqpClient::TableEntry( i_entry.name(),
param_to_table(*i_entry) ) );
103 AmqpClient::Array t_array;
104 for(
auto i_entry = a_array.begin(); i_entry != a_array.end(); ++i_entry )
113 if( a_value.is_bool() )
return AmqpClient::TableValue( a_value.as_bool() );
114 if( a_value.is_int() )
return AmqpClient::TableValue( a_value.as_int() );
115 if( a_value.is_uint() )
return AmqpClient::TableValue( (uint32_t)a_value.as_uint() );
116 if( a_value.is_double() )
return AmqpClient::TableValue( a_value.as_double() );
117 if( a_value.is_string() )
return AmqpClient::TableValue( a_value.as_string() );
118 throw std::domain_error(
"Invalid param value type" );
123 if( a_param.is_null() )
return AmqpClient::TableValue();
124 if( a_param.is_node() )
return param_to_table( a_param.as_node() );
125 if( a_param.is_array() )
return param_to_table( a_param.as_array() );
126 if( a_param.is_value() )
return param_to_table( a_param.as_value() );
127 throw std::domain_error(
"Invalid param type" );
AmqpClient::TableValue param_to_table(const scarab::param_node &a_node)
scarab::param_ptr_t table_to_param(const AmqpClient::Table &a_table)