mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-11-02 14:03:43 +01:00
Merge branch 'fix_issue_191'
Conflicts: test/streaming_c.cpp
This commit is contained in:
@@ -31,8 +31,8 @@ MSGPACK_API_VERSION_NAMESPACE(v1) {
|
||||
|
||||
inline object const& operator>> (object const& o, float& v)
|
||||
{
|
||||
if(o.type == type::DOUBLE) {
|
||||
v = static_cast<float>(o.via.dec);
|
||||
if(o.type == type::FLOAT) {
|
||||
v = static_cast<float>(o.via.f64);
|
||||
}
|
||||
else if (o.type == type::POSITIVE_INTEGER) {
|
||||
v = static_cast<float>(o.via.u64);
|
||||
@@ -56,8 +56,8 @@ inline packer<Stream>& operator<< (packer<Stream>& o, const float& v)
|
||||
|
||||
inline object const& operator>> (object const& o, double& v)
|
||||
{
|
||||
if(o.type == type::DOUBLE) {
|
||||
v = o.via.dec;
|
||||
if(o.type == type::FLOAT) {
|
||||
v = o.via.f64;
|
||||
}
|
||||
else if (o.type == type::POSITIVE_INTEGER) {
|
||||
v = static_cast<double>(o.via.u64);
|
||||
@@ -81,14 +81,14 @@ inline packer<Stream>& operator<< (packer<Stream>& o, const double& v)
|
||||
|
||||
inline void operator<< (object& o, float v)
|
||||
{
|
||||
o.type = type::DOUBLE;
|
||||
o.via.dec = static_cast<double>(v);
|
||||
o.type = type::FLOAT;
|
||||
o.via.f64 = static_cast<double>(v);
|
||||
}
|
||||
|
||||
inline void operator<< (object& o, double v)
|
||||
{
|
||||
o.type = type::DOUBLE;
|
||||
o.via.dec = v;
|
||||
o.type = type::FLOAT;
|
||||
o.via.f64 = v;
|
||||
}
|
||||
|
||||
inline void operator<< (object::with_zone& o, float v)
|
||||
|
||||
@@ -37,7 +37,10 @@ typedef enum {
|
||||
MSGPACK_OBJECT_BOOLEAN = 0x01,
|
||||
MSGPACK_OBJECT_POSITIVE_INTEGER = 0x02,
|
||||
MSGPACK_OBJECT_NEGATIVE_INTEGER = 0x03,
|
||||
MSGPACK_OBJECT_DOUBLE = 0x04,
|
||||
MSGPACK_OBJECT_FLOAT = 0x04,
|
||||
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
|
||||
MSGPACK_OBJECT_DOUBLE = MSGPACK_OBJECT_FLOAT, /* obsolete */
|
||||
#endif /* MSGPACK_USE_LEGACY_NAME_AS_FLOAT */
|
||||
MSGPACK_OBJECT_STR = 0x05,
|
||||
MSGPACK_OBJECT_ARRAY = 0x06,
|
||||
MSGPACK_OBJECT_MAP = 0x07,
|
||||
@@ -79,7 +82,10 @@ typedef union {
|
||||
bool boolean;
|
||||
uint64_t u64;
|
||||
int64_t i64;
|
||||
double dec;
|
||||
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
|
||||
double dec; /* obsolete*/
|
||||
#endif /* MSGPACK_USE_LEGACY_NAME_AS_FLOAT */
|
||||
double f64;
|
||||
msgpack_object_array array;
|
||||
msgpack_object_map map;
|
||||
msgpack_object_str str;
|
||||
@@ -111,4 +117,3 @@ bool msgpack_object_equal(const msgpack_object x, const msgpack_object y);
|
||||
#endif
|
||||
|
||||
#endif /* msgpack/object.h */
|
||||
|
||||
|
||||
@@ -211,7 +211,7 @@ inline void operator<< (object::with_zone& o, const object& v)
|
||||
case type::BOOLEAN:
|
||||
case type::POSITIVE_INTEGER:
|
||||
case type::NEGATIVE_INTEGER:
|
||||
case type::DOUBLE:
|
||||
case type::FLOAT:
|
||||
::memcpy(&o.via, &v.via, sizeof(v.via));
|
||||
return;
|
||||
|
||||
@@ -342,8 +342,8 @@ inline bool operator==(const object& x, const object& y)
|
||||
case type::NEGATIVE_INTEGER:
|
||||
return x.via.i64 == y.via.i64;
|
||||
|
||||
case type::DOUBLE:
|
||||
return x.via.dec == y.via.dec;
|
||||
case type::FLOAT:
|
||||
return x.via.f64 == y.via.f64;
|
||||
|
||||
case type::STR:
|
||||
return x.via.str.size == y.via.str.size &&
|
||||
@@ -590,8 +590,8 @@ inline packer<Stream>& operator<< (packer<Stream>& o, const object& v)
|
||||
o.pack_int64(v.via.i64);
|
||||
return o;
|
||||
|
||||
case type::DOUBLE:
|
||||
o.pack_double(v.via.dec);
|
||||
case type::FLOAT:
|
||||
o.pack_double(v.via.f64);
|
||||
return o;
|
||||
|
||||
case type::STR:
|
||||
@@ -658,8 +658,8 @@ inline std::ostream& operator<< (std::ostream& s, const object& o)
|
||||
s << o.via.i64;
|
||||
break;
|
||||
|
||||
case type::DOUBLE:
|
||||
s << o.via.dec;
|
||||
case type::FLOAT:
|
||||
s << o.via.f64;
|
||||
break;
|
||||
|
||||
case type::STR:
|
||||
|
||||
@@ -36,7 +36,10 @@ namespace type {
|
||||
BOOLEAN = MSGPACK_OBJECT_BOOLEAN,
|
||||
POSITIVE_INTEGER = MSGPACK_OBJECT_POSITIVE_INTEGER,
|
||||
NEGATIVE_INTEGER = MSGPACK_OBJECT_NEGATIVE_INTEGER,
|
||||
DOUBLE = MSGPACK_OBJECT_DOUBLE,
|
||||
FLOAT = MSGPACK_OBJECT_FLOAT,
|
||||
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
|
||||
DOUBLE = MSGPACK_OBJECT_DOUBLE, // obsolete
|
||||
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
|
||||
STR = MSGPACK_OBJECT_STR,
|
||||
BIN = MSGPACK_OBJECT_BIN,
|
||||
ARRAY = MSGPACK_OBJECT_ARRAY,
|
||||
@@ -81,7 +84,10 @@ struct object {
|
||||
bool boolean;
|
||||
uint64_t u64;
|
||||
int64_t i64;
|
||||
double dec;
|
||||
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
|
||||
double dec; // obsolete
|
||||
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
|
||||
double f64;
|
||||
object_array array;
|
||||
object_map map;
|
||||
object_str str;
|
||||
|
||||
@@ -226,10 +226,10 @@ inline void unpack_int64(int64_t d, object& o)
|
||||
else { o.type = type::NEGATIVE_INTEGER; o.via.i64 = d; } }
|
||||
|
||||
inline void unpack_float(float d, object& o)
|
||||
{ o.type = type::DOUBLE; o.via.dec = d; }
|
||||
{ o.type = type::FLOAT; o.via.f64 = d; }
|
||||
|
||||
inline void unpack_double(double d, object& o)
|
||||
{ o.type = type::DOUBLE; o.via.dec = d; }
|
||||
{ o.type = type::FLOAT; o.via.f64 = d; }
|
||||
|
||||
inline void unpack_nil(object& o)
|
||||
{ o.type = type::NIL; }
|
||||
|
||||
Reference in New Issue
Block a user