From 8cbca5cd3538b0065e7ab0f082e2264a05e479d3 Mon Sep 17 00:00:00 2001 From: guido Date: Sun, 22 May 2005 08:39:45 +0000 Subject: [PATCH] adapt to improved Subscriptor scheme git-svn-id: https://svn.dealii.org/trunk@10693 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/include/grid/tria.h | 4 ++- deal.II/deal.II/source/grid/tria.cc | 56 ++++++++++------------------- 2 files changed, 21 insertions(+), 39 deletions(-) diff --git a/deal.II/deal.II/include/grid/tria.h b/deal.II/deal.II/include/grid/tria.h index 5aef13aa03..64d8c69ada 100644 --- a/deal.II/deal.II/include/grid/tria.h +++ b/deal.II/deal.II/include/grid/tria.h @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -294,6 +295,7 @@ struct TriaNumberCache<2> : public TriaNumberCache<1> unsigned int memory_consumption () const; }; +//TODO: Replace boundary[255] by a std::vector so we can use constructor of SmartPointer /** * Cache class used to store the number of used and active elements @@ -3291,7 +3293,7 @@ class Triangulation : public Subscriptor * and can thus never be * associated with a boundary. */ - const Boundary* boundary[255]; + SmartPointer > boundary[255]; /** * Do some smoothing in the process diff --git a/deal.II/deal.II/source/grid/tria.cc b/deal.II/deal.II/source/grid/tria.cc index f1f40e982f..3e42403255 100644 --- a/deal.II/deal.II/source/grid/tria.cc +++ b/deal.II/deal.II/source/grid/tria.cc @@ -52,10 +52,7 @@ Triangulation::Triangulation (const MeshSmoothing smooth_grid) : // set default boundary for all // possible components for (unsigned int i=0;i<255;++i) - { - boundary[i] = straight_boundary; - boundary[i]->subscribe(typeid(*this).name()); - } + boundary[i] = straight_boundary; } @@ -77,9 +74,6 @@ Triangulation::~Triangulation () for (unsigned int i=0; iunsubscribe(typeid(*this).name()); } @@ -91,21 +85,7 @@ void Triangulation::clear () // more Assert (n_subscriptions() == 0, ExcInternalError()); - for (unsigned int i=0; iunsubscribe(typeid(*this).name()); - boundary[i] = straight_boundary; - boundary[i]->subscribe(typeid(*this).name()); - }; - - number_cache = TriaNumberCache(); + clear_despite_subscriptions(); } @@ -116,9 +96,7 @@ Triangulation::set_boundary (const unsigned int number, { Assert(number<255, ExcIndexRange(number,0,255)); - boundary[number]->unsubscribe(typeid(*this).name()); boundary[number] = &boundary_object; - boundary_object.subscribe(typeid(*this).name()); } @@ -216,11 +194,7 @@ void Triangulation::copy_triangulation (const Triangulation &old_tria) smooth_grid = old_tria.smooth_grid; for (unsigned i=0;i<255;++i) - { - boundary[i]->unsubscribe(typeid(*this).name()); - boundary[i] = old_tria.boundary[i]; - boundary[i]->subscribe(typeid(*this).name()); - } + boundary[i] = old_tria.boundary[i]; levels.reserve (old_tria.levels.size()); for (unsigned int level=0; level::execute_coarsening_and_refinement () template void Triangulation::clear_despite_subscriptions() -{ - // disable subscriptions, clear, - // and then set them again - const unsigned int n=n_subscriptions(); - for (unsigned int i=0; i(); } -- 2.39.5