mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-16 18:56:54 +02:00
@@ -511,6 +511,16 @@ inline T* object::convert(T* v) const
|
||||
return v;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
inline bool object::convert_if_not_nil(T& v) const
|
||||
{
|
||||
if (is_nil()) {
|
||||
return false;
|
||||
}
|
||||
convert(v);
|
||||
return true;
|
||||
}
|
||||
|
||||
#if defined(MSGPACK_USE_CPP03)
|
||||
|
||||
template <typename T>
|
||||
|
@@ -149,6 +149,9 @@ struct object {
|
||||
template <typename T>
|
||||
T* convert(T* v) const;
|
||||
|
||||
template <typename T>
|
||||
bool convert_if_not_nil(T& v) const;
|
||||
|
||||
object();
|
||||
|
||||
object(const msgpack_object& o);
|
||||
|
@@ -93,3 +93,20 @@ TEST(convert, return_value_ref)
|
||||
EXPECT_EQ(&i, &j);
|
||||
EXPECT_EQ(i, j);
|
||||
}
|
||||
|
||||
TEST(convert, if_not_nil_nil)
|
||||
{
|
||||
msgpack::object obj;
|
||||
int i;
|
||||
EXPECT_FALSE(obj.convert_if_not_nil(i));
|
||||
}
|
||||
|
||||
TEST(convert, if_not_nil_not_nil)
|
||||
{
|
||||
msgpack::zone z;
|
||||
msgpack::object obj(1, z);
|
||||
|
||||
int i;
|
||||
EXPECT_TRUE(obj.convert_if_not_nil(i));
|
||||
EXPECT_EQ(i, 1);
|
||||
}
|
||||
|
Reference in New Issue
Block a user