mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-05-29 15:34:08 +02:00
Supported any names for MSGPACK_DEFINE_MAP using MSGPACK_NVP.
This commit is contained in:
parent
c30962da25
commit
e61cd76310
@ -42,6 +42,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define MSGPACK_BASE_ARRAY(base) (*const_cast<base *>(static_cast<base const*>(this)))
|
#define MSGPACK_BASE_ARRAY(base) (*const_cast<base *>(static_cast<base const*>(this)))
|
||||||
|
#define MSGPACK_NVP(name, value) (name) (value)
|
||||||
|
|
||||||
#define MSGPACK_DEFINE_MAP_EACH_PROC(r, data, elem) \
|
#define MSGPACK_DEFINE_MAP_EACH_PROC(r, data, elem) \
|
||||||
MSGPACK_PP_IF( \
|
MSGPACK_PP_IF( \
|
||||||
|
@ -537,3 +537,33 @@ TEST(MSGPACK_USER_DEFINED, test_non_intrusive)
|
|||||||
|
|
||||||
EXPECT_EQ(t1.name(), t2.name());
|
EXPECT_EQ(t1.name(), t2.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct nvp_base {
|
||||||
|
int a;
|
||||||
|
int b;
|
||||||
|
MSGPACK_DEFINE_MAP(MSGPACK_NVP("aaa", a), b);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct nvp_derived : nvp_base {
|
||||||
|
int c;
|
||||||
|
std::string d;
|
||||||
|
MSGPACK_DEFINE_MAP(MSGPACK_NVP("ccc", c), MSGPACK_NVP("base", MSGPACK_BASE(nvp_base)), MSGPACK_NVP("ddd", d));
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST(MSGPACK_NVP, combination)
|
||||||
|
{
|
||||||
|
msgpack::sbuffer sbuf;
|
||||||
|
nvp_derived d1;
|
||||||
|
d1.a = 1;
|
||||||
|
d1.b = 2;
|
||||||
|
d1.c = 3;
|
||||||
|
d1.d = "ABC";
|
||||||
|
|
||||||
|
msgpack::pack(sbuf, d1);
|
||||||
|
msgpack::object_handle oh = msgpack::unpack(sbuf.data(), sbuf.size());
|
||||||
|
nvp_derived d2 = oh.get().as<nvp_derived>();
|
||||||
|
EXPECT_EQ(d2.a, 1);
|
||||||
|
EXPECT_EQ(d2.b, 2);
|
||||||
|
EXPECT_EQ(d2.c, 3);
|
||||||
|
EXPECT_EQ(d2.d, "ABC");
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user