diff options
| author | frsyuki <frsyuki@users.sourceforge.jp> | 2010-04-25 01:12:25 +0900 |
|---|---|---|
| committer | frsyuki <frsyuki@users.sourceforge.jp> | 2010-04-25 01:12:25 +0900 |
| commit | 4e85ebbf9863201107a8f5c68fdabc92749e04fc (patch) | |
| tree | c1c5e8a8f45400216267b220eecad7d47c448d28 /cpp/msgpack/object.hpp | |
| parent | 120e8bffd7917e9529229e796b21ececc51df016 (diff) | |
| download | msgpack-python-4e85ebbf9863201107a8f5c68fdabc92749e04fc.tar.gz | |
cpp: object::object(const T& v, zone* z)
Diffstat (limited to 'cpp/msgpack/object.hpp')
| -rw-r--r-- | cpp/msgpack/object.hpp | 25 |
1 files changed, 25 insertions, 0 deletions
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 <string.h> #include <stdexcept> #include <typeinfo> @@ -93,6 +94,9 @@ struct object { object(const T& v); template <typename T> + object(const T& v, zone* z); + + template <typename T> object& operator=(const T& v); operator msgpack_object(); @@ -101,6 +105,10 @@ 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 <typename T> +object::object(const T& v, zone* z) +{ + object_zone oz(z); + oz << v; + type = oz.type; + via = oz.via; +} + inline object::operator msgpack_object() { |
