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 | | |
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 |
| 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 |
| 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 | |
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 |
| 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 |
| 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 |