From 4e85ebbf9863201107a8f5c68fdabc92749e04fc Mon Sep 17 00:00:00 2001 From: frsyuki Date: Sun, 25 Apr 2010 01:12:25 +0900 Subject: cpp: object::object(const T& v, zone* z) --- cpp/msgpack/object.hpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'cpp/msgpack/object.hpp') diff --git a/cpp/msgpack/object.hpp b/cpp/msgpack/object.hpp index 0125d0a..a094c56 100644 --- a/cpp/msgpack/object.hpp +++ b/cpp/msgpack/object.hpp @@ -20,6 +20,7 @@ #include "msgpack/object.h" #include "msgpack/pack.hpp" +#include "msgpack/zone.hpp" #include #include #include @@ -92,6 +93,9 @@ struct object { template object(const T& v); + template + object(const T& v, zone* z); + template object& operator=(const T& v); @@ -100,6 +104,10 @@ struct object { private: struct implicit_type; +public: + // FIXME private? + struct object_zone; + public: implicit_type convert() const; }; @@ -109,6 +117,14 @@ struct object_kv { object val; }; +struct object::object_zone : object { + object_zone(msgpack::zone* zone) : zone(zone) { } + msgpack::zone* zone; +private: + object_zone(); +}; + + bool operator==(const object x, const object y); bool operator!=(const object x, const object y); @@ -230,6 +246,15 @@ inline object& object::operator=(const T& v) return *this; } +template +object::object(const T& v, zone* z) +{ + object_zone oz(z); + oz << v; + type = oz.type; + via = oz.via; +} + inline object::operator msgpack_object() { -- cgit v1.2.1