56 @end deftp |
56 @end deftp |
57 |
57 |
58 @deftp {Type} Graph::EdgeIt |
58 @deftp {Type} Graph::EdgeIt |
59 @deftpx {Type} Graph::InEdgeIt |
59 @deftpx {Type} Graph::InEdgeIt |
60 @deftpx {Type} Graph::OutEdgeIt |
60 @deftpx {Type} Graph::OutEdgeIt |
61 @deftpx {Type} Graph::BiEdgeIt |
61 @deftpx {Type} Graph::EachEdgeIt |
62 @deftpx {Type} Graph::SymEdgeIt |
62 @c @deftpx {Type} Graph::BiEdgeIt |
|
63 @c @deftpx {Type} Graph::SymEdgeIt |
63 Each of these types points an edge uniquely. The difference between the |
64 Each of these types points an edge uniquely. The difference between the |
64 @code{EdgeIt} and the |
65 @code{EdgeIt} and the |
65 @c @mref{Graph-NodeIterator,@code{EdgeIterator}} |
66 @c @mref{Graph-NodeIterator,@code{EdgeIterator}} |
66 @mref{Graph-NodeIterator , EdgeIterator} |
67 @mref{Graph-NodeIterator , EdgeIterator} |
67 series is that |
68 series is that |
68 @code{EdgeIt} requires the graph structure itself for most of the |
69 @code{EdgeIt} requires the graph structure itself for most of the |
69 operations. |
70 operations. |
70 @end deftp |
71 @end deftp |
71 |
72 |
72 @anchor{Graph-EdgeIterator} |
73 @anchor{Graph-EdgeIterator} |
73 @deftp {Type} Graph::EdgeIterator |
74 @c @deftp {Type} Graph::EdgeIterator |
74 @deftpx {Type} Graph::InEdgeIterator |
75 @c @deftpx {Type} Graph::InEdgeIterator |
75 @deftpx {Type} Graph::OutEdgeIterator |
76 @c @deftpx {Type} Graph::OutEdgeIterator |
76 @deftpx {Type} Graph::BiEdgeIterator |
77 @c @deftpx {Type} Graph::BiEdgeIterator |
77 @deftpx {Type} Graph::SymEdgeIterator |
78 @c @deftpx {Type} Graph::SymEdgeIterator |
78 @deftpx {Type} Graph::EachEdgeIterator |
79 @c @deftpx {Type} Graph::EachEdgeIterator |
79 Each of these types points an edge uniquely. The difference between the |
80 @c Each of these types points an edge uniquely. The difference between the |
80 @code{EdgeIt} and the @code{EdgeIterator} series is that |
81 @c @code{EdgeIt} and the @code{EdgeIterator} series is that |
81 @code{EdgeIt} requires the graph structure itself for most of the |
82 @c @code{EdgeIt} requires the graph structure itself for most of the |
82 operations. |
83 @c operations. |
83 |
84 |
84 For the @code{EdgeIterator} types you can use operator @code{++} |
85 @c For the @code{EdgeIterator} types you can use operator @code{++} |
85 (both the prefix and the posfix one) to obtain the next edge. |
86 @c (both the prefix and the posfix one) to obtain the next edge. |
86 @end deftp |
87 @c @end deftp |
87 |
88 |
88 @deftp {Type} Graph::NodeMap |
89 @deftp {Type} Graph::NodeMap<typename T> |
89 @deftpx {Type} Graph::EdgeMap |
90 @deftpx {Type} Graph::EdgeMap<typename T> |
90 There are the default property maps for the edges and the nodes. |
91 There are the default property maps for the edges and the nodes. |
91 @end deftp |
92 @end deftp |
92 |
93 |
|
94 @deftp {Type} Graph::DynNodeMap<typename T> |
|
95 @deftpx {Type} Graph::DynEdgeMap<typename T> |
|
96 There are the default @emph{dynamic} property maps for the edges and the nodes. |
|
97 @end deftp |
93 |
98 |
94 @subsection Member Functions |
99 @subsection Member Functions |
95 |
100 |
96 @subsubsection Constructors |
101 @subsubsection Constructors |
97 |
|
98 |
102 |
99 @deftypefun { } Graph::Graph () |
103 @deftypefun { } Graph::Graph () |
100 The default constructor. |
104 The default constructor. |
101 @end deftypefun |
105 @end deftypefun |
102 |
106 |
103 @c @deftypefun { } Graph::Graph (Graph@tie{}&) |
107 @c @deftypefun { } Graph::Graph (Graph@tie{}&) |
104 @deftypefun { } Graph::Graph (Graph &) |
108 @deftypefun { } Graph::Graph (Graph &) |
105 The copy constructor. Not yet implemented. |
109 The copy constructor. |
106 @end deftypefun |
110 @end deftypefun |
107 |
111 |
108 @subsubsection Graph Maintenence Operations |
112 @subsubsection Graph Maintenence Operations |
109 |
113 |
110 @deftypefun NodeIterator Graph::addNode () |
114 @deftypefun NodeIt Graph::addNode () |
111 Adds a new node to the graph and returns a @code{NodeIterator} pointing to it. |
115 Adds a new node to the graph and returns a @code{NodeIt} pointing to it. |
112 @end deftypefun |
116 @end deftypefun |
113 |
117 |
114 @deftypefun EdgeIterator Graph::addEdge (@w{const @mref{Graph-NodeIterator,NodeIterator} @var{from}}, @w{const @mref{Graph-NodeIterator,NodeIterator} @var{to}}) |
118 @deftypefun EdgeIt Graph::addEdge (@w{const @mref{Graph-NodeIterator,NodeIt} @var{from}}, @w{const @mref{Graph-NodeIterator,NodeIt} @var{to}}) |
115 Adds a new edge with tail @var{from} and head @var{to} to the graph |
119 Adds a new edge with tail @var{from} and head @var{to} to the graph |
116 and returns an @code{EdgeIterator} pointing to it. |
120 and returns an @code{EdgeIt} pointing to it. |
117 @end deftypefun |
121 @end deftypefun |
118 |
122 |
119 @deftypefun void Graph::delete (@w{const @mref{Graph-NodeIterator,NodeIterator} @var{n}}) |
123 @deftypefun void Graph::delete (@w{const @mref{Graph-NodeIterator,NodeIt} @var{n}}) |
120 Deletes the node @var{n}. It also deletes the adjacent edges. |
124 Deletes the node @var{n}. It also deletes the adjacent edges. |
121 @end deftypefun |
125 @end deftypefun |
122 |
126 |
123 @deftypefun void Graph::delete (@w{const @mref{Graph-EdgeIterator,EdgeIterator} @var{e}}) |
127 @deftypefun void Graph::delete (@w{const @mref{Graph-EdgeIterator,EdgeIt} @var{e}}) |
124 Deletes the edge @var{n}. |
128 Deletes the edge @var{n}. |
125 @end deftypefun |
129 @end deftypefun |
126 |
130 |
127 @deftypefun void Graph::clean () |
131 @deftypefun void Graph::clear () |
128 Deletes all edges and nodes from the graph. |
132 Deletes all edges and nodes from the graph. |
129 @end deftypefun |
133 @end deftypefun |
130 |
134 |
131 @deftypefun int Graph::nodeNum () |
135 @deftypefun int Graph::nodeNum () |
132 Returns the number of the nodes in the graph. |
136 Returns the number of the nodes in the graph. |
|
137 ??? Is it necessary??? |
133 @end deftypefun |
138 @end deftypefun |
134 |
139 |
135 @subsubsection NodeIt Operations |
140 @subsubsection NodeIt Operations |
136 |
141 |
137 @deftypefun NodeIt Graph::getFirst (NodeIt &@var{n}) |
142 @deftypefun NodeIt Graph::getFirst (NodeIt &@var{n}) const |
138 @deftypefunx NodeIt Graph::next (const NodeIt @var{n}) |
143 @deftypefunx NodeIt Graph::getNext (NodeIt @var{n}) const |
139 @deftypefunx {NodeIt &} Graph::goNext (NodeIt &@var{n}) |
144 @deftypefunx {NodeIt &} Graph::next (NodeIt &@var{n}) |
140 The nodes in the graph forms a list. @code{GetFirst(n)} sets @var{n} to |
145 The nodes in the graph forms a list. @code{getFirst(n)} sets @var{n} to |
141 be the first node. @code{next(n)} gives back the subsequent |
146 be the first node. @code{getNext(n)} gives back the subsequent |
142 node. @code{Next(n)} is equivalent to @code{n=Next(n)}, though it |
147 node. @code{next(n)} is equivalent to @code{n=getNext(n)}, though it |
143 might be faster. ??? What should be the return value ??? |
148 might be faster. ??? What should be the return value ??? |
144 @end deftypefun |
149 @end deftypefun |
145 |
150 |
146 @deftypefun bool Graph::valid (NodeIt &@var{e}) |
151 @deftypefun bool Graph::valid (NodeIt &@var{e}) |
147 @deftypefunx bool NodeIt::valid () |
152 @c @deftypefunx bool NodeIt::valid () |
148 These functions check if and NodeIt is valid or not. |
153 These functions check if and NodeIt is valid or not. |
149 ??? Which one should be implemented ??? |
154 @c ??? Which one should be implemented ??? |
150 @end deftypefun |
155 @end deftypefun |
151 |
156 |
152 @subsubsection EdgeIt Operations |
157 @subsubsection EdgeIt Operations |
153 |
158 |
154 @deftypefun EachEdgeIt Graph::getFirst (const EachEdgeIt & @var{e}) |
159 @deftypefun EachEdgeIt Graph::getFirst (const EachEdgeIt & @var{e}) const |
155 @deftypefunx EachEdgeIt Graph::next (const EachEdgeIt @var{n}) |
160 @deftypefunx EachEdgeIt Graph::getNext (EachEdgeIt @var{n}) const |
156 @deftypefunx {EachEdgeIt &} Graph::goNext (EachEdgeIt &@var{n}) |
161 @deftypefunx {EachEdgeIt &} Graph::next (EachEdgeIt &@var{n}) |
157 With these functions you can go though all the edges of the graph. |
162 With these functions you can go though all the edges of the graph. |
158 ??? What should be the return value ??? |
163 @c ??? What should be the return value ??? |
159 @end deftypefun |
164 @end deftypefun |
160 |
165 |
161 @deftypefun InEdgeIt Graph::getFirst (const InEdgeIt & @var{e}, const NodeIt @var{n}) |
166 @deftypefun InEdgeIt &Graph::getFirst (InEdgeIt & @var{e}, const NodeIt @var{n}) |
162 @deftypefunx OutEdgeIt Graph::getFirst (const OutEdgeIt & @var{e}, const NodeIt @var{n}) |
167 @deftypefunx OutEdgeIt &Graph::getFirst (OutEdgeIt & @var{e}, const NodeIt @var{n}) |
163 @deftypefunx SymEdgeIt Graph::getFirst (const SymEdgeIt & @var{e}, const NodeIt @var{n}) |
168 @c @deftypefunx SymEdgeIt &Graph::getFirst (SymEdgeIt & @var{e}, const NodeIt @var{n}) |
164 The edges leaving from, arriving at or adjacent with a node forms a |
169 The edges leaving from |
|
170 or |
|
171 arriving at |
|
172 @c or adjacent with |
|
173 a node forms a |
165 list. These functions give back the first elements of these |
174 list. These functions give back the first elements of these |
166 lists. The exact behavior depends on the type of @var{e}. |
175 lists. The exact behavior depends on the type of @var{e}. |
167 |
176 |
168 If @var{e} is an @code{InEdgeIt} or an @code{OutEdgeIt} then |
177 If @var{e} is an @code{InEdgeIt} or an @code{OutEdgeIt} then |
169 @code{getFirst} sets @var{e} to be the first incoming or outgoing edge |
178 @code{getFirst} sets @var{e} to be the first incoming or outgoing edge |
170 of the node @var{n}, respectively. |
179 of the node @var{n}, respectively. |
171 |
180 |
172 If @var{e} is a @code{SymEdgeIt} then |
181 @c If @var{e} is a @code{SymEdgeIt} then |
173 @code{getFirst} sets @var{e} to be the first incoming if there exists one |
182 @c @code{getFirst} sets @var{e} to be the first incoming if there exists one |
174 otherwise the first outgoing edge. |
183 @c otherwise the first outgoing edge. |
175 |
184 |
176 If there are no such edges, @var{e} will be invalid. |
185 If there are no such edges, @var{e} will be invalid. |
177 |
186 |
178 @end deftypefun |
187 @end deftypefun |
179 |
188 |