#ifndef CGAL_POINT_MARK_BOUNDARY_H #define CGAL_POINT_MARK_BOUNDARY_H namespace CGAL { template class PointMarkBoundary { typedef typename K::Point_3 Point_3; typedef PointMarkBoundary Self; Point_3 p; bool b; bool boundary; public: PointMark() : p(0,0,0), b(true), boundary(true) {} PointMark(const Self& pm) { p = pm.p; b = pm.b; } PointMark(const Point_3& p_, bool b_, bool boundary_) : p(p_), b(b_) boundary(boundary_) {} Self& operator=(const Self& pm) { p = pm.p; b = pm.b; boundary = pm.boundary; return *this; } Self& operator+=(const Self& pm) { p = p + (pm.p - CGAL::ORIGIN); b = b && pm.b; boundary = boundary && pm.boundary; return *this; } Point_3 point() const { return p; } bool boolean() const { return b; } bool on_boundary() const { return boundary; } void set_boolean(bool b_) { b = b_; } void set_boundary(bool b_) { boundary = b; } }; template std::ostream& operator<<(std::ostream& out, const PointMark& pm) { out << pm.point() << "/" << pm.boolean(); return out; } template bool operator==(const PointMark& pm1, const PointMark& pm2) { return pm1.point() == pm2.point() && pm1.boolean() == pm2.boolean(); } template const PointMark operator+(const PointMark& pm1, const PointMark& pm2) { PointMark ret(pm1); ret += pm2; return ret; } } //namespace CGAL #endif