summaryrefslogtreecommitdiff
path: root/cpp/msgpack
diff options
context:
space:
mode:
authorfrsyuki <frsyuki@users.sourceforge.jp>2010-04-14 21:11:31 +0900
committerfrsyuki <frsyuki@users.sourceforge.jp>2010-04-14 21:11:31 +0900
commita6ec726ed7ca72662f0abbc8e1d8e361201483ae (patch)
tree47ace642c08072d701b141258b01c26aa4c784c8 /cpp/msgpack
parent87835a4e60e8f7ba5c2d4283ed44f57b725d9628 (diff)
downloadmsgpack-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.hpp52
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);