diff options
| author | frsyuki <frsyuki@users.sourceforge.jp> | 2009-03-01 16:40:02 +0900 |
|---|---|---|
| committer | frsyuki <frsyuki@users.sourceforge.jp> | 2009-03-01 16:40:02 +0900 |
| commit | 5fcf1d590ba3eff80b2a1f49db1641d058e1e3e5 (patch) | |
| tree | 1cd4db8fea8626f288be5c9db100da8b922ce264 /cpp | |
| parent | 21040d9cd3b03ee27248b39a6b657948fdac5f9d (diff) | |
| download | msgpack-python-5fcf1d590ba3eff80b2a1f49db1641d058e1e3e5.tar.gz | |
zone::base
Diffstat (limited to 'cpp')
| -rw-r--r-- | cpp/zone.hpp.erb | 14 |
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; } |
