equal
deleted
inserted
replaced
25 |
25 |
26 #include <vector> |
26 #include <vector> |
27 |
27 |
28 #include <lemon/invalid.h> |
28 #include <lemon/invalid.h> |
29 |
29 |
30 #include <lemon/bits/clearable_graph_extender.h> |
|
31 #include <lemon/bits/extendable_graph_extender.h> |
|
32 #include <lemon/bits/iterable_graph_extender.h> |
|
33 #include <lemon/bits/alteration_notifier.h> |
|
34 #include <lemon/bits/default_map.h> |
|
35 #include <lemon/bits/graph_extender.h> |
30 #include <lemon/bits/graph_extender.h> |
36 |
31 |
37 #include <lemon/utility.h> |
32 #include <lemon/utility.h> |
38 #include <lemon/error.h> |
33 #include <lemon/error.h> |
|
34 |
|
35 #include <lemon/bits/graph_extender.h> |
39 |
36 |
40 namespace lemon { |
37 namespace lemon { |
41 |
38 |
42 class SmartGraph; |
39 class SmartGraph; |
43 ///Base of SmartGraph |
40 ///Base of SmartGraph |
220 return b; |
217 return b; |
221 } |
218 } |
222 |
219 |
223 }; |
220 }; |
224 |
221 |
225 typedef ClearableGraphExtender< |
222 typedef GraphExtender<SmartGraphBase> ExtendedSmartGraphBase; |
226 ExtendableGraphExtender< |
|
227 MappableGraphExtender< |
|
228 IterableGraphExtender< |
|
229 AlterableGraphExtender< |
|
230 GraphExtender<SmartGraphBase> > > > > > ExtendedSmartGraphBase; |
|
231 |
223 |
232 /// \ingroup graphs |
224 /// \ingroup graphs |
233 |
225 |
234 ///A smart graph class. |
226 ///A smart graph class. |
235 |
227 |
242 ///\sa concept::ExtendableGraph. |
234 ///\sa concept::ExtendableGraph. |
243 /// |
235 /// |
244 ///\author Alpar Juttner |
236 ///\author Alpar Juttner |
245 class SmartGraph : public ExtendedSmartGraphBase { |
237 class SmartGraph : public ExtendedSmartGraphBase { |
246 public: |
238 public: |
247 |
239 |
|
240 typedef ExtendedSmartGraphBase Parent; |
|
241 |
248 class Snapshot; |
242 class Snapshot; |
249 friend class Snapshot; |
243 friend class Snapshot; |
250 |
244 |
251 protected: |
245 protected: |
252 void restoreSnapshot(const Snapshot &s) |
246 void restoreSnapshot(const Snapshot &s) |
353 }; |
347 }; |
354 |
348 |
355 |
349 |
356 /**************** Undirected List Graph ****************/ |
350 /**************** Undirected List Graph ****************/ |
357 |
351 |
358 typedef ClearableUGraphExtender< |
352 typedef UGraphExtender<UGraphBaseExtender<SmartGraphBase> > |
359 ExtendableUGraphExtender< |
353 ExtendedSmartUGraphBase; |
360 MappableUGraphExtender< |
|
361 IterableUGraphExtender< |
|
362 AlterableUGraphExtender< |
|
363 UGraphExtender<SmartGraphBase> > > > > > ExtendedSmartUGraphBase; |
|
364 |
354 |
365 /// \ingroup graphs |
355 /// \ingroup graphs |
366 /// |
356 /// |
367 /// \brief A smart undirected graph class. |
357 /// \brief A smart undirected graph class. |
368 /// |
358 /// |
585 } |
575 } |
586 |
576 |
587 }; |
577 }; |
588 |
578 |
589 |
579 |
590 typedef ClearableBpUGraphExtender< |
580 typedef BpUGraphExtender< BpUGraphBaseExtender< |
591 ExtendableBpUGraphExtender< |
581 SmartBpUGraphBase> > ExtendedSmartBpUGraphBase; |
592 MappableBpUGraphExtender< |
|
593 IterableBpUGraphExtender< |
|
594 AlterableBpUGraphExtender< |
|
595 BpUGraphExtender < |
|
596 SmartBpUGraphBase> > > > > > |
|
597 ExtendedSmartBpUGraphBase; |
|
598 |
582 |
599 /// \ingroup graphs |
583 /// \ingroup graphs |
600 /// |
584 /// |
601 /// \brief A smart bipartite undirected graph class. |
585 /// \brief A smart bipartite undirected graph class. |
602 /// |
586 /// |