//======================================================================= // Copyright 1997, 1998, 1999, 2000 University of Notre Dame. // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek // // This file is part of the Boost Graph Library // // You should have received a copy of the License Agreement for the // Boost Graph Library along with the software; see the file LICENSE. // If not, contact Office of Research, University of Notre Dame, Notre // Dame, IN 46556. // // Permission to modify the code and to distribute modified code is // granted, provided the text of this NOTICE is retained, a notice that // the code was modified is included with the above COPYRIGHT NOTICE and // with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE // file is distributed with the modified code. // // LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. // By way of example, but not limitation, Licensor MAKES NO // REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY // PARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS // OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS // OR OTHER RIGHTS. //======================================================================= // Copyright (c) 2005, 2006 Fernando Luis Cacciola Carballal. All rights reserved. // // This file is part of CGAL (www.cgal.org); you may redistribute it under // the terms of the Q Public License version 1.0. // See the file LICENSE.QPL distributed with CGAL. // // 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: svn+ssh://fcacciola@scm.gforge.inria.fr/svn/cgal/trunk/Surface_mesh_simplification/include/CGAL/Surface_mesh_simplification/edge_collapse.h $ // $Id: edge_collapse.h 34614 2006-09-29 17:04:08Z fcacciola $ // // Author(s) : Fernando Cacciola // //======================================================================= #ifndef CGAL_BOOST_GRAPH_NAMED_FUNCTION_PARAMS_H #define CGAL_BOOST_GRAPH_NAMED_FUNCTION_PARAMS_H #include #include #include CGAL_BEGIN_NAMESPACE enum vertex_is_fixed_t { vertex_is_fixed } ; enum set_cache_policy_t { set_cache_policy } ; enum get_cost_policy_t { get_cost_policy } ; enum get_cost_policy_params_t { get_cost_policy_params } ; enum get_placement_policy_t { get_placement_policy } ; enum get_placement_policy_params_t { get_placement_policy_params } ; template struct cgal_bgl_named_params : public Base { typedef cgal_bgl_named_params self; typedef Base next_type; typedef Tag tag_type; typedef T value_type; cgal_bgl_named_params() { } cgal_bgl_named_params(T v) : m_value(v) { } cgal_bgl_named_params(T v, const Base& b) : Base(b), m_value(v) { } T m_value; template cgal_bgl_named_params vertex_index_map(const IndexMap& p) const { typedef cgal_bgl_named_params Params; return Params(p, *this); } template cgal_bgl_named_params vertex_point_map(const PointMap& p) const { typedef cgal_bgl_named_params Params; return Params(p, *this); } template cgal_bgl_named_params vertex_is_fixed_map(const IsFixedMap& p) const { typedef cgal_bgl_named_params Params; return Params(p, *this); } template cgal_bgl_named_params edge_index_map(const IndexMap& p) const { typedef cgal_bgl_named_params Params; return Params(p, *this); } template cgal_bgl_named_params edge_is_border_map(const IsBorderMap& p) const { typedef cgal_bgl_named_params Params; return Params(p, *this); } template cgal_bgl_named_params visitor(const Visitor& p) const { typedef cgal_bgl_named_params Params; return Params(p, *this); } template cgal_bgl_named_params set_cache(const SetCache& p) const { typedef cgal_bgl_named_params Params; return Params(p, *this); } template cgal_bgl_named_params get_cost(const GetCost& p) const { typedef cgal_bgl_named_params Params; return Params(p, *this); } template cgal_bgl_named_params get_cost_params(const GetCostParams& p) const { typedef cgal_bgl_named_params Params; return Params(p, *this); } template cgal_bgl_named_params get_placement(const GetPlacement& p) const { typedef cgal_bgl_named_params Params; return Params(p, *this); } template cgal_bgl_named_params get_placement_params(const GetPlacementParams& p) const { typedef cgal_bgl_named_params Params; return Params(p, *this); } }; template cgal_bgl_named_params vertex_index_map(IndexMap const& p) { typedef cgal_bgl_named_params Params; return Params(p); } template cgal_bgl_named_params vertex_point_map(PointMap const& p) { typedef cgal_bgl_named_params Params; return Params(p); } template cgal_bgl_named_params vertex_is_fixed_map(IsFixedMap const& p) { typedef cgal_bgl_named_params Params; return Params(p); } template cgal_bgl_named_params edge_index_map(IndexMap const& pmap) { typedef cgal_bgl_named_params Params; return Params(pmap); } template cgal_bgl_named_params edge_is_border_map(IsBorderMap const& p) { typedef cgal_bgl_named_params Params; return Params(p); } template cgal_bgl_named_params visitor(const Visitor& p) { typedef cgal_bgl_named_params Params; return Params(p); } template cgal_bgl_named_params set_cache(const SetCache& p) { typedef cgal_bgl_named_params Params; return Params(p); } template cgal_bgl_named_params get_cost(const GetCost& p) { typedef cgal_bgl_named_params Params; return Params(p); } template cgal_bgl_named_params get_cost_params(const GetCostParams& p) { typedef cgal_bgl_named_params Params; return Params(p); } template cgal_bgl_named_params get_placement(const GetPlacement& p) { typedef cgal_bgl_named_params Params; return Params(p); } template cgal_bgl_named_params get_placement_params(const GetPlacementParams& p) { typedef cgal_bgl_named_params Params; return Params(p); } template inline typename boost::property_value< cgal_bgl_named_params, Tag2>::type get_param(const cgal_bgl_named_params& p, Tag2 tag2) { enum { match = boost::detail::same_property::value }; typedef typename boost::property_value< cgal_bgl_named_params, Tag2>::type T2; T2* t2 = 0; typedef boost::detail::property_value_dispatch Dispatcher; return Dispatcher::const_get_value(p, t2, tag2); } CGAL_END_NAMESPACE #endif // CGAL_BOOST_GRAPH_NAMED_FUNCTION_PARAMS_HPP