gravatar
deba@inf.elte.hu
deba@inf.elte.hu
New implementation of GRAPH_TYPEDEFS
0 3 0
default
3 files changed with 119 insertions and 14 deletions:
↑ Collapse diff ↑
Ignore white space 6 line context
... ...
@@ -42,6 +42,82 @@
42 42
  /// \addtogroup gutils
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

	
45 121
  ///Creates convenience typedefs for the digraph types and iterators
46 122

	
47 123
  ///This \c \#define creates convenience typedefs for the following types
... ...
@@ -49,12 +125,31 @@
49 125
  ///\c OutArcIt, \c BoolNodeMap, \c IntNodeMap, \c DoubleNodeMap, 
50 126
  ///\c BoolArcMap, \c IntArcMap, \c DoubleArcMap. 
51 127
#define DIGRAPH_TYPEDEFS(Digraph)					\
52
  typedef Digraph::Node Node;						\
53
  typedef Digraph::NodeIt NodeIt;					\
54
  typedef Digraph::Arc Arc;						\
55
  typedef Digraph::ArcIt ArcIt;						\
56
  typedef Digraph::InArcIt InArcIt;					\
57
  typedef Digraph::OutArcIt OutArcIt
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

	
58 153

	
59 154
  ///Creates convenience typedefs for the graph types and iterators
60 155

	
... ...
@@ -64,9 +159,19 @@
64 159
  ///\c DoubleEdgeMap.
65 160
#define GRAPH_TYPEDEFS(Graph)						\
66 161
  DIGRAPH_TYPEDEFS(Graph);						\
67
  typedef Graph::Edge Edge;						\
68
  typedef Graph::EdgeIt EdgeIt;						\
69
  typedef Graph::IncEdgeIt IncEdgeIt
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

	
70 175

	
71 176
  /// \brief Function to count the items in the graph.
72 177
  ///
... ...
@@ -2056,7 +2161,7 @@
2056 2161
    typedef typename ItemSetTraits<G, typename G::Arc>
2057 2162
    ::ItemNotifier::ObserverBase Parent;
2058 2163

	
2059
    DIGRAPH_TYPEDEFS(typename G);
2164
    DIGRAPH_TYPEDEFS(G);
2060 2165
    typedef G Digraph;
2061 2166

	
2062 2167
  protected:
... ...
@@ -2493,7 +2598,7 @@
2493 2598
  class ArcLookUp 
2494 2599
  {
2495 2600
  public:
2496
    DIGRAPH_TYPEDEFS(typename G);
2601
    DIGRAPH_TYPEDEFS(G);
2497 2602
    typedef G Digraph;
2498 2603

	
2499 2604
  protected:
... ...
@@ -2610,7 +2715,7 @@
2610 2715
    using ArcLookUp<G>::_left;
2611 2716
    using ArcLookUp<G>::_head;
2612 2717

	
2613
    DIGRAPH_TYPEDEFS(typename G);
2718
    DIGRAPH_TYPEDEFS(G);
2614 2719
    typedef G Digraph;
2615 2720
    
2616 2721
    typename Digraph::template ArcMap<Arc> _next;
Ignore white space 6 line context
... ...
@@ -302,7 +302,7 @@
302 302
  public:
303 303

	
304 304
    typedef _Digraph Digraph;
305
    DIGRAPH_TYPEDEFS(typename Digraph);
305
    DIGRAPH_TYPEDEFS(Digraph);
306 306
    
307 307
  private:
308 308

	
Ignore white space 6 line context
... ...
@@ -237,7 +237,7 @@
237 237
  public:
238 238

	
239 239
    typedef _Digraph Digraph;
240
    DIGRAPH_TYPEDEFS(typename Digraph);
240
    DIGRAPH_TYPEDEFS(Digraph);
241 241
    
242 242
  private:
243 243

	
0 comments (0 inline)