cgal/Kinetic_space_partition/include/CGAL/KSP_2/Meta_vertex.h

70 lines
1.4 KiB
C++

// Copyright (c) 2019 GeometryFactory Sarl (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).
//
// $URL$
// $Id$
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
//
//
// Author(s) : Simon Giraudot
#ifndef CGAL_KSP_2_META_VERTEX_H
#define CGAL_KSP_2_META_VERTEX_H
#include <CGAL/license/Kinetic_space_partition.h>
#include <CGAL/KSP/utils.h>
#include <set>
namespace CGAL {
namespace KSP_2 {
namespace internal {
template <typename Point_2>
class Meta_vertex
{
private:
Point_2 m_point;
std::set<std::size_t> m_support_lines_idx;
std::set<std::size_t> m_deadends;
public:
Meta_vertex() { }
Meta_vertex(const Point_2& point) : m_point(point) { }
const Point_2& point() const { return m_point; }
const std::set<std::size_t>& support_lines_idx() const { return m_support_lines_idx; }
std::set<std::size_t>& support_lines_idx() { return m_support_lines_idx; }
void make_deadend_of(std::size_t support_line_idx)
{
m_deadends.insert(support_line_idx);
}
bool is_deadend_of(std::size_t support_line_idx) const
{
return m_deadends.find(support_line_idx) != m_deadends.end();
}
void make_no_longer_deadend_of(std::size_t support_line_idx)
{
m_deadends.erase(support_line_idx);
}
};
} // namespace internal
} // namespace KSP_2
} // namespace CGAL
#endif // CGAL_KSP_2_META_VERTEX_H