diff options
Diffstat (limited to 'include/gudhi/Contraction')
11 files changed, 0 insertions, 741 deletions
diff --git a/include/gudhi/Contraction/CGAL_queue/Modifiable_priority_queue.h b/include/gudhi/Contraction/CGAL_queue/Modifiable_priority_queue.h deleted file mode 100644 index 5a55c513..00000000 --- a/include/gudhi/Contraction/CGAL_queue/Modifiable_priority_queue.h +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) 2006-2011 GeometryFactory (France). All rights reserved. -// -// This file is part of CGAL (www.cgal.org); you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License as -// published by the Free Software Foundation; either version 3 of the License, -// or (at your option) any later version. -// -// Licensees holding a valid commercial license may use this file in -// accordance with the commercial license agreement provided with the software. -// -// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -// -// $URL$ -// $Id$ -// -// Author(s) : Fernando Cacciola <fernando.cacciola@geometryfactory.com> -// -#ifndef CONTRACTION_CGAL_QUEUE_MODIFIABLE_PRIORITY_QUEUE_H_ -#define CONTRACTION_CGAL_QUEUE_MODIFIABLE_PRIORITY_QUEUE_H_ - -#define CGAL_SURFACE_MESH_SIMPLIFICATION_USE_RELAXED_HEAP - -#include <boost/optional.hpp> -#include <boost/pending/relaxed_heap.hpp> - -#include <climits> // Neeeded by the following Boost header for CHAR_BIT. -#include <functional> // for less - -namespace CGAL { - -template <class IndexedType_, class Compare_ = std::less<IndexedType_>, class ID_ = boost::identity_property_map> -class Modifiable_priority_queue { - public: - typedef Modifiable_priority_queue Self; - - typedef IndexedType_ IndexedType; - typedef Compare_ Compare; - typedef ID_ ID; - - typedef boost::relaxed_heap<IndexedType, Compare, ID> Heap; - typedef typename Heap::value_type value_type; - typedef typename Heap::size_type size_type; - - typedef bool handle; - - public: - Modifiable_priority_queue(size_type largest_ID, Compare const& c, ID const& id) : mHeap(largest_ID, c, id) { } - - handle push(value_type const& v) { - mHeap.push(v); - return handle(true); - } - - handle update(value_type const& v, handle h) { - mHeap.update(v); - return h; - } - - handle erase(value_type const& v, handle) { - mHeap.remove(v); - return null_handle(); - } - - value_type top() const { - return mHeap.top(); - } - - void pop() { - mHeap.pop(); - } - - bool empty() const { - return mHeap.empty(); - } - - bool contains(value_type const& v) { - return mHeap.contains(v); - } - - boost::optional<value_type> extract_top() { - boost::optional<value_type> r; - if (!empty()) { - value_type v = top(); - pop(); - r = boost::optional<value_type>(v); - } - return r; - } - - static handle null_handle() { - return handle(false); - } - - private: - Heap mHeap; -}; - -} // namespace CGAL - -#endif // CONTRACTION_CGAL_QUEUE_MODIFIABLE_PRIORITY_QUEUE_H_ diff --git a/include/gudhi/Contraction/Edge_profile.h b/include/gudhi/Contraction/Edge_profile.h deleted file mode 100644 index 30b1b80a..00000000 --- a/include/gudhi/Contraction/Edge_profile.h +++ /dev/null @@ -1,130 +0,0 @@ -/* This file is part of the Gudhi Library. The Gudhi library - * (Geometric Understanding in Higher Dimensions) is a generic C++ - * library for computational topology. - * - * Author(s): David Salinas - * - * Copyright (C) 2014 Inria - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef CONTRACTION_EDGE_PROFILE_H_ -#define CONTRACTION_EDGE_PROFILE_H_ - -#include <ostream> - -namespace Gudhi { - -namespace contraction { - -template<typename GeometricSimplifiableComplex> class Edge_profile { - public: - typedef GeometricSimplifiableComplex Complex; - typedef typename Complex::GT GT; - - typedef typename GeometricSimplifiableComplex::Vertex_handle Vertex_handle; - typedef typename GeometricSimplifiableComplex::Root_vertex_handle Root_vertex_handle; - - - typedef typename GeometricSimplifiableComplex::Edge_handle Edge_handle; - typedef typename GeometricSimplifiableComplex::Graph_vertex Graph_vertex; - typedef typename GeometricSimplifiableComplex::Graph_edge Graph_edge; - typedef typename GeometricSimplifiableComplex::Point Point; - - Edge_profile(GeometricSimplifiableComplex& complex, Edge_handle edge) : complex_(complex), edge_handle_(edge), - v0_(complex_.first_vertex(edge_handle_)), v1_(complex_.second_vertex(edge_handle_)) { - assert(complex_.get_address(complex_[edge_handle_].first())); - assert(complex_.get_address(complex_[edge_handle_].second())); - assert(complex_.contains_edge(v0_handle(), v1_handle())); - assert(v0_handle() != v1_handle()); - } - - virtual ~Edge_profile() { } - - GeometricSimplifiableComplex& complex() const { - return complex_; - } - - Edge_handle edge_handle() const { - return edge_handle_; - } - - Graph_edge& edge() const { - return complex_[edge_handle_]; - } - - Graph_vertex& v0() const { - return complex_[v0_handle()]; - } - - Graph_vertex& v1() const { - return complex_[v1_handle()]; - } - - Vertex_handle v0_handle() const { - return v0_; - // Root_vertex_handle root = complex_[edge_handle_].first(); - // assert(complex_.get_address(root)); - // return *complex_.get_address(root); - } - - Vertex_handle v1_handle() const { - return v1_; - // Root_vertex_handle root = complex_[edge_handle_].second(); - // assert(complex_.get_address(root)); - // return *complex_.get_address(root); - } - - const Point& p0() const { - return complex_.point(v0_handle()); - } - - const Point& p1() const { - return complex_.point(v1_handle()); - } - - friend std::ostream& operator<<(std::ostream& o, const Edge_profile& v) { - return o << "v0:" << v.v0_handle() << " v1:" << v.v1_handle(); - } - - private: - GeometricSimplifiableComplex& complex_; - - Edge_handle edge_handle_; - - Vertex_handle v0_; - - Vertex_handle v1_; -}; - -template<typename EdgeProfile> class Edge_profile_factory { - public: - typedef typename EdgeProfile::Edge_handle Edge_handle_; - typedef typename EdgeProfile::Complex Complex_; - - virtual EdgeProfile make_profile( - Complex_& complex, - Edge_handle_ edge) const { - return EdgeProfile(complex, edge); - } - - virtual ~Edge_profile_factory() { } -}; - -} // namespace contraction - -} // namespace Gudhi - -#endif // CONTRACTION_EDGE_PROFILE_H_ diff --git a/include/gudhi/Contraction/policies/Contraction_visitor.h b/include/gudhi/Contraction/policies/Contraction_visitor.h deleted file mode 100644 index fa02308b..00000000 --- a/include/gudhi/Contraction/policies/Contraction_visitor.h +++ /dev/null @@ -1,91 +0,0 @@ -/* This file is part of the Gudhi Library. The Gudhi library - * (Geometric Understanding in Higher Dimensions) is a generic C++ - * library for computational topology. - * - * Author(s): David Salinas - * - * Copyright (C) 2014 Inria - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef CONTRACTION_POLICIES_CONTRACTION_VISITOR_H_ -#define CONTRACTION_POLICIES_CONTRACTION_VISITOR_H_ - -#include <gudhi/Contraction/Edge_profile.h> -#include <boost/optional.hpp> - -namespace Gudhi { - -namespace contraction { - -/** - *@class Contraction_visitor - *@brief Interface for a visitor of the edge contraction process. - *@ingroup contr - */ -template <typename EdgeProfile> -class Contraction_visitor { // : public Dummy_complex_visitor<typename EdgeProfile::Vertex_handle> { - public: - // typedef typename ComplexType::GeometryTrait GT; - typedef EdgeProfile Profile; - typedef double FT; - typedef typename Profile::Complex Complex; - typedef Complex ComplexType; - typedef typename ComplexType::Point Point; - - virtual ~Contraction_visitor() { } - - /** - * @brief Called before the edge contraction process starts. - */ - virtual void on_started(ComplexType & complex) { } - - /** - * @brief Called when the algorithm stops. - */ - virtual void on_stop_condition_reached() { } - - /** - * @brief Called during the collecting phase (when a cost is assigned to the edges), for each edge collected. - */ - virtual void on_collected(const Profile &profile, boost::optional< FT > cost) { } - - /** - * @brief Called during the processing phase (when edges are contracted), for each edge that is selected. - */ - virtual void on_selected(const Profile &profile, boost::optional< FT > cost, int initial_count, int current_count) { } - - /** - * @brief Called when an edge is about to be contracted and replaced by a vertex whose position is *placement. - */ - virtual void on_contracting(const Profile &profile, boost::optional< Point > placement) { } - - /** - * @brief Called when after an edge has been contracted onto a new point placement. - * A possibility would to remove popable blockers at this point for instance. - */ - virtual void on_contracted(const Profile &profile, boost::optional< Point > placement) { } - - /** - * @brief Called for each selected edge which cannot be contracted because the ValidContractionPredicate is false - */ - virtual void on_non_valid(const Profile &profile) { } -}; - -} // namespace contraction - -} // namespace Gudhi - -#endif // CONTRACTION_POLICIES_CONTRACTION_VISITOR_H_ diff --git a/include/gudhi/Contraction/policies/Cost_policy.h b/include/gudhi/Contraction/policies/Cost_policy.h deleted file mode 100644 index 04ce36b6..00000000 --- a/include/gudhi/Contraction/policies/Cost_policy.h +++ /dev/null @@ -1,53 +0,0 @@ -/* This file is part of the Gudhi Library. The Gudhi library - * (Geometric Understanding in Higher Dimensions) is a generic C++ - * library for computational topology. - * - * Author(s): David Salinas - * - * Copyright (C) 2014 Inria - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef CONTRACTION_POLICIES_COST_POLICY_H_ -#define CONTRACTION_POLICIES_COST_POLICY_H_ - -#include <boost/optional.hpp> - -namespace Gudhi { - -namespace contraction { - -/** - *@brief Policy to specify the cost of contracting an edge. - *@ingroup contr - */ -template< typename EdgeProfile> -class Cost_policy { - public: - typedef typename EdgeProfile::Point Point; - typedef typename EdgeProfile::Graph_vertex Graph_vertex; - - typedef boost::optional<double> Cost_type; - - virtual Cost_type operator()(const EdgeProfile& profile, const boost::optional<Point>& placement) const = 0; - - virtual ~Cost_policy() { } -}; - -} // namespace contraction - -} // namespace Gudhi - -#endif // CONTRACTION_POLICIES_COST_POLICY_H_ diff --git a/include/gudhi/Contraction/policies/Dummy_valid_contraction.h b/include/gudhi/Contraction/policies/Dummy_valid_contraction.h deleted file mode 100644 index a5567454..00000000 --- a/include/gudhi/Contraction/policies/Dummy_valid_contraction.h +++ /dev/null @@ -1,49 +0,0 @@ -/* This file is part of the Gudhi Library. The Gudhi library - * (Geometric Understanding in Higher Dimensions) is a generic C++ - * library for computational topology. - * - * Author(s): David Salinas - * - * Copyright (C) 2014 Inria - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef CONTRACTION_POLICIES_DUMMY_VALID_CONTRACTION_H_ -#define CONTRACTION_POLICIES_DUMMY_VALID_CONTRACTION_H_ - -#include <gudhi/Contraction/policies/Valid_contraction_policy.h> - -namespace Gudhi { - -namespace contraction { - -/** - *@brief Policy that accept all edge contraction. - */ -template< typename EdgeProfile> -class Dummy_valid_contraction : public Valid_contraction_policy<EdgeProfile> { - public: - typedef typename EdgeProfile::Point Point; - - bool operator()(const EdgeProfile& profile, const boost::optional<Point>& placement) { - return true; - } -}; - -} // namespace contraction - -} // namespace Gudhi - -#endif // CONTRACTION_POLICIES_DUMMY_VALID_CONTRACTION_H_ diff --git a/include/gudhi/Contraction/policies/Edge_length_cost.h b/include/gudhi/Contraction/policies/Edge_length_cost.h deleted file mode 100644 index 1b7a825b..00000000 --- a/include/gudhi/Contraction/policies/Edge_length_cost.h +++ /dev/null @@ -1,56 +0,0 @@ -/* This file is part of the Gudhi Library. The Gudhi library - * (Geometric Understanding in Higher Dimensions) is a generic C++ - * library for computational topology. - * - * Author(s): David Salinas - * - * Copyright (C) 2014 Inria - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef CONTRACTION_POLICIES_EDGE_LENGTH_COST_H_ -#define CONTRACTION_POLICIES_EDGE_LENGTH_COST_H_ - -#include <gudhi/Contraction/policies/Cost_policy.h> - -namespace Gudhi { - -namespace contraction { - -/** - * @brief return a cost corresponding to the squared length of the edge - */ -template< typename EdgeProfile> -class Edge_length_cost : public Cost_policy<EdgeProfile> { - public: - typedef typename Cost_policy<EdgeProfile>::Cost_type Cost_type; - typedef typename EdgeProfile::Point Point; - - Cost_type operator()(const EdgeProfile& profile, const boost::optional<Point>& placement) const override { - double res = 0; - auto p0_coord = profile.p0().begin(); - auto p1_coord = profile.p1().begin(); - for (; p0_coord != profile.p0().end(); p0_coord++, p1_coord++) { - res += (*p0_coord - *p1_coord) * (*p0_coord - *p1_coord); - } - return res; - } -}; - -} // namespace contraction - -} // namespace Gudhi - -#endif // CONTRACTION_POLICIES_EDGE_LENGTH_COST_H_ diff --git a/include/gudhi/Contraction/policies/First_vertex_placement.h b/include/gudhi/Contraction/policies/First_vertex_placement.h deleted file mode 100644 index 0b9f8775..00000000 --- a/include/gudhi/Contraction/policies/First_vertex_placement.h +++ /dev/null @@ -1,52 +0,0 @@ -/* This file is part of the Gudhi Library. The Gudhi library - * (Geometric Understanding in Higher Dimensions) is a generic C++ - * library for computational topology. - * - * Author(s): David Salinas - * - * Copyright (C) 2014 Inria - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef CONTRACTION_POLICIES_FIRST_VERTEX_PLACEMENT_H_ -#define CONTRACTION_POLICIES_FIRST_VERTEX_PLACEMENT_H_ - -#include <gudhi/Contraction/policies/Placement_policy.h> - -namespace Gudhi { - -namespace contraction { - -/** - * @brief Places the contracted point onto the first point of the edge - */ -template< typename EdgeProfile> -class First_vertex_placement : public Placement_policy<EdgeProfile> { - public: - typedef typename EdgeProfile::Point Point; - typedef typename EdgeProfile::Edge_handle Edge_handle; - - typedef typename Placement_policy<EdgeProfile>::Placement_type Placement_type; - - Placement_type operator()(const EdgeProfile& profile) const override { - return Placement_type(profile.p0()); - } -}; - -} // namespace contraction - -} // namespace Gudhi - -#endif // CONTRACTION_POLICIES_FIRST_VERTEX_PLACEMENT_H_ diff --git a/include/gudhi/Contraction/policies/Link_condition_valid_contraction.h b/include/gudhi/Contraction/policies/Link_condition_valid_contraction.h deleted file mode 100644 index 8c869830..00000000 --- a/include/gudhi/Contraction/policies/Link_condition_valid_contraction.h +++ /dev/null @@ -1,56 +0,0 @@ -/* This file is part of the Gudhi Library. The Gudhi library - * (Geometric Understanding in Higher Dimensions) is a generic C++ - * library for computational topology. - * - * Author(s): David Salinas - * - * Copyright (C) 2014 Inria - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef CONTRACTION_POLICIES_LINK_CONDITION_VALID_CONTRACTION_H_ -#define CONTRACTION_POLICIES_LINK_CONDITION_VALID_CONTRACTION_H_ - -#include <gudhi/Contraction/policies/Valid_contraction_policy.h> -#include <gudhi/Debug_utils.h> - - -namespace Gudhi { - -namespace contraction { - -/** - *@brief Policy that only accept edges verifying the link condition (and therefore whose contraction preserving homotopy type). - *@ingroup contr - */ -template< typename EdgeProfile> -class Link_condition_valid_contraction : public Valid_contraction_policy<EdgeProfile> { - public: - typedef typename EdgeProfile::Edge_handle Edge_handle; - typedef typename EdgeProfile::Point Point; - // typedef typename EdgeProfile::Edge_handle Edge_handle; - - bool operator()(const EdgeProfile& profile, const boost::optional<Point>& placement) const override { - Edge_handle edge(profile.edge_handle()); - DBGMSG("Link_condition_valid_contraction:", profile.complex().link_condition(edge)); - return profile.complex().link_condition(edge); - } -}; - -} // namespace contraction - -} // namespace Gudhi - -#endif // CONTRACTION_POLICIES_LINK_CONDITION_VALID_CONTRACTION_H_ diff --git a/include/gudhi/Contraction/policies/Middle_placement.h b/include/gudhi/Contraction/policies/Middle_placement.h deleted file mode 100644 index 0ba23a35..00000000 --- a/include/gudhi/Contraction/policies/Middle_placement.h +++ /dev/null @@ -1,51 +0,0 @@ -/* This file is part of the Gudhi Library. The Gudhi library - * (Geometric Understanding in Higher Dimensions) is a generic C++ - * library for computational topology. - * - * Author(s): David Salinas - * - * Copyright (C) 2014 Inria - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef CONTRACTION_POLICIES_MIDDLE_PLACEMENT_H_ -#define CONTRACTION_POLICIES_MIDDLE_PLACEMENT_H_ - -#include <gudhi/Contraction/policies/Placement_policy.h> - -namespace Gudhi { - -namespace contraction { - -template< typename EdgeProfile> -class Middle_placement : public Placement_policy<EdgeProfile> { - public: - typedef typename EdgeProfile::Point Point; - typedef typename EdgeProfile::Edge_handle Edge_handle; - typedef typename EdgeProfile::Graph_vertex Graph_vertex; - - typedef typename Placement_policy<EdgeProfile>::Placement_type Placement_type; - - Placement_type operator()(const EdgeProfile& profile) const override { - // todo compute the middle - return Placement_type(profile.p0()); - } -}; - -} // namespace contraction - -} // namespace Gudhi - -#endif // CONTRACTION_POLICIES_MIDDLE_PLACEMENT_H_ diff --git a/include/gudhi/Contraction/policies/Placement_policy.h b/include/gudhi/Contraction/policies/Placement_policy.h deleted file mode 100644 index 19509fad..00000000 --- a/include/gudhi/Contraction/policies/Placement_policy.h +++ /dev/null @@ -1,51 +0,0 @@ -/* This file is part of the Gudhi Library. The Gudhi library - * (Geometric Understanding in Higher Dimensions) is a generic C++ - * library for computational topology. - * - * Author(s): David Salinas - * - * Copyright (C) 2014 Inria - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef CONTRACTION_POLICIES_PLACEMENT_POLICY_H_ -#define CONTRACTION_POLICIES_PLACEMENT_POLICY_H_ - -#include <boost/optional.hpp> - -namespace Gudhi { - -namespace contraction { - -/** - *@brief Policy to specify where the merged point had to be placed after an edge contraction. - *@ingroup contr - */ -template< typename EdgeProfile> -class Placement_policy { - public: - typedef typename EdgeProfile::Point Point; - typedef boost::optional<Point> Placement_type; - - virtual Placement_type operator()(const EdgeProfile& profile) const = 0; - - virtual ~Placement_policy() { } -}; - -} // namespace contraction - -} // namespace Gudhi - -#endif // CONTRACTION_POLICIES_PLACEMENT_POLICY_H_ diff --git a/include/gudhi/Contraction/policies/Valid_contraction_policy.h b/include/gudhi/Contraction/policies/Valid_contraction_policy.h deleted file mode 100644 index 8a91f0b5..00000000 --- a/include/gudhi/Contraction/policies/Valid_contraction_policy.h +++ /dev/null @@ -1,51 +0,0 @@ -/* This file is part of the Gudhi Library. The Gudhi library - * (Geometric Understanding in Higher Dimensions) is a generic C++ - * library for computational topology. - * - * Author(s): David Salinas - * - * Copyright (C) 2014 Inria - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef CONTRACTION_POLICIES_VALID_CONTRACTION_POLICY_H_ -#define CONTRACTION_POLICIES_VALID_CONTRACTION_POLICY_H_ - -namespace Gudhi { - -namespace contraction { - -/** - *@brief Policy to specify if an edge contraction is valid or not. - *@ingroup contr - */ -template< typename EdgeProfile> -class Valid_contraction_policy { - public: - typedef typename EdgeProfile::Point Point; - typedef typename EdgeProfile::Edge_handle Edge_handle; - typedef typename EdgeProfile::Graph_vertex Graph_vertex; - - virtual bool operator()(const EdgeProfile& profile, const boost::optional<Point>& placement) const = 0; - - virtual ~Valid_contraction_policy() { } -}; - -} // namespace contraction - -} // namespace Gudhi - - -#endif // CONTRACTION_POLICIES_VALID_CONTRACTION_POLICY_H_ |