diff options
| author | frsyuki <frsyuki@users.sourceforge.jp> | 2010-04-14 21:11:31 +0900 |
|---|---|---|
| committer | frsyuki <frsyuki@users.sourceforge.jp> | 2010-04-14 21:11:31 +0900 |
| commit | a6ec726ed7ca72662f0abbc8e1d8e361201483ae (patch) | |
| tree | 47ace642c08072d701b141258b01c26aa4c784c8 /cpp/msgpack | |
| parent | 87835a4e60e8f7ba5c2d4283ed44f57b725d9628 (diff) | |
| download | msgpack-python-a6ec726ed7ca72662f0abbc8e1d8e361201483ae.tar.gz | |
malloc/realloc the stack when its length becomes > MSGPACK_EMBED_STACK_SIZE
Diffstat (limited to 'cpp/msgpack')
| -rw-r--r-- | cpp/msgpack/object.hpp | 52 |
1 files changed, 48 insertions, 4 deletions
diff --git a/cpp/msgpack/object.hpp b/cpp/msgpack/object.hpp index ed2e290..3b42a8e 100644 --- a/cpp/msgpack/object.hpp +++ b/cpp/msgpack/object.hpp @@ -87,9 +87,15 @@ struct object { template <typename T> void convert(T* v) const; - object(); - object(msgpack_object obj); operator msgpack_object(); + object(msgpack_object obj); + + object(); + object(bool v); + object(uint64_t v); + object(int64_t v); + object(double v); + object(const char* ptr, size_t size); private: struct implicit_type; @@ -184,7 +190,46 @@ inline bool operator!=(const object x, const object y) { return !(x == y); } -inline object::object() { } +inline object::object() +{ + type = type::NIL; +} + +inline object::object(bool v) +{ + type = type::BOOLEAN; + via.boolean = v; +} + +inline object::object(uint64_t v) +{ + type = type::POSITIVE_INTEGER; + via.u64 = v; +} + +inline object::object(int64_t v) +{ + if(v >= 0) { + type = type::POSITIVE_INTEGER; + via.u64 = v; + } else { + type = type::NEGATIVE_INTEGER; + via.i64 = v; + } +} + +inline object::object(double v) +{ + type = type::DOUBLE; + via.dec = v; +} + +inline object::object(const char* ptr, size_t size) +{ + type = type::RAW; + via.raw.size = size; + via.raw.ptr = ptr; +} inline object::object(msgpack_object obj) { @@ -200,7 +245,6 @@ inline object::operator msgpack_object() return obj; } - inline object::implicit_type object::convert() const { return implicit_type(*this); |
