From 85630a4a47a32d2a086e080f35ae4263175158b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20M=C3=B6bius?= Date: Mon, 26 Jan 2015 10:01:26 +0000 Subject: [PATCH] Don't use auto_ptr when compiler supports C++11. Replaced by unique_ptr. git-svn-id: http://www.openmesh.org/svnrepo/OpenMesh/trunk@1213 fdac6126-5c0c-442c-9429-916003d36597 --- .../Apps/Decimating/DecimaterViewerWidget.hh | 6 +++++ .../Apps/Unsupported/OsgViewer/osgviewer.cc | 7 +++++- src/OpenMesh/Tools/Decimater/DecimaterT.cc | 22 +++++++++++++++++-- src/OpenMesh/Tools/Decimater/DecimaterT.hh | 8 ++++--- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/OpenMesh/Apps/Decimating/DecimaterViewerWidget.hh b/src/OpenMesh/Apps/Decimating/DecimaterViewerWidget.hh index 9df4a79c..9346dceb 100644 --- a/src/OpenMesh/Apps/Decimating/DecimaterViewerWidget.hh +++ b/src/OpenMesh/Apps/Decimating/DecimaterViewerWidget.hh @@ -107,7 +107,13 @@ public: typedef Decimater::ModNormalFlippingT< mesh_t >::Handle mod_nf_t; // object types +#if __cplusplus > 199711L or __GXX_EXPERIMENTAL_CXX0X__ + typedef std::unique_ptr< decimater_t > decimater_o; +#else typedef std::auto_ptr< decimater_t > decimater_o; +#endif + + /// default constructor DecimaterViewerWidget(QWidget* _parent=0) diff --git a/src/OpenMesh/Apps/Unsupported/OsgViewer/osgviewer.cc b/src/OpenMesh/Apps/Unsupported/OsgViewer/osgviewer.cc index 231d9369..7c1fed9b 100644 --- a/src/OpenMesh/Apps/Unsupported/OsgViewer/osgviewer.cc +++ b/src/OpenMesh/Apps/Unsupported/OsgViewer/osgviewer.cc @@ -124,7 +124,12 @@ public: bool bind( osg::GeometryPtr geo ) { - std::auto_ptr obj(new mesh_t); + #if __cplusplus > 199711L or __GXX_EXPERIMENTAL_CXX0X__ + std::unique_ptr obj(new mesh_t); + #else + std::auto_ptr obj(new mesh_t); + #endif + return (OpenMesh::Kernel_OSG::bind< mesh_t >( *obj, geo)) ? (meshes_.push_back(obj.release()), true) diff --git a/src/OpenMesh/Tools/Decimater/DecimaterT.cc b/src/OpenMesh/Tools/Decimater/DecimaterT.cc index d42b9f10..1918f085 100644 --- a/src/OpenMesh/Tools/Decimater/DecimaterT.cc +++ b/src/OpenMesh/Tools/Decimater/DecimaterT.cc @@ -70,7 +70,14 @@ namespace Decimater { template DecimaterT::DecimaterT(Mesh& _mesh) : BaseDecimaterT(_mesh), - mesh_(_mesh), heap_(NULL) { + mesh_(_mesh), +#if __cplusplus > 199711L or __GXX_EXPERIMENTAL_CXX0X__ + heap_(nullptr) +#else + heap_(NULL) +#endif + +{ // private vertex properties mesh_.add_property(collapse_target_); @@ -163,7 +170,14 @@ size_t DecimaterT::decimate(size_t _n_collapses) { // initialize heap HeapInterface HI(mesh_, priority_, heap_position_); + +#if __cplusplus > 199711L or __GXX_EXPERIMENTAL_CXX0X__ + heap_ = std::unique_ptr(new DeciHeap(HI)); +#else heap_ = std::auto_ptr(new DeciHeap(HI)); +#endif + + heap_->reserve(mesh_.n_vertices()); for (v_it = mesh_.vertices_begin(); v_it != v_end; ++v_it) { @@ -258,7 +272,11 @@ size_t DecimaterT::decimate_to_faces(size_t _nv, size_t _nf) { // initialize heap HeapInterface HI(mesh_, priority_, heap_position_); - heap_ = std::auto_ptr(new DeciHeap(HI)); + #if __cplusplus > 199711L or __GXX_EXPERIMENTAL_CXX0X__ + heap_ = std::unique_ptr(new DeciHeap(HI)); + #else + heap_ = std::auto_ptr(new DeciHeap(HI)); + #endif heap_->reserve(mesh_.n_vertices()); for (v_it = mesh_.vertices_begin(); v_it != v_end; ++v_it) { diff --git a/src/OpenMesh/Tools/Decimater/DecimaterT.hh b/src/OpenMesh/Tools/Decimater/DecimaterT.hh index 962f8ce5..49c8c1e6 100644 --- a/src/OpenMesh/Tools/Decimater/DecimaterT.hh +++ b/src/OpenMesh/Tools/Decimater/DecimaterT.hh @@ -60,8 +60,6 @@ #include #include - - //== NAMESPACE ================================================================ namespace OpenMesh { @@ -168,7 +166,11 @@ private: //------------------------------------------------------- private data Mesh& mesh_; // heap - std::auto_ptr heap_; + #if __cplusplus > 199711L or __GXX_EXPERIMENTAL_CXX0X__ + std::unique_ptr heap_; + #else + std::auto_ptr heap_; + #endif // vertex properties VPropHandleT collapse_target_;