From: Wolfgang Bangerth Date: Wed, 10 Aug 2016 02:30:45 +0000 (-0500) Subject: Convert Triangulation::faces from a raw pointer to a std_cxx11::unique_ptr. X-Git-Tag: v8.5.0-rc1~774^2~2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3984025e36ed2b1bb2e533807b6c9f59c87ce338;p=dealii.git Convert Triangulation::faces from a raw pointer to a std_cxx11::unique_ptr. --- diff --git a/include/deal.II/grid/tria.h b/include/deal.II/grid/tria.h index b096131b23..c414dff9c7 100644 --- a/include/deal.II/grid/tria.h +++ b/include/deal.II/grid/tria.h @@ -24,6 +24,7 @@ #include #include #include +#include #include // Ignore deprecation warnings for auto_ptr. @@ -31,6 +32,11 @@ DEAL_II_DISABLE_EXTRA_DIAGNOSTICS #include #include #include +#ifdef DEAL_II_WITH_CXX11 +# include +#else +# include +#endif #include DEAL_II_ENABLE_EXTRA_DIAGNOSTICS @@ -3342,7 +3348,7 @@ private: * in 2D it contains data concerning lines and in 3D quads and lines. All * of these have no level and are therefore treated separately. */ - dealii::internal::Triangulation::TriaFaces *faces; + std_cxx11::unique_ptr > faces; /** diff --git a/include/deal.II/grid/tria_accessor.templates.h b/include/deal.II/grid/tria_accessor.templates.h index de66fa54d8..9eaa2603ed 100644 --- a/include/deal.II/grid/tria_accessor.templates.h +++ b/include/deal.II/grid/tria_accessor.templates.h @@ -1,6 +1,6 @@ // --------------------------------------------------------------------- // -// Copyright (C) 1999 - 2015 by the deal.II authors +// Copyright (C) 1999 - 2016 by the deal.II authors // // This file is part of the deal.II library. // @@ -381,7 +381,7 @@ TriaAccessorBase::objects() const // get sub-objects. note that the // current class is only used for // objects that are *not* cells - return *dealii::internal::TriaAccessorBase::get_objects (this->tria->faces, + return *dealii::internal::TriaAccessorBase::get_objects (this->tria->faces.get(), dealii::internal::int2type ()); else return *dealii::internal::TriaAccessorBase::get_objects (&this->tria->levels[this->present_level]->cells, diff --git a/source/grid/tria.cc b/source/grid/tria.cc index 0cbaa75972..f03cff7cee 100644 --- a/source/grid/tria.cc +++ b/source/grid/tria.cc @@ -1962,7 +1962,7 @@ namespace internal // reserve enough space triangulation.levels.push_back (new internal::Triangulation::TriaLevel); - triangulation.faces = new internal::Triangulation::TriaFaces; + triangulation.faces.reset (new internal::Triangulation::TriaFaces); triangulation.levels[0]->reserve_space (cells.size(), dim, spacedim); triangulation.faces->lines.reserve_space (0,needed_lines.size()); triangulation.levels[0]->cells.reserve_space (0,cells.size()); @@ -2336,7 +2336,7 @@ namespace internal // for the lines // reserve enough space triangulation.levels.push_back (new internal::Triangulation::TriaLevel); - triangulation.faces = new internal::Triangulation::TriaFaces; + triangulation.faces.reset (new internal::Triangulation::TriaFaces); triangulation.levels[0]->reserve_space (cells.size(), dim, spacedim); triangulation.faces->lines.reserve_space (0,needed_lines.size()); @@ -8956,7 +8956,6 @@ Triangulation (const MeshSmoothing smooth_grid, const bool check_for_distorted_cells) : smooth_grid(smooth_grid), - faces(NULL), anisotropic_refinement(false), check_for_distorted_cells(check_for_distorted_cells), vertex_to_boundary_id_map_1d (0), @@ -9019,8 +9018,6 @@ Triangulation (Triangulation &&tria) for (unsigned int i=0; i(); tria.vertex_to_boundary_id_map_1d = nullptr; @@ -9041,12 +9038,6 @@ Triangulation::~Triangulation () } levels.clear (); - if (faces) - { - delete faces; - faces = 0; - } - // the vertex_to_boundary_id_map_1d field // should be unused except in 1d Assert ((dim == 1) @@ -9323,7 +9314,8 @@ copy_triangulation (const Triangulation &old_tria) anisotropic_refinement = old_tria.anisotropic_refinement; smooth_grid = old_tria.smooth_grid; - faces = new internal::Triangulation::TriaFaces(*old_tria.faces); + if (dim > 1) + faces.reset (new internal::Triangulation::TriaFaces(*old_tria.faces)); typename std::map , Triangulation > >::const_iterator @@ -9780,7 +9772,7 @@ void Triangulation::clear_user_data () { // let functions in anonymous namespace do their work dealii::clear_user_data (levels); - dealii::clear_user_data (faces); + dealii::clear_user_data (faces.get()); } @@ -9806,7 +9798,7 @@ namespace template void Triangulation::clear_user_flags_line () { - dealii::clear_user_flags_line (levels, faces); + dealii::clear_user_flags_line (levels, faces.get()); } @@ -9838,7 +9830,7 @@ namespace template void Triangulation::clear_user_flags_quad () { - dealii::clear_user_flags_quad (levels, faces); + dealii::clear_user_flags_quad (levels, faces.get()); } @@ -9870,7 +9862,7 @@ namespace template void Triangulation::clear_user_flags_hex () { - dealii::clear_user_flags_hex (levels, faces); + dealii::clear_user_flags_hex (levels, faces.get()); } @@ -12003,8 +11995,7 @@ Triangulation::clear_despite_subscriptions() delete levels[i]; levels.clear (); - delete faces; - faces = NULL; + faces.reset (); vertices.clear (); vertices_used.clear ();