[PPL-devel] [GIT] ppl/ppl(master): CO_Tree: avoid static_casts between Coefficient* and void*. Use an allocator instead.
Marco Poletti
poletti.marco at gmail.com
Sun Dec 4 15:06:22 CET 2011
Module: ppl/ppl
Branch: master
Commit: db4eb1cdc83424041c699891a22639bf8106f3d0
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=db4eb1cdc83424041c699891a22639bf8106f3d0
Author: Marco Poletti <poletti.marco at gmail.com>
Date: Sun Dec 4 00:31:01 2011 +0100
CO_Tree: avoid static_casts between Coefficient* and void*. Use an allocator instead.
---
src/CO_Tree.cc | 8 +++-----
src/CO_Tree.defs.hh | 2 ++
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/CO_Tree.cc b/src/CO_Tree.cc
index 08115c2..f2f5c66 100644
--- a/src/CO_Tree.cc
+++ b/src/CO_Tree.cc
@@ -521,8 +521,7 @@ PPL::CO_Tree::init(dimension_type reserved_size1) {
reserved_size = ((dimension_type)1 << max_depth) - 1;
indexes = new dimension_type[reserved_size + 2];
try {
- data = static_cast<data_type*>(operator new(sizeof(data_type)
- * (reserved_size + 1)));
+ data = coefficient_allocator.allocate(reserved_size + 1);
} catch (...) {
delete [] indexes;
throw;
@@ -551,7 +550,7 @@ PPL::CO_Tree::destroy() {
}
delete [] indexes;
- operator delete(static_cast<void*>(data));
+ coefficient_allocator.deallocate(data, reserved_size + 1);
}
}
@@ -705,8 +704,7 @@ PPL::CO_Tree::rebuild_bigger_tree() {
data_type* new_data;
try {
- new_data = static_cast<data_type*>(operator new(sizeof(data_type)
- * (new_reserved_size + 1)));
+ new_data = coefficient_allocator.allocate(new_reserved_size + 1);
} catch (...) {
delete new_indexes;
throw;
diff --git a/src/CO_Tree.defs.hh b/src/CO_Tree.defs.hh
index 86a3a2f..eed941c 100644
--- a/src/CO_Tree.defs.hh
+++ b/src/CO_Tree.defs.hh
@@ -1299,6 +1299,8 @@ private:
//! The number of values stored in the tree.
dimension_type size_;
+
+ std::allocator<Coefficient> coefficient_allocator;
};
class CO_Tree::tree_iterator {
More information about the PPL-devel
mailing list