GEOS  3.3.3
planargraph/Edge.h
1 /**********************************************************************
2  * $Id: Edge.h 3255 2011-03-01 17:56:10Z mloskot $
3  *
4  * GEOS - Geometry Engine Open Source
5  * http://geos.refractions.net
6  *
7  * Copyright (C) 2001-2002 Vivid Solutions Inc.
8  * Copyright (C) 2005-2006 Refractions Research Inc.
9  *
10  * This is free software; you can redistribute and/or modify it under
11  * the terms of the GNU Lesser General Public Licence as published
12  * by the Free Software Foundation.
13  * See the COPYING file for more information.
14  *
15  **********************************************************************/
16 
17 #ifndef GEOS_PLANARGRAPH_EDGE_H
18 #define GEOS_PLANARGRAPH_EDGE_H
19 
20 #include <geos/export.h>
21 
22 #include <geos/planargraph/GraphComponent.h> // for inheritance
23 
24 #include <vector> // for typedefs
25 #include <set> // for typedefs
26 #include <iosfwd> // ostream
27 
28 #ifdef _MSC_VER
29 #pragma warning(push)
30 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
31 #endif
32 
33 // Forward declarations
34 namespace geos {
35  namespace planargraph {
36  class DirectedEdgeStar;
37  class DirectedEdge;
38  class Edge;
39  class Node;
40  }
41 }
42 
43 namespace geos {
44 namespace planargraph { // geos.planargraph
45 
55 class GEOS_DLL Edge: public GraphComponent {
56 
57 public:
58 
59  friend std::ostream& operator<< (std::ostream& os, const Node&);
60 
62  typedef std::set<const Edge *> ConstSet;
63 
65  typedef std::set<Edge *> NonConstSet;
66 
68  typedef std::vector<Edge *> NonConstVect;
69 
71  typedef std::vector<const Edge *> ConstVect;
72 
73 protected:
74 
76  std::vector<DirectedEdge*> dirEdge;
77 
84 public:
85 
93  Edge(): dirEdge() {}
94 
102  :
103  dirEdge()
104  {
105  setDirectedEdges(de0, de1);
106  }
107 
115  void setDirectedEdges(DirectedEdge *de0, DirectedEdge *de1);
116 
121  DirectedEdge* getDirEdge(int i);
122 
128  DirectedEdge* getDirEdge(Node *fromNode);
129 
134  Node* getOppositeNode(Node *node);
135 };
136 
138 std::ostream& operator<<(std::ostream& os, const Edge& n);
139 
141 //typedef Edge planarEdge;
142 
143 } // namespace geos::planargraph
144 } // namespace geos
145 
146 #ifdef _MSC_VER
147 #pragma warning(pop)
148 #endif
149 
150 #endif // GEOS_PLANARGRAPH_EDGE_H
151 
152 /**********************************************************************
153  * $Log$
154  * Revision 1.1 2006/03/21 21:42:54 strk
155  * planargraph.h header split, planargraph:: classes renamed to match JTS symbols
156  *
157  **********************************************************************/
158