diff --git a/Straight_skeleton_2/doc/Straight_skeleton_2/CGAL/arrange_offset_polygons_2.h b/Straight_skeleton_2/doc/Straight_skeleton_2/CGAL/arrange_offset_polygons_2.h index 72bc26180ec..3d327857972 100644 --- a/Straight_skeleton_2/doc/Straight_skeleton_2/CGAL/arrange_offset_polygons_2.h +++ b/Straight_skeleton_2/doc/Straight_skeleton_2/CGAL/arrange_offset_polygons_2.h @@ -21,13 +21,13 @@ The set of input polygons are unique and interior disjoint. That is, given disti bounded or unbounded side of `Q` (but not both). \tparam OutputPolygonWithHolesPtrIterator must be an output iterator whose `value_type` is a smart pointer (such as `boost::shared_ptr`) whose `element_type` is `Polygon_with_holes_2`. - +\return `true` if no error was encountered, and `false` otherwise. \sa `create_exterior_straight_skeleton_2()` \sa `Straight_skeleton_builder_2` */ template -void arrange_offset_polygons_2 ( InputPolygonPtrIterator begin +bool arrange_offset_polygons_2 ( InputPolygonPtrIterator begin , InputPolygonPtrIterator end , OutputPolygonWithHolesPtrIterator out , K const& k diff --git a/Straight_skeleton_2/include/CGAL/arrange_offset_polygons_2.h b/Straight_skeleton_2/include/CGAL/arrange_offset_polygons_2.h index fa86f4a2a15..31a456c7aac 100644 --- a/Straight_skeleton_2/include/CGAL/arrange_offset_polygons_2.h +++ b/Straight_skeleton_2/include/CGAL/arrange_offset_polygons_2.h @@ -39,7 +39,7 @@ namespace CGAL { // Every hole is contained in one and only one outer polygon // template -void arrange_offset_polygons_2 ( InputPolygonPtrIterator aBegin +bool arrange_offset_polygons_2 ( InputPolygonPtrIterator aBegin , InputPolygonPtrIterator aEnd , OutputPolygonWithHolesPtrIterator rOut , K const& @@ -95,25 +95,36 @@ void arrange_offset_polygons_2 ( InputPolygonPtrIterator aBegin lParent = lOuter ; } - CGAL_assertion(lParent != NULL); + if (lParent == NULL) + return false; lParent->add_hole(*lPoly); } } + return true; } template std::vector< boost::shared_ptr< Polygon_with_holes_2 > > inline -arrange_offset_polygons_2 ( std::vector< boost::shared_ptr< Polygon_2 > > const& aPolygons ) +arrange_offset_polygons_2 ( std::vector< boost::shared_ptr< Polygon_2 > > const& aPolygons, bool& no_error) { std::vector< boost::shared_ptr< Polygon_with_holes_2 > > rResult ; - arrange_offset_polygons_2(aPolygons.begin(), aPolygons.end(), std::back_inserter(rResult), K() ) ; + no_error = arrange_offset_polygons_2(aPolygons.begin(), aPolygons.end(), std::back_inserter(rResult), K() ) ; return rResult ; } +template +std::vector< boost::shared_ptr< Polygon_with_holes_2 > > +inline +arrange_offset_polygons_2 ( std::vector< boost::shared_ptr< Polygon_2 > > const& aPolygons) +{ + bool no_error; + return arrange_offset_polygons_2(aPolygons, no_error); +} + } // end namespace CGAL