Skip to content

Commit 737e670

Browse files
committed
Fixed #191.
The names of float format family are changed. old new dec -> f64 MSGPACK_OBJECT_DOUBLE -> MSGPACK_OBJECT_FLOAT msgpack::type::DOUBLE -> msgpack::type::FLOAT Client codes could have compile errors when it use dec, MSGPACK_OBJECT_DOUBLE or msgpack::type::DOUBLE. The best way to fix such errors, update client code. If it can't, set MSGPACK_USE_LEGACY_NAME_AS_FLOAT macro. Then both old names and new names are available.
1 parent a84f444 commit 737e670

File tree

11 files changed

+105
-46
lines changed

11 files changed

+105
-46
lines changed

include/msgpack/adaptor/float.hpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ MSGPACK_API_VERSION_NAMESPACE(v1) {
3131

3232
inline object const& operator>> (object const& o, float& v)
3333
{
34-
if(o.type == type::DOUBLE) {
35-
v = static_cast<float>(o.via.dec);
34+
if(o.type == type::FLOAT) {
35+
v = static_cast<float>(o.via.f64);
3636
}
3737
else if (o.type == type::POSITIVE_INTEGER) {
3838
v = static_cast<float>(o.via.u64);
@@ -56,8 +56,8 @@ inline packer<Stream>& operator<< (packer<Stream>& o, const float& v)
5656

5757
inline object const& operator>> (object const& o, double& v)
5858
{
59-
if(o.type == type::DOUBLE) {
60-
v = o.via.dec;
59+
if(o.type == type::FLOAT) {
60+
v = o.via.f64;
6161
}
6262
else if (o.type == type::POSITIVE_INTEGER) {
6363
v = static_cast<double>(o.via.u64);
@@ -81,14 +81,14 @@ inline packer<Stream>& operator<< (packer<Stream>& o, const double& v)
8181

8282
inline void operator<< (object& o, float v)
8383
{
84-
o.type = type::DOUBLE;
85-
o.via.dec = static_cast<double>(v);
84+
o.type = type::FLOAT;
85+
o.via.f64 = static_cast<double>(v);
8686
}
8787

8888
inline void operator<< (object& o, double v)
8989
{
90-
o.type = type::DOUBLE;
91-
o.via.dec = v;
90+
o.type = type::FLOAT;
91+
o.via.f64 = v;
9292
}
9393

9494
inline void operator<< (object::with_zone& o, float v)

include/msgpack/object.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ typedef enum {
3737
MSGPACK_OBJECT_BOOLEAN = 0x01,
3838
MSGPACK_OBJECT_POSITIVE_INTEGER = 0x02,
3939
MSGPACK_OBJECT_NEGATIVE_INTEGER = 0x03,
40-
MSGPACK_OBJECT_DOUBLE = 0x04,
40+
MSGPACK_OBJECT_FLOAT = 0x04,
41+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
42+
MSGPACK_OBJECT_DOUBLE = MSGPACK_OBJECT_FLOAT, /* obsolete */
43+
#endif /* MSGPACK_USE_LEGACY_NAME_AS_FLOAT */
4144
MSGPACK_OBJECT_STR = 0x05,
4245
MSGPACK_OBJECT_ARRAY = 0x06,
4346
MSGPACK_OBJECT_MAP = 0x07,
@@ -79,7 +82,10 @@ typedef union {
7982
bool boolean;
8083
uint64_t u64;
8184
int64_t i64;
82-
double dec;
85+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
86+
double dec; /* obsolete*/
87+
#endif /* MSGPACK_USE_LEGACY_NAME_AS_FLOAT */
88+
double f64;
8389
msgpack_object_array array;
8490
msgpack_object_map map;
8591
msgpack_object_str str;
@@ -111,4 +117,3 @@ bool msgpack_object_equal(const msgpack_object x, const msgpack_object y);
111117
#endif
112118

113119
#endif /* msgpack/object.h */
114-

include/msgpack/object.hpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ inline void operator<< (object::with_zone& o, const object& v)
211211
case type::BOOLEAN:
212212
case type::POSITIVE_INTEGER:
213213
case type::NEGATIVE_INTEGER:
214-
case type::DOUBLE:
214+
case type::FLOAT:
215215
::memcpy(&o.via, &v.via, sizeof(v.via));
216216
return;
217217

@@ -342,8 +342,8 @@ inline bool operator==(const object& x, const object& y)
342342
case type::NEGATIVE_INTEGER:
343343
return x.via.i64 == y.via.i64;
344344

345-
case type::DOUBLE:
346-
return x.via.dec == y.via.dec;
345+
case type::FLOAT:
346+
return x.via.f64 == y.via.f64;
347347

348348
case type::STR:
349349
return x.via.str.size == y.via.str.size &&
@@ -590,8 +590,8 @@ inline packer<Stream>& operator<< (packer<Stream>& o, const object& v)
590590
o.pack_int64(v.via.i64);
591591
return o;
592592

593-
case type::DOUBLE:
594-
o.pack_double(v.via.dec);
593+
case type::FLOAT:
594+
o.pack_double(v.via.f64);
595595
return o;
596596

597597
case type::STR:
@@ -658,8 +658,8 @@ inline std::ostream& operator<< (std::ostream& s, const object& o)
658658
s << o.via.i64;
659659
break;
660660

661-
case type::DOUBLE:
662-
s << o.via.dec;
661+
case type::FLOAT:
662+
s << o.via.f64;
663663
break;
664664

665665
case type::STR:

include/msgpack/object_fwd.hpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ namespace type {
3636
BOOLEAN = MSGPACK_OBJECT_BOOLEAN,
3737
POSITIVE_INTEGER = MSGPACK_OBJECT_POSITIVE_INTEGER,
3838
NEGATIVE_INTEGER = MSGPACK_OBJECT_NEGATIVE_INTEGER,
39-
DOUBLE = MSGPACK_OBJECT_DOUBLE,
39+
FLOAT = MSGPACK_OBJECT_FLOAT,
40+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
41+
DOUBLE = MSGPACK_OBJECT_DOUBLE, // obsolete
42+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
4043
STR = MSGPACK_OBJECT_STR,
4144
BIN = MSGPACK_OBJECT_BIN,
4245
ARRAY = MSGPACK_OBJECT_ARRAY,
@@ -81,7 +84,10 @@ struct object {
8184
bool boolean;
8285
uint64_t u64;
8386
int64_t i64;
84-
double dec;
87+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
88+
double dec; // obsolete
89+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
90+
double f64;
8591
object_array array;
8692
object_map map;
8793
object_str str;

include/msgpack/unpack.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,10 +226,10 @@ inline void unpack_int64(int64_t d, object& o)
226226
else { o.type = type::NEGATIVE_INTEGER; o.via.i64 = d; } }
227227

228228
inline void unpack_float(float d, object& o)
229-
{ o.type = type::DOUBLE; o.via.dec = d; }
229+
{ o.type = type::FLOAT; o.via.f64 = d; }
230230

231231
inline void unpack_double(double d, object& o)
232-
{ o.type = type::DOUBLE; o.via.dec = d; }
232+
{ o.type = type::FLOAT; o.via.f64 = d; }
233233

234234
inline void unpack_nil(object& o)
235235
{ o.type = type::NIL; }

src/objectc.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ int msgpack_pack_object(msgpack_packer* pk, msgpack_object d)
4444
case MSGPACK_OBJECT_NEGATIVE_INTEGER:
4545
return msgpack_pack_int64(pk, d.via.i64);
4646

47-
case MSGPACK_OBJECT_DOUBLE:
48-
return msgpack_pack_double(pk, d.via.dec);
47+
case MSGPACK_OBJECT_FLOAT:
48+
return msgpack_pack_double(pk, d.via.f64);
4949

5050
case MSGPACK_OBJECT_STR:
5151
{
@@ -141,8 +141,8 @@ void msgpack_object_print(FILE* out, msgpack_object o)
141141
#endif
142142
break;
143143

144-
case MSGPACK_OBJECT_DOUBLE:
145-
fprintf(out, "%f", o.via.dec);
144+
case MSGPACK_OBJECT_FLOAT:
145+
fprintf(out, "%f", o.via.f64);
146146
break;
147147

148148
case MSGPACK_OBJECT_STR:
@@ -233,8 +233,8 @@ bool msgpack_object_equal(const msgpack_object x, const msgpack_object y)
233233
case MSGPACK_OBJECT_NEGATIVE_INTEGER:
234234
return x.via.i64 == y.via.i64;
235235

236-
case MSGPACK_OBJECT_DOUBLE:
237-
return x.via.dec == y.via.dec;
236+
case MSGPACK_OBJECT_FLOAT:
237+
return x.via.f64 == y.via.f64;
238238

239239
case MSGPACK_OBJECT_STR:
240240
return x.via.str.size == y.via.str.size &&

src/unpack.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,16 +159,16 @@ static inline int template_callback_int64(unpack_user* u, int64_t d, msgpack_obj
159159
static inline int template_callback_float(unpack_user* u, float d, msgpack_object* o)
160160
{
161161
MSGPACK_UNUSED(u);
162-
o->type = MSGPACK_OBJECT_DOUBLE;
163-
o->via.dec = d;
162+
o->type = MSGPACK_OBJECT_FLOAT;
163+
o->via.f64 = d;
164164
return 0;
165165
}
166166

167167
static inline int template_callback_double(unpack_user* u, double d, msgpack_object* o)
168168
{
169169
MSGPACK_UNUSED(u);
170-
o->type = MSGPACK_OBJECT_DOUBLE;
171-
o->via.dec = d;
170+
o->type = MSGPACK_OBJECT_FLOAT;
171+
o->via.f64 = d;
172172
return 0;
173173
}
174174

test/msgpack_c.cpp

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -223,13 +223,28 @@ TEST(MSGPACKC, simple_buffer_float)
223223
msgpack_unpack_return ret =
224224
msgpack_unpack(sbuf.data, sbuf.size, NULL, &z, &obj);
225225
EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret);
226+
EXPECT_EQ(MSGPACK_OBJECT_FLOAT, obj.type);
227+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
226228
EXPECT_EQ(MSGPACK_OBJECT_DOUBLE, obj.type);
227-
if (isnan(val))
229+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
230+
if (isnan(val)) {
231+
EXPECT_TRUE(isnan(obj.via.f64));
232+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
228233
EXPECT_TRUE(isnan(obj.via.dec));
229-
else if (isinf(val))
234+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
235+
}
236+
else if (isinf(val)) {
237+
EXPECT_TRUE(isinf(obj.via.f64));
238+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
230239
EXPECT_TRUE(isinf(obj.via.dec));
231-
else
240+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
241+
}
242+
else {
243+
EXPECT_TRUE(fabs(obj.via.f64 - val) <= kEPS);
244+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
232245
EXPECT_TRUE(fabs(obj.via.dec - val) <= kEPS);
246+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
247+
}
233248
msgpack_zone_destroy(&z);
234249
msgpack_sbuffer_destroy(&sbuf);
235250
}
@@ -273,13 +288,28 @@ TEST(MSGPACKC, simple_buffer_double)
273288
msgpack_unpack_return ret =
274289
msgpack_unpack(sbuf.data, sbuf.size, NULL, &z, &obj);
275290
EXPECT_EQ(MSGPACK_UNPACK_SUCCESS, ret);
291+
EXPECT_EQ(MSGPACK_OBJECT_FLOAT, obj.type);
292+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
276293
EXPECT_EQ(MSGPACK_OBJECT_DOUBLE, obj.type);
277-
if (isnan(val))
294+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
295+
if (isnan(val)) {
296+
EXPECT_TRUE(isnan(obj.via.f64));
297+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
278298
EXPECT_TRUE(isnan(obj.via.dec));
279-
else if (isinf(val))
299+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
300+
}
301+
else if (isinf(val)) {
302+
EXPECT_TRUE(isinf(obj.via.f64));
303+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
280304
EXPECT_TRUE(isinf(obj.via.dec));
281-
else
305+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
306+
}
307+
else {
308+
EXPECT_TRUE(fabs(obj.via.f64 - val) <= kEPS);
309+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
282310
EXPECT_TRUE(fabs(obj.via.dec - val) <= kEPS);
311+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
312+
}
283313
msgpack_zone_destroy(&z);
284314
msgpack_sbuffer_destroy(&sbuf);
285315
}

test/object.cpp

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,10 @@ TEST(object, cross_zone_copy)
7979

8080
obj1 << obj2;
8181

82+
EXPECT_EQ(obj1.via.array.ptr[2].via.array.ptr[0].via.f64, 1.0);
83+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
8284
EXPECT_EQ(obj1.via.array.ptr[2].via.array.ptr[0].via.dec, 1.0);
85+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
8386
EXPECT_EQ(obj1.via.array.ptr[3].via.map.ptr[0].key.via.str.ptr[0], 'o');
8487
EXPECT_EQ(obj1.via.array.ptr[3].via.map.ptr[0].val.via.bin.ptr[0], 't');
8588
EXPECT_NE(
@@ -117,7 +120,10 @@ TEST(object, cross_zone_copy_construct)
117120

118121
msgpack::object obj1(obj2, z1);
119122

123+
EXPECT_EQ(obj1.via.array.ptr[2].via.array.ptr[0].via.f64, 1.0);
124+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
120125
EXPECT_EQ(obj1.via.array.ptr[2].via.array.ptr[0].via.dec, 1.0);
126+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
121127
EXPECT_EQ(obj1.via.array.ptr[3].via.map.ptr[0].key.via.str.ptr[0], 'o');
122128
EXPECT_EQ(obj1.via.array.ptr[3].via.map.ptr[0].val.via.bin.ptr[0], 't');
123129
EXPECT_NE(
@@ -215,9 +221,9 @@ TEST(object, equal_primitive)
215221
EXPECT_EQ(obj_int, msgpack::object(1));
216222
EXPECT_EQ(obj_int, 1);
217223

218-
msgpack::object obj_double(1.2);
219-
EXPECT_EQ(obj_double, msgpack::object(1.2));
220-
EXPECT_EQ(obj_double, 1.2);
224+
msgpack::object obj_float(1.2);
225+
EXPECT_EQ(obj_float, msgpack::object(1.2));
226+
EXPECT_EQ(obj_float, 1.2);
221227

222228
msgpack::object obj_bool(true);
223229
EXPECT_EQ(obj_bool, msgpack::object(true));
@@ -238,9 +244,13 @@ TEST(object, construct_primitive)
238244
EXPECT_EQ(msgpack::type::NEGATIVE_INTEGER, obj_int.type);
239245
EXPECT_EQ(-1, obj_int.via.i64);
240246

241-
msgpack::object obj_double(1.2);
242-
EXPECT_EQ(msgpack::type::DOUBLE, obj_double.type);
243-
EXPECT_EQ(1.2, obj_double.via.dec);
247+
msgpack::object obj_float(1.2);
248+
EXPECT_EQ(msgpack::type::FLOAT, obj_float.type);
249+
EXPECT_EQ(1.2, obj_float.via.f64);
250+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
251+
EXPECT_EQ(msgpack::type::DOUBLE, obj_float.type);
252+
EXPECT_EQ(1.2, obj_float.via.dec);
253+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
244254

245255
msgpack::object obj_bool(true);
246256
EXPECT_EQ(msgpack::type::BOOLEAN, obj_bool.type);

test/streaming_c.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,19 @@ TEST(streaming, basic)
9797
EXPECT_EQ(MSGPACK_OBJECT_MAP, obj.type);
9898
EXPECT_EQ(1, obj.via.map.size);
9999
e = obj.via.map.ptr[0].key;
100+
EXPECT_EQ(MSGPACK_OBJECT_FLOAT, e.type);
101+
ASSERT_FLOAT_EQ(0.4, static_cast<float>(e.via.f64));
102+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
100103
EXPECT_EQ(MSGPACK_OBJECT_DOUBLE, e.type);
101-
ASSERT_FLOAT_EQ(0.4, (float)e.via.dec);
104+
ASSERT_FLOAT_EQ(0.4, static_cast<float>(e.via.dec));
105+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
102106
e = obj.via.map.ptr[0].val;
107+
EXPECT_EQ(MSGPACK_OBJECT_FLOAT, e.type);
108+
ASSERT_DOUBLE_EQ(0.8, e.via.f64);
109+
#if defined(MSGPACK_USE_LEGACY_NAME_AS_FLOAT)
103110
EXPECT_EQ(MSGPACK_OBJECT_DOUBLE, e.type);
104111
ASSERT_DOUBLE_EQ(0.8, e.via.dec);
112+
#endif // MSGPACK_USE_LEGACY_NAME_AS_FLOAT
105113
break;
106114
}
107115
}

0 commit comments

Comments
 (0)