diff --git a/Stream_support/include/CGAL/IO/Generic_writer.h b/Stream_support/include/CGAL/IO/Generic_writer.h index 58014bc3f64..76a324396b3 100644 --- a/Stream_support/include/CGAL/IO/Generic_writer.h +++ b/Stream_support/include/CGAL/IO/Generic_writer.h @@ -30,29 +30,36 @@ template class Generic_writer { public: - Generic_writer(Stream& out) : m_out(out) { } - Generic_writer(Stream& out, FileWriter writer) : m_out(out), m_writer(writer) { } + Generic_writer(Stream& os) : m_os(os) { } + Generic_writer(Stream& os, FileWriter writer) : m_os(os), m_writer(writer) { } - template - bool operator()(const PointRange_3& points, - const PolygonRange_3& polygons) + template + bool operator()(const PointRange& points, + const PolygonRange& polygons, + const NamedParameters& np) { - typedef typename PointRange_3::value_type Point_3; - typedef typename PolygonRange_3::value_type Polygon_3; - if(m_out.fail()) + 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; - m_writer.write_header(m_out, points.size(), 0, polygons.size()); + m_writer.write_header(m_os, points.size(), 0, polygons.size()); for(std::size_t i=0, end=points.size(); i::reference p = get(point_map, points[i]); m_writer.write_vertex(p.x(), p.y(), p.z()); } m_writer.write_facet_header(); for(std::size_t i=0, end=polygons.size(); i + bool operator()(const PointRange& points, + const PolygonRange& polygons) + { + return this->operator()(points, polygons, parameters::all_default()); } protected: - Stream& m_out; + Stream& m_os; FileWriter m_writer; };