in src/qpid/messaging/amqp/PnData.cpp [150:231]
bool PnData::get(pn_type_t type, qpid::types::Variant& value)
{
switch (type) {
case PN_NULL:
if (value.getType() != qpid::types::VAR_VOID) value = qpid::types::Variant();
return true;
case PN_BOOL:
value = pn_data_get_bool(data);
return true;
case PN_UBYTE:
value = pn_data_get_ubyte(data);
return true;
case PN_BYTE:
value = pn_data_get_byte(data);
return true;
case PN_USHORT:
value = pn_data_get_ushort(data);
return true;
case PN_SHORT:
value = pn_data_get_short(data);
return true;
case PN_UINT:
value = pn_data_get_uint(data);
return true;
case PN_INT:
value = pn_data_get_int(data);
return true;
case PN_CHAR:
value = pn_data_get_char(data);
return true;
case PN_ULONG:
value = pn_data_get_ulong(data);
return true;
case PN_LONG:
value = pn_data_get_long(data);
return true;
case PN_TIMESTAMP:
value = pn_data_get_timestamp(data);
return true;
case PN_FLOAT:
value = pn_data_get_float(data);
return true;
case PN_DOUBLE:
value = pn_data_get_double(data);
return true;
case PN_UUID:
value = qpid::types::Uuid(pn_data_get_uuid(data).bytes);
return true;
case PN_BINARY:
value = string(pn_data_get_binary(data));
value.setEncoding(qpid::types::encodings::BINARY);
return true;
case PN_STRING:
value = string(pn_data_get_string(data));
value.setEncoding(qpid::types::encodings::UTF8);
return true;
case PN_SYMBOL:
value = string(pn_data_get_string(data));
value.setEncoding(qpid::types::encodings::ASCII);
return true;
case PN_LIST:
value = qpid::types::Variant::List();
getList(value.asList());
return true;
break;
case PN_MAP:
value = qpid::types::Variant::Map();
getMap(value.asMap());
return true;
case PN_ARRAY:
value = qpid::types::Variant::List();
getArray(value.asList());
return true;
case PN_DESCRIBED:
// TODO aconway 2014-11-20: get described values.
case PN_DECIMAL32:
case PN_DECIMAL64:
case PN_DECIMAL128:
default:
return false;
}
}