Replaced zone* member variable in object with zone&.

Added msgpack::object::with_zone tests.
Added tuples operator<<'s parameter to const.
Fixed array object::with_zone pointer and size unset problem.
Fixed forward_list object::with_zone pointer and size unset problem.
This commit is contained in:
Takatoshi Kondo
2014-08-11 13:23:27 +09:00
parent 8920c49597
commit f969f6f39c
38 changed files with 818 additions and 1839 deletions

View File

@@ -112,6 +112,10 @@ struct object {
template <typename T>
explicit object(const T& v);
template <typename T>
object(const T& v, zone& z);
// obsolete
template <typename T>
object(const T& v, zone* z);
@@ -135,8 +139,8 @@ struct object_kv {
};
struct object::with_zone : object {
with_zone(msgpack::zone* zone) : zone(zone) { }
msgpack::zone* zone;
with_zone(msgpack::zone& zone) : zone(zone) { }
msgpack::zone& zone;
private:
with_zone();
};
@@ -367,7 +371,7 @@ inline object& object::operator=(const T& v)
}
template <typename T>
object::object(const T& v, zone* z)
object::object(const T& v, zone& z)
{
with_zone oz(z);
oz << v;
@@ -375,6 +379,15 @@ object::object(const T& v, zone* z)
via = oz.via;
}
template <typename T>
object::object(const T& v, zone* z)
{
with_zone oz(*z);
oz << v;
type = oz.type;
via = oz.via;
}
inline object::object(msgpack_object o)
{