19 #ifndef GEOS_PLANARGRAPH_PLANARGRAPH_H
20 #define GEOS_PLANARGRAPH_PLANARGRAPH_H
22 #include <geos/export.h>
23 #include <geos/planargraph/NodeMap.h>
29 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class
37 namespace planargraph {
45 namespace planargraph {
60 class GEOS_DLL PlanarGraph {
64 std::vector<Edge*> edges;
65 std::vector<DirectedEdge*> dirEdges;
103 dirEdges.push_back(dirEdge);
108 typedef std::vector<Edge*> EdgeContainer;
109 typedef EdgeContainer::iterator EdgeIterator;
129 return nodeMap.find(pt);
136 NodeMap::container::iterator
139 return nodeMap.begin();
142 NodeMap::container::iterator
145 return nodeMap.begin();
148 NodeMap::container::const_iterator
151 return nodeMap.begin();
154 NodeMap::container::iterator
157 return nodeMap.end();
160 NodeMap::container::const_iterator
163 return nodeMap.end();
173 getNodes(std::vector<Node*>& nodes)
175 nodeMap.getNodes(nodes);
186 std::vector<DirectedEdge*>::iterator
189 return dirEdges.begin();
193 std::vector<Edge*>::iterator
196 return edges.begin();
204 std::vector<Edge*>::iterator
207 return edges.begin();
215 std::vector<Edge*>::iterator
240 void remove(
Edge* edge);
258 void remove(
Node* node);
265 std::vector<Node*>* findNodesOfDegree(std::size_t degree);
273 void findNodesOfDegree(std::size_t degree, std::vector<Node*>& to);
283 #endif // GEOS_PLANARGRAPH_PLANARGRAPH_H