00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef GEOS_PLANARGRAPH_EDGE_H
00018 #define GEOS_PLANARGRAPH_EDGE_H
00019
00020 #include <geos/export.h>
00021
00022 #include <geos/planargraph/GraphComponent.h>
00023
00024 #include <vector>
00025 #include <set>
00026 #include <iosfwd>
00027
00028
00029 namespace geos {
00030 namespace planargraph {
00031 class DirectedEdgeStar;
00032 class DirectedEdge;
00033 class Edge;
00034 class Node;
00035 }
00036 }
00037
00038 namespace geos {
00039 namespace planargraph {
00040
00050 class GEOS_DLL Edge: public GraphComponent {
00051
00052 public:
00053
00054 friend std::ostream& operator<< (std::ostream& os, const Node&);
00055
00057 typedef std::set<const Edge *> ConstSet;
00058
00060 typedef std::set<Edge *> NonConstSet;
00061
00063 typedef std::vector<Edge *> NonConstVect;
00064
00066 typedef std::vector<const Edge *> ConstVect;
00067
00068 protected:
00069
00071 std::vector<DirectedEdge*> dirEdge;
00072
00079 public:
00080
00088 Edge(): dirEdge() {}
00089
00096 Edge(DirectedEdge *de0, DirectedEdge *de1)
00097 :
00098 dirEdge()
00099 {
00100 setDirectedEdges(de0, de1);
00101 }
00102
00110 void setDirectedEdges(DirectedEdge *de0, DirectedEdge *de1);
00111
00116 DirectedEdge* getDirEdge(int i);
00117
00123 DirectedEdge* getDirEdge(Node *fromNode);
00124
00129 Node* getOppositeNode(Node *node);
00130 };
00131
00133 std::ostream& operator<<(std::ostream& os, const Edge& n);
00134
00135
00136
00138
00139
00140 }
00141 }
00142
00143 #endif // GEOS_PLANARGRAPH_EDGE_H
00144
00145
00146
00147
00148
00149
00150
00151