// Copyright (c) 1997 // Utrecht University (The Netherlands), // ETH Zurich (Switzerland), // INRIA Sophia-Antipolis (France), // Max-Planck-Institute Saarbruecken (Germany), // and Tel-Aviv University (Israel). All rights reserved. // // This file is part of CGAL (www.cgal.org) // // $URL$ // $Id$ // SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial // // // Author(s) : Lutz Kettner #ifndef CGAL_IO_GENERIC_WRITER_H #define CGAL_IO_GENERIC_WRITER_H #include #include #include #include #include namespace CGAL { template class Generic_writer { public: Generic_writer(Stream& os) : m_os(os) { } Generic_writer(Stream& os, FileWriter writer) : m_os(os), m_writer(writer) { } template bool operator()(const PointRange& points, const PolygonRange& polygons, const NamedParameters& np = parameters::default_values()) { typedef typename boost::range_value::type Poly; using parameters::choose_parameter; using parameters::get_parameter; typedef typename CGAL::GetPointMap::type PointMap; PointMap point_map = choose_parameter(get_parameter(np, internal_np::point_map)); if(!m_os.good()) return false; set_stream_precision_from_NP(m_os, np); m_writer.write_header(m_os, points.size(), 0, polygons.size()); for(std::size_t i=0, end=points.size(); i::value_type& p = get(point_map, points[i]); m_writer.write_vertex(to_double(p.x()), to_double(p.y()), to_double(p.z())); } m_writer.write_facet_header(); for(std::size_t i=0, end=polygons.size(); i