msgpack_zone_clear, msgpack::zone::clear

This commit is contained in:
frsyuki
2009-03-01 02:55:45 +09:00
parent ef1c4f82b2
commit b33ecbd92b
6 changed files with 55 additions and 1 deletions

View File

@@ -64,6 +64,9 @@ public:
// otherwise the memrory will leak.
zone* release_zone();
/*! 5.2. this method is equivalence to `delete release_zone()` */
void reset_zone();
/*! 5.3. after release_zone(), re-initialize unpacker */
void reset();
@@ -217,6 +220,11 @@ inline zone* unpacker::release_zone()
return r;
}
inline void unpacker::reset_zone()
{
msgpack_unpacker_reset_zone(this);
}
inline void unpacker::reset()
{
msgpack_unpacker_reset(this);

View File

@@ -37,6 +37,8 @@ public:
void push_finalizer(void (*func)(void*), void* data);
void clear();
<%0.upto(GENERATION_LIMIT) {|i|%>
template <typename T<%1.upto(i) {|j|%>, typename A<%=j%><%}%>>
T* allocate(<%=(1..i).map{|j|"A#{j} a#{j}"}.join(', ')%>);
@@ -78,6 +80,11 @@ inline void zone::push_finalizer(void (*func)(void*), void* data)
}
}
inline void zone::clear()
{
msgpack_zone_clear(this);
}
template <typename T>
void zone::object_destructor(void* obj)
{