GEOS  3.8.0dev
planargraph/Edge.h
1 /**********************************************************************
2  *
3  * GEOS - Geometry Engine Open Source
4  * http://geos.osgeo.org
5  *
6  * Copyright (C) 2001-2002 Vivid Solutions Inc.
7  * Copyright (C) 2005-2006 Refractions Research Inc.
8  *
9  * This is free software; you can redistribute and/or modify it under
10  * the terms of the GNU Lesser General Public Licence as published
11  * by the Free Software Foundation.
12  * See the COPYING file for more information.
13  *
14  **********************************************************************/
15 
16 #ifndef GEOS_PLANARGRAPH_EDGE_H
17 #define GEOS_PLANARGRAPH_EDGE_H
18 
19 #include <geos/export.h>
20 
21 #include <geos/planargraph/GraphComponent.h> // for inheritance
22 
23 #include <vector> // for typedefs
24 #include <set> // for typedefs
25 #include <iosfwd> // ostream
26 
27 #ifdef _MSC_VER
28 #pragma warning(push)
29 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
30 #endif
31 
32 // Forward declarations
33 namespace geos {
34 namespace planargraph {
35 class DirectedEdgeStar;
36 class DirectedEdge;
37 class Edge;
38 class Node;
39 }
40 }
41 
42 namespace geos {
43 namespace planargraph { // geos.planargraph
44 
54 class GEOS_DLL Edge: public GraphComponent {
55 
56 public:
57 
58  friend std::ostream& operator<< (std::ostream& os, const Node&);
59 
61  typedef std::set<const Edge*> ConstSet;
62 
64  typedef std::set<Edge*> NonConstSet;
65 
67  typedef std::vector<Edge*> NonConstVect;
68 
70  typedef std::vector<const Edge*> ConstVect;
71 
72 protected:
73 
75  std::vector<DirectedEdge*> dirEdge;
76 
77 public:
78 
85  Edge(): dirEdge() {}
86 
94  :
95  dirEdge()
96  {
97  setDirectedEdges(de0, de1);
98  }
99 
107  void setDirectedEdges(DirectedEdge* de0, DirectedEdge* de1);
108 
113  DirectedEdge* getDirEdge(int i);
114 
120  DirectedEdge* getDirEdge(Node* fromNode);
121 
126  Node* getOppositeNode(Node* node);
127 };
128 
130 std::ostream& operator<<(std::ostream& os, const Edge& n);
131 
133 //typedef Edge planarEdge;
134 
135 } // namespace geos::planargraph
136 } // namespace geos
137 
138 #ifdef _MSC_VER
139 #pragma warning(pop)
140 #endif
141 
142 #endif // GEOS_PLANARGRAPH_EDGE_H
Represents a directed edge in a PlanarGraph.
Definition: planargraph/DirectedEdge.h:46
std::set< const Edge * > ConstSet
Set of const Edges pointers.
Definition: planargraph/Edge.h:61
std::vector< const Edge * > ConstVect
Vector of const Edges pointers.
Definition: planargraph/Edge.h:70
std::set< Edge * > NonConstSet
Set of non-const Edges pointers.
Definition: planargraph/Edge.h:64
Edge(DirectedEdge *de0, DirectedEdge *de1)
Constructs an Edge initialized with the given DirectedEdges.
Definition: planargraph/Edge.h:93
std::vector< DirectedEdge * > dirEdge
The two DirectedEdges associated with this Edge.
Definition: planargraph/Edge.h:75
Edge()
Constructs a Edge whose DirectedEdges are not yet set.
Definition: planargraph/Edge.h:85
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:25
Represents an undirected edge of a PlanarGraph.
Definition: planargraph/Edge.h:54
The base class for all graph component classes.
Definition: planargraph/GraphComponent.h:46
A node in a PlanarGraph is a location where 0 or more Edge meet.
Definition: planargraph/Node.h:45
std::ostream & operator<<(std::ostream &, const DirectedEdge &)
Output operator.
std::vector< Edge * > NonConstVect
Vector of non-const Edges pointers.
Definition: planargraph/Edge.h:67