Changeset 148:4e2581021300 in lemon
- Timestamp:
- 04/24/08 11:56:44 (17 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- lemon
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/graph_utils.h
r147 r148 43 43 /// @{ 44 44 45 namespace _graph_utils_bits {46 template <typename Graph>47 struct Node { typedef typename Graph::Node type; };48 49 template <typename Graph>50 struct NodeIt { typedef typename Graph::NodeIt type; };51 52 template <typename Graph>53 struct Arc { typedef typename Graph::Arc type; };54 55 template <typename Graph>56 struct ArcIt { typedef typename Graph::ArcIt type; };57 58 template <typename Graph>59 struct Edge { typedef typename Graph::Edge type; };60 61 template <typename Graph>62 struct EdgeIt { typedef typename Graph::EdgeIt type; };63 64 template <typename Graph>65 struct OutArcIt { typedef typename Graph::OutArcIt type; };66 67 template <typename Graph>68 struct InArcIt { typedef typename Graph::InArcIt type; };69 70 template <typename Graph>71 struct IncEdgeIt { typedef typename Graph::IncEdgeIt type; };72 73 template <typename Graph>74 struct BoolNodeMap {75 typedef typename Graph::template NodeMap<bool> type;76 };77 78 template <typename Graph>79 struct IntNodeMap {80 typedef typename Graph::template NodeMap<int> type;81 };82 83 template <typename Graph>84 struct DoubleNodeMap {85 typedef typename Graph::template NodeMap<double> type;86 };87 88 template <typename Graph>89 struct BoolArcMap {90 typedef typename Graph::template ArcMap<bool> type;91 };92 93 template <typename Graph>94 struct IntArcMap {95 typedef typename Graph::template ArcMap<int> type;96 };97 98 template <typename Graph>99 struct DoubleArcMap {100 typedef typename Graph::template ArcMap<double> type;101 };102 103 template <typename Graph>104 struct BoolEdgeMap {105 typedef typename Graph::template EdgeMap<bool> type;106 };107 108 template <typename Graph>109 struct IntEdgeMap {110 typedef typename Graph::template EdgeMap<int> type;111 };112 113 template <typename Graph>114 struct DoubleEdgeMap {115 typedef typename Graph::template EdgeMap<double> type;116 };117 118 119 }120 121 45 ///Creates convenience typedefs for the digraph types and iterators 122 46 … … 124 48 ///of \c Digraph: \c Node, \c NodeIt, \c Arc, \c ArcIt, \c InArcIt, 125 49 ///\c OutArcIt, \c BoolNodeMap, \c IntNodeMap, \c DoubleNodeMap, 126 ///\c BoolArcMap, \c IntArcMap, \c DoubleArcMap. 50 ///\c BoolArcMap, \c IntArcMap, \c DoubleArcMap. 51 /// 52 ///\note If the graph type is a dependent type, ie. the graph type depend 53 ///on a template parameter, then use \c TEMPLATE_DIGRAPH_TYPEDEFS() 54 ///macro. 127 55 #define DIGRAPH_TYPEDEFS(Digraph) \ 128 typedef typename ::lemon::_graph_utils_bits:: \ 129 Node<Digraph>::type Node; \ 130 typedef typename ::lemon::_graph_utils_bits:: \ 131 NodeIt<Digraph>::type NodeIt; \ 132 typedef typename ::lemon::_graph_utils_bits:: \ 133 Arc<Digraph>::type Arc; \ 134 typedef typename ::lemon::_graph_utils_bits:: \ 135 ArcIt<Digraph>::type ArcIt; \ 136 typedef typename ::lemon::_graph_utils_bits:: \ 137 OutArcIt<Digraph>::type OutArcIt; \ 138 typedef typename ::lemon::_graph_utils_bits:: \ 139 InArcIt<Digraph>::type InArcIt; \ 140 typedef typename ::lemon::_graph_utils_bits:: \ 141 BoolNodeMap<Digraph>::type BoolNodeMap; \ 142 typedef typename ::lemon::_graph_utils_bits:: \ 143 IntNodeMap<Digraph>::type IntNodeMap; \ 144 typedef typename ::lemon::_graph_utils_bits:: \ 145 DoubleNodeMap<Digraph>::type DoubleNodeMap; \ 146 typedef typename ::lemon::_graph_utils_bits:: \ 147 BoolArcMap<Digraph>::type BoolArcMap; \ 148 typedef typename ::lemon::_graph_utils_bits:: \ 149 IntArcMap<Digraph>::type IntArcMap; \ 150 typedef typename ::lemon::_graph_utils_bits:: \ 151 DoubleArcMap<Digraph>::type DoubleArcMap 152 153 56 typedef Digraph::Node Node; \ 57 typedef Digraph::NodeIt NodeIt; \ 58 typedef Digraph::Arc Arc; \ 59 typedef Digraph::ArcIt ArcIt; \ 60 typedef Digraph::InArcIt InArcIt; \ 61 typedef Digraph::OutArcIt OutArcIt; \ 62 typedef Digraph::NodeMap<bool> BoolNodeMap; \ 63 typedef Digraph::NodeMap<int> IntNodeMap; \ 64 typedef Digraph::NodeMap<double> DoubleNodeMap; \ 65 typedef Digraph::ArcMap<bool> BoolArcMap; \ 66 typedef Digraph::ArcMap<int> IntArcMap; \ 67 typedef Digraph::ArcMap<double> DoubleArcMap 68 69 ///Creates convenience typedefs for the digraph types and iterators 70 71 ///\see DIGRAPH_TYPEDEFS 72 /// 73 ///\note Use this macro, if the graph type is a dependent type, 74 ///ie. the graph type depend on a template parameter. 75 #define TEMPLATE_DIGRAPH_TYPEDEFS(Digraph) \ 76 typedef typename Digraph::Node Node; \ 77 typedef typename Digraph::NodeIt NodeIt; \ 78 typedef typename Digraph::Arc Arc; \ 79 typedef typename Digraph::ArcIt ArcIt; \ 80 typedef typename Digraph::InArcIt InArcIt; \ 81 typedef typename Digraph::OutArcIt OutArcIt; \ 82 typedef typename Digraph::template NodeMap<bool> BoolNodeMap; \ 83 typedef typename Digraph::template NodeMap<int> IntNodeMap; \ 84 typedef typename Digraph::template NodeMap<double> DoubleNodeMap; \ 85 typedef typename Digraph::template ArcMap<bool> BoolArcMap; \ 86 typedef typename Digraph::template ArcMap<int> IntArcMap; \ 87 typedef typename Digraph::template ArcMap<double> DoubleArcMap 88 154 89 ///Creates convenience typedefs for the graph types and iterators 155 90 … … 158 93 ///\c Edge, \c EdgeIt, \c IncEdgeIt, \c BoolEdgeMap, \c IntEdgeMap, 159 94 ///\c DoubleEdgeMap. 95 /// 96 ///\note If the graph type is a dependent type, ie. the graph type depend 97 ///on a template parameter, then use \c TEMPLATE_DIGRAPH_TYPEDEFS() 98 ///macro. 160 99 #define GRAPH_TYPEDEFS(Graph) \ 161 100 DIGRAPH_TYPEDEFS(Graph); \ 162 typedef typename ::lemon::_graph_utils_bits:: \ 163 Edge<Graph>::type Edge; \ 164 typedef typename ::lemon::_graph_utils_bits:: \ 165 EdgeIt<Graph>::type EdgeIt; \ 166 typedef typename ::lemon::_graph_utils_bits:: \ 167 IncEdgeIt<Graph>::type IncEdgeIt; \ 168 typedef typename ::lemon::_graph_utils_bits:: \ 169 BoolEdgeMap<Graph>::type BoolEdgeMap; \ 170 typedef typename ::lemon::_graph_utils_bits:: \ 171 IntEdgeMap<Graph>::type IntEdgeMap; \ 172 typedef typename ::lemon::_graph_utils_bits:: \ 173 DoubleEdgeMap<Graph>::type DoubleEdgeMap 174 101 typedef Graph::Edge Edge; \ 102 typedef Graph::EdgeIt EdgeIt; \ 103 typedef Graph::IncEdgeIt IncEdgeIt; \ 104 typedef Graph::EdgeMap<bool> BoolEdgeMap; \ 105 typedef Graph::EdgeMap<int> IntEdgeMap; \ 106 typedef Graph::EdgeMap<double> DoubleEdgeMap 107 108 ///Creates convenience typedefs for the graph types and iterators 109 110 ///\see GRAPH_TYPEDEFS 111 /// 112 ///\note Use this macro, if the graph type is a dependent type, 113 ///ie. the graph type depend on a template parameter. 114 #define TEMPLATE_GRAPH_TYPEDEFS(Graph) \ 115 TEMPLATE_DIGRAPH_TYPEDEFS(Graph); \ 116 typedef typename Graph::Edge Edge; \ 117 typedef typename Graph::EdgeIt EdgeIt; \ 118 typedef typename Graph::IncEdgeIt IncEdgeIt; \ 119 typedef typename Graph::template EdgeMap<bool> BoolEdgeMap; \ 120 typedef typename Graph::template EdgeMap<int> IntEdgeMap; \ 121 typedef typename Graph::template EdgeMap<double> DoubleEdgeMap 175 122 176 123 /// \brief Function to count the items in the graph. … … 2162 2109 ::ItemNotifier::ObserverBase Parent; 2163 2110 2164 DIGRAPH_TYPEDEFS(G);2111 TEMPLATE_DIGRAPH_TYPEDEFS(G); 2165 2112 typedef G Digraph; 2166 2113 … … 2599 2546 { 2600 2547 public: 2601 DIGRAPH_TYPEDEFS(G);2548 TEMPLATE_DIGRAPH_TYPEDEFS(G); 2602 2549 typedef G Digraph; 2603 2550 … … 2716 2663 using ArcLookUp<G>::_head; 2717 2664 2718 DIGRAPH_TYPEDEFS(G);2665 TEMPLATE_DIGRAPH_TYPEDEFS(G); 2719 2666 typedef G Digraph; 2720 2667 -
lemon/lgf_reader.h
r140 r148 303 303 304 304 typedef _Digraph Digraph; 305 DIGRAPH_TYPEDEFS(Digraph);305 TEMPLATE_DIGRAPH_TYPEDEFS(Digraph); 306 306 307 307 private: -
lemon/lgf_writer.h
r140 r148 238 238 239 239 typedef _Digraph Digraph; 240 DIGRAPH_TYPEDEFS(Digraph);240 TEMPLATE_DIGRAPH_TYPEDEFS(Digraph); 241 241 242 242 private:
Note: See TracChangeset
for help on using the changeset viewer.