summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorfrsyuki <frsyuki@users.sourceforge.jp>2009-03-01 16:40:02 +0900
committerfrsyuki <frsyuki@users.sourceforge.jp>2009-03-01 16:40:02 +0900
commit5fcf1d590ba3eff80b2a1f49db1641d058e1e3e5 (patch)
tree1cd4db8fea8626f288be5c9db100da8b922ce264 /cpp
parent21040d9cd3b03ee27248b39a6b657948fdac5f9d (diff)
downloadmsgpack-python-5fcf1d590ba3eff80b2a1f49db1641d058e1e3e5.tar.gz
zone::base
Diffstat (limited to 'cpp')
-rw-r--r--cpp/zone.hpp.erb14
1 files changed, 8 insertions, 6 deletions
diff --git a/cpp/zone.hpp.erb b/cpp/zone.hpp.erb
index 874c900..9e85080 100644
--- a/cpp/zone.hpp.erb
+++ b/cpp/zone.hpp.erb
@@ -45,11 +45,13 @@ public:
<%}%>
private:
- void undo_malloc(size_t s);
+ void undo_malloc(size_t size);
template <typename T>
static void object_destructor(void* obj);
+ typedef msgpack_zone base;
+
private:
zone(const zone&);
};
@@ -93,11 +95,11 @@ void zone::object_destructor(void* obj)
reinterpret_cast<T*>(obj)->~T();
}
-inline void zone::undo_malloc(size_t s)
+inline void zone::undo_malloc(size_t size)
{
- msgpack_zone_chunk* chunk = chunk_array.tail;
- chunk->ptr -= s;
- chunk->free += s;
+ msgpack_zone_chunk* chunk = base::chunk_array.tail;
+ chunk->ptr -= size;
+ chunk->free += size;
}
<%0.upto(GENERATION_LIMIT) {|i|%>
@@ -112,7 +114,7 @@ T* zone::allocate(<%=(1..i).map{|j|"A#{j} a#{j}"}.join(', ')%>)
try {
return new (x) T(<%=(1..i).map{|j|"a#{j}"}.join(', ')%>);
} catch (...) {
- --finalizer_array.tail;
+ --base::finalizer_array.tail;
undo_malloc(sizeof(T));
throw;
}