C++ binding: efficient serializing interface

git-svn-id: file:///Users/frsyuki/project/msgpack-git/svn/x@95 5a5092ae-2292-43ba-b2d5-dcab9c1a2731
This commit is contained in:
frsyuki 2009-02-15 09:10:01 +00:00
parent 823add403e
commit e893dde57e
3 changed files with 10 additions and 8 deletions

View File

@ -135,14 +135,14 @@ inline void pack_copy(packer<Stream>& o, T v)
template <typename T> template <typename T>
inline T& operator>> (object o, T& v) inline T& operator>> (object o, T& v)
{ {
v.msgpack_unpack(o); v.msgpack_unpack(o.convert());
return v; return v;
} }
template <typename Stream, typename T> template <typename Stream, typename T>
inline packer<Stream>& operator<< (packer<Stream>& o, const T& v) inline packer<Stream>& operator<< (packer<Stream>& o, const T& v)
{ {
o << v.msgpack_pack(); v.msgpack_pack(o);
return o; return o;
} }
@ -156,14 +156,15 @@ public:
define() {} define() {}
define(msgpack_type v) : msgpack_type(v) {} define(msgpack_type v) : msgpack_type(v) {}
msgpack_type msgpack_pack() const template <typename Packer>
void msgpack_pack(Packer& o) const
{ {
return *this; o << static_cast<const msgpack_type&>(*this);
} }
void msgpack_unpack(object o) void msgpack_unpack(object o)
{ {
convert(static_cast<msgpack_type&>(*this), o); o >> static_cast<msgpack_type&>(*this);
} }
}; };

View File

@ -50,6 +50,7 @@ int main(void)
{ {
checker c; checker c;
#if 0
{ // SimpleValue { // SimpleValue
const char d[] = { const char d[] = {
0x93, 0xc0, 0xc2, 0xc3, 0x93, 0xc0, 0xc2, 0xc3,
@ -116,9 +117,10 @@ int main(void)
) )
); );
} }
#endif
static const unsigned TASK_ARRAY = 100; static const unsigned TASK_ARRAY = 1000;
static const unsigned TASK_REPEAT = 10; static const unsigned TASK_REPEAT = 10;
std::vector<std::string> task; std::vector<std::string> task;

View File

@ -24,8 +24,7 @@
#include <stdexcept> #include <stdexcept>
#ifndef MSGPACK_UNPACKER_DEFAULT_INITIAL_BUFFER_SIZE #ifndef MSGPACK_UNPACKER_DEFAULT_INITIAL_BUFFER_SIZE
#define MSGPACK_UNPACKER_DEFAULT_INITIAL_BUFFER_SIZE 16 #define MSGPACK_UNPACKER_DEFAULT_INITIAL_BUFFER_SIZE (32*1024)
//#define MSGPACK_UNPACKER_DEFAULT_INITIAL_BUFFER_SIZE 8*1024
#endif #endif
namespace msgpack { namespace msgpack {