GEOS  3.13.0dev
MarkHalfEdge.h
1 /**********************************************************************
2  *
3  * GEOS - Geometry Engine Open Source
4  * http://geos.osgeo.org
5  *
6  * Copyright (C) 2020 Paul Ramsey <pramsey@cleverelephant.ca>
7  *
8  * This is free software; you can redistribute and/or modify it under
9  * the terms of the GNU Lesser General Public Licence as published
10  * by the Free Software Foundation.
11  * See the COPYING file for more information.
12  *
13  **********************************************************************/
14 
15 
16 #pragma once
17 
18 #include <geos/geom/Coordinate.h>
19 
20 #include <geos/export.h>
21 #include <string>
22 #include <cassert>
23 
24 namespace geos {
25 namespace edgegraph { // geos.edgegraph
26 
27 class GEOS_DLL MarkHalfEdge : public HalfEdge {
28 
29 private:
30 
31  bool m_isMarked;
32 
33 public:
34 
40  MarkHalfEdge(const geom::CoordinateXYZM& p_orig) :
41  HalfEdge(p_orig),
42  m_isMarked(false)
43  {};
44 
51  static bool isMarked(HalfEdge* e);
52 
58  static void mark(HalfEdge* e);
59 
66  static void setMark(HalfEdge* e, bool isMarked);
67 
74  static void setMarkBoth(HalfEdge* e, bool isMarked);
75 
81  static void markBoth(HalfEdge* e);
82 
88  bool isMarked() const { return m_isMarked; }
89 
94  void mark() { m_isMarked = true; }
95 
101  void setMark(bool p_isMarked) { m_isMarked = p_isMarked; }
102 
103 };
104 
105 
106 } // namespace geos.edgegraph
107 } // namespace geos
108 
109 
110 
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25