mirror of
https://github.com/msgpack/msgpack-c
synced 2026-06-08 16:11:40 +00:00
@@ -40,7 +40,13 @@ struct json_like_visitor : msgpack::v2::null_visitor {
|
||||
m_s += ss.str();
|
||||
return true;
|
||||
}
|
||||
bool visit_float(double v) {
|
||||
bool visit_float32(float v) {
|
||||
std::stringstream ss;
|
||||
ss << v;
|
||||
m_s += ss.str();
|
||||
return true;
|
||||
}
|
||||
bool visit_float64(double v) {
|
||||
std::stringstream ss;
|
||||
ss << v;
|
||||
m_s += ss.str();
|
||||
|
||||
@@ -92,9 +92,15 @@ public:
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool visit_float(double v) {
|
||||
bool visit_float32(float v) {
|
||||
msgpack::object* obj = m_stack.back();
|
||||
obj->type = msgpack::type::FLOAT;
|
||||
obj->type = msgpack::type::FLOAT32;
|
||||
obj->via.f64 = v;
|
||||
return true;
|
||||
}
|
||||
bool visit_float64(double v) {
|
||||
msgpack::object* obj = m_stack.back();
|
||||
obj->type = msgpack::type::FLOAT64;
|
||||
obj->via.f64 = v;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,10 @@ struct null_visitor {
|
||||
bool visit_negative_integer(int64_t /*v*/) {
|
||||
return true;
|
||||
}
|
||||
bool visit_float(double /*v*/) {
|
||||
bool visit_float32(float /*v*/) {
|
||||
return true;
|
||||
}
|
||||
bool visit_float64(double /*v*/) {
|
||||
return true;
|
||||
}
|
||||
bool visit_str(const char* /*v*/, uint32_t /*size*/) {
|
||||
|
||||
@@ -339,7 +339,7 @@ inline parse_return context<VisitorHolder>::execute(const char* data, std::size_
|
||||
case MSGPACK_CS_FLOAT: {
|
||||
union { uint32_t i; float f; } mem;
|
||||
load<uint32_t>(mem.i, n);
|
||||
bool visret = holder().visitor().visit_float(mem.f);
|
||||
bool visret = holder().visitor().visit_float32(mem.f);
|
||||
parse_return upr = after_visit_proc(visret, off);
|
||||
if (upr != PARSE_CONTINUE) return upr;
|
||||
} break;
|
||||
@@ -352,7 +352,7 @@ inline parse_return context<VisitorHolder>::execute(const char* data, std::size_
|
||||
// https://github.com/msgpack/msgpack-perl/pull/1
|
||||
mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
|
||||
#endif
|
||||
bool visret = holder().visitor().visit_float(mem.f);
|
||||
bool visret = holder().visitor().visit_float64(mem.f);
|
||||
parse_return upr = after_visit_proc(visret, off);
|
||||
if (upr != PARSE_CONTINUE) return upr;
|
||||
} break;
|
||||
|
||||
@@ -298,7 +298,7 @@ const auto mp_object_def =
|
||||
auto& app_specific = x3::get<tag_app_specific>(ctx).get();
|
||||
union { uint32_t i; float f; } mem;
|
||||
mem.i = _attr(ctx);
|
||||
app_specific.vis.visit_float(mem.f);
|
||||
app_specific.vis.visit_float32(mem.f);
|
||||
}
|
||||
)
|
||||
]
|
||||
@@ -316,7 +316,7 @@ const auto mp_object_def =
|
||||
// https://github.com/msgpack/msgpack-perl/pull/1
|
||||
mem.i = (mem.i & 0xFFFFFFFFUL) << 32UL | (mem.i >> 32UL);
|
||||
#endif
|
||||
app_specific.vis.visit_float(mem.f);
|
||||
app_specific.vis.visit_float64(mem.f);
|
||||
}
|
||||
)
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user