#ifndef CGAL_CONSTRAINED_TRIANGULATION_2_H #define CGAL_CONSTRAINED_TRIANGULATION_2_H #include #include #include #include #include #include #include #include #include template < class Gt, class Tds> class CGAL_Constrained_triangulation_2 : public CGAL_Triangulation_2 { public: typedef CGAL_Triangulation_2 Triangulation; typedef CGAL_Constrained_triangulation_2 Constrained_triangulation; typedef pair Constraint; typedef CGAL_Constrained_triangulation_sweep_2 Sweep; CGAL_Constrained_triangulation_2() : Triangulation() { } CGAL_Constrained_triangulation_2(const Gt& gt) : Triangulation(gt) { } CGAL_Constrained_triangulation_2(const CGAL_Constrained_triangulation_2 & ct) : Triangulation(ct) {} CGAL_Constrained_triangulation_2(const Vertex_handle& v, const Gt& gt) : Triangulation(v,gt) {} CGAL_Constrained_triangulation_2(list& lc, const Gt& gt=Gt()) : CGAL_Triangulation_2(gt) { Sweep sweep(lc,gt); CGAL_Triangulation_2 Tr ( sweep.vertex(), gt); swap(Tr); } #ifdef CGAL_CFG_NO_MEMBER_TEMPLATES #if defined(LIST_H) || defined(__SGI_STL_LIST_H) CGAL_Constrained_triangulation_2(list::const_iterator first, list::const_iterator last, Gt& gt=Gt() ) : CGAL_Triangulation_2(gt) { list lc; while(first != last){ lc.push_back(*first); ++first; } Sweep sweep(lc,t); init(sweep.vertex()); CGAL_triangulation_postcondition( is_valid() ); } #endif // LIST_H #if defined(VECTOR_H) || defined(__SGI_STL_VECTOR_H) CGAL_Constrained_triangulation_2(vector::const_iterator first, vector::const_iterator last, Gt& gt=Gt() ) : CGAL_Triangulation_2(gt) { list lc; while(first != last){ lc.push_back(*first); ++first; } Sweep sweep(lc,t); init(sweep.vertex()); CGAL_triangulation_postcondition( is_valid() ); } #endif // VECTOR_H #ifdef ITERATOR_H CGAL_Constrained_triangulation_2(istream_iterator first, istream_iterator last, Gt& gt=Gt() ) : CGAL_Triangulation_2(gt) { list lc; while(first != last){ lc.push_back(*first); ++first; } Sweep sweep(lc,t); init(sweep.vertex()); CGAL_triangulation_postcondition( is_valid() ); } #endif // ITERATOR_H CGAL_Constrained_triangulation_2(Constraint* first, Constraint* last, Gt& gt=Gt() ) : CGAL_Triangulation_2(gt) { list lc; while(first != last){ lc.push_back(*first); ++first; } Sweep sweep(lc,t); init(sweep.vertex()); CGAL_triangulation_postcondition( is_valid() ); } #else template CGAL_Constrained_triangulation_2(InputIterator first, InputIterator last, Gt& gt=Gt() ) : CGAL_Triangulation_2(gt) { list lc; while(first != last){ lc.push_back(*first++); } Sweep sweep(lc,t); init(sweep.vertex()); CGAL_triangulation_postcondition( is_valid() ); } #endif // CGAL_CFG_NO_MEMBER_TEMPLATES // private: // private part of class CGAL_Constrained_triangulation_2 }; template < class Gt, class Tds > ostream & operator<<(ostream& os, const CGAL_Constrained_triangulation_2 &Ct) { return os << (const CGAL_Triangulation_2&)Ct; } #endif CGAL_CONSTRAINED_TRIANGULATION_2_H