0
2
0
38
39
... | ... |
@@ -1832,7 +1832,7 @@ |
1832 | 1832 |
/// \tparam K The key type of the map (\c GR::Node, \c GR::Arc or |
1833 | 1833 |
/// \c GR::Edge). |
1834 | 1834 |
/// |
1835 |
/// \see |
|
1835 |
/// \see RangeIdMap |
|
1836 | 1836 |
template <typename GR, typename K> |
1837 | 1837 |
class IdMap : public MapBase<K, int> { |
1838 | 1838 |
public: |
... | ... |
@@ -1898,7 +1898,7 @@ |
1898 | 1898 |
}; |
1899 | 1899 |
|
1900 | 1900 |
|
1901 |
/// \brief General |
|
1901 |
/// \brief General cross reference graph map type. |
|
1902 | 1902 |
|
1903 | 1903 |
/// This class provides simple invertable graph maps. |
1904 | 1904 |
/// It wraps an arbitrary \ref concepts::ReadWriteMap "ReadWriteMap" |
... | ... |
@@ -1915,7 +1915,7 @@ |
1915 | 1915 |
/// |
1916 | 1916 |
/// \see IterableValueMap |
1917 | 1917 |
template <typename GR, typename K, typename V> |
1918 |
class |
|
1918 |
class CrossRefMap |
|
1919 | 1919 |
: protected ItemSetTraits<GR, K>::template Map<V>::Type { |
1920 | 1920 |
private: |
1921 | 1921 |
|
... | ... |
@@ -1927,19 +1927,19 @@ |
1927 | 1927 |
|
1928 | 1928 |
public: |
1929 | 1929 |
|
1930 |
/// The graph type of |
|
1930 |
/// The graph type of CrossRefMap. |
|
1931 | 1931 |
typedef GR Graph; |
1932 |
/// The key type of |
|
1932 |
/// The key type of CrossRefMap (\c Node, \c Arc or \c Edge). |
|
1933 | 1933 |
typedef K Item; |
1934 |
/// The key type of |
|
1934 |
/// The key type of CrossRefMap (\c Node, \c Arc or \c Edge). |
|
1935 | 1935 |
typedef K Key; |
1936 |
/// The value type of |
|
1936 |
/// The value type of CrossRefMap. |
|
1937 | 1937 |
typedef V Value; |
1938 | 1938 |
|
1939 | 1939 |
/// \brief Constructor. |
1940 | 1940 |
/// |
1941 |
/// Construct a new InvertableMap for the given graph. |
|
1942 |
explicit InvertableMap(const Graph& graph) : Map(graph) {} |
|
1941 |
/// Construct a new CrossRefMap for the given graph. |
|
1942 |
explicit CrossRefMap(const Graph& graph) : Map(graph) {} |
|
1943 | 1943 |
|
1944 | 1944 |
/// \brief Forward iterator for values. |
1945 | 1945 |
/// |
... | ... |
@@ -1948,7 +1948,7 @@ |
1948 | 1948 |
/// be accessed in the <tt>[beginValue, endValue)</tt> range. |
1949 | 1949 |
class ValueIterator |
1950 | 1950 |
: public std::iterator<std::forward_iterator_tag, Value> { |
1951 |
friend class |
|
1951 |
friend class CrossRefMap; |
|
1952 | 1952 |
private: |
1953 | 1953 |
ValueIterator(typename Container::const_iterator _it) |
1954 | 1954 |
: it(_it) {} |
... | ... |
@@ -2072,13 +2072,13 @@ |
2072 | 2072 |
/// \brief Constructor |
2073 | 2073 |
/// |
2074 | 2074 |
/// Constructor of the InverseMap. |
2075 |
explicit InverseMap(const |
|
2075 |
explicit InverseMap(const CrossRefMap& inverted) |
|
2076 | 2076 |
: _inverted(inverted) {} |
2077 | 2077 |
|
2078 | 2078 |
/// The value type of the InverseMap. |
2079 |
typedef typename |
|
2079 |
typedef typename CrossRefMap::Key Value; |
|
2080 | 2080 |
/// The key type of the InverseMap. |
2081 |
typedef typename |
|
2081 |
typedef typename CrossRefMap::Value Key; |
|
2082 | 2082 |
|
2083 | 2083 |
/// \brief Subscript operator. |
2084 | 2084 |
/// |
... | ... |
@@ -2089,7 +2089,7 @@ |
2089 | 2089 |
} |
2090 | 2090 |
|
2091 | 2091 |
private: |
2092 |
const |
|
2092 |
const CrossRefMap& _inverted; |
|
2093 | 2093 |
}; |
2094 | 2094 |
|
2095 | 2095 |
/// \brief It gives back the read-only inverse map. |
... | ... |
@@ -2101,18 +2101,17 @@ |
2101 | 2101 |
|
2102 | 2102 |
}; |
2103 | 2103 |
|
2104 |
/// \brief Provides a mutable, continuous and unique descriptor for each |
|
2105 |
/// item in a graph. |
|
2104 |
/// \brief Provides continuous and unique ID for the |
|
2105 |
/// items of a graph. |
|
2106 | 2106 |
/// |
2107 |
/// DescriptorMap provides a unique and continuous (but mutable) |
|
2108 |
/// descriptor (id) for each item of the same type (\c Node, \c Arc or |
|
2107 |
/// RangeIdMap provides a unique and continuous |
|
2108 |
/// ID for each item of a given type (\c Node, \c Arc or |
|
2109 | 2109 |
/// \c Edge) in a graph. This id is |
2110 | 2110 |
/// - \b unique: different items get different ids, |
2111 | 2111 |
/// - \b continuous: the range of the ids is the set of integers |
2112 | 2112 |
/// between 0 and \c n-1, where \c n is the number of the items of |
2113 |
/// this type (\c Node, \c Arc or \c Edge). So the id of an item can |
|
2114 |
/// change if you delete an other item of the same type, i.e. this |
|
2115 |
/// |
|
2113 |
/// this type (\c Node, \c Arc or \c Edge). |
|
2114 |
/// - So, the ids can change when deleting an item of the same type. |
|
2116 | 2115 |
/// |
2117 | 2116 |
/// Thus this id is not (necessarily) the same as what can get using |
2118 | 2117 |
/// the \c id() function of the graph or \ref IdMap. |
... | ... |
@@ -2125,25 +2124,25 @@ |
2125 | 2124 |
/// |
2126 | 2125 |
/// \see IdMap |
2127 | 2126 |
template <typename GR, typename K> |
2128 |
class |
|
2127 |
class RangeIdMap |
|
2129 | 2128 |
: protected ItemSetTraits<GR, K>::template Map<int>::Type { |
2130 | 2129 |
|
2131 | 2130 |
typedef typename ItemSetTraits<GR, K>::template Map<int>::Type Map; |
2132 | 2131 |
|
2133 | 2132 |
public: |
2134 |
/// The graph type of |
|
2133 |
/// The graph type of RangeIdMap. |
|
2135 | 2134 |
typedef GR Graph; |
2136 |
/// The key type of |
|
2135 |
/// The key type of RangeIdMap (\c Node, \c Arc or \c Edge). |
|
2137 | 2136 |
typedef K Item; |
2138 |
/// The key type of |
|
2137 |
/// The key type of RangeIdMap (\c Node, \c Arc or \c Edge). |
|
2139 | 2138 |
typedef K Key; |
2140 |
/// The value type of |
|
2139 |
/// The value type of RangeIdMap. |
|
2141 | 2140 |
typedef int Value; |
2142 | 2141 |
|
2143 | 2142 |
/// \brief Constructor. |
2144 | 2143 |
/// |
2145 |
/// Constructor for descriptor map. |
|
2146 |
explicit DescriptorMap(const Graph& gr) : Map(gr) { |
|
2144 |
/// Constructor. |
|
2145 |
explicit RangeIdMap(const Graph& gr) : Map(gr) { |
|
2147 | 2146 |
Item it; |
2148 | 2147 |
const typename Map::Notifier* nf = Map::notifier(); |
2149 | 2148 |
for (nf->first(it); it != INVALID; nf->next(it)) { |
... | ... |
@@ -2244,16 +2243,16 @@ |
2244 | 2243 |
_inv_map[pi] = q; |
2245 | 2244 |
} |
2246 | 2245 |
|
2247 |
/// \brief Gives back the \e |
|
2246 |
/// \brief Gives back the \e RangeId of the item |
|
2248 | 2247 |
/// |
2249 |
/// Gives back the |
|
2248 |
/// Gives back the \e RangeId of the item. |
|
2250 | 2249 |
int operator[](const Item& item) const { |
2251 | 2250 |
return Map::operator[](item); |
2252 | 2251 |
} |
2253 | 2252 |
|
2254 |
/// \brief Gives back the item by its descriptor. |
|
2255 |
/// |
|
2256 |
/// Gives back |
|
2253 |
/// \brief Gives back the item belonging to a \e RangeId |
|
2254 |
/// |
|
2255 |
/// Gives back the item belonging to a \e RangeId. |
|
2257 | 2256 |
Item operator()(int id) const { |
2258 | 2257 |
return _inv_map[id]; |
2259 | 2258 |
} |
... | ... |
@@ -2265,22 +2264,22 @@ |
2265 | 2264 |
|
2266 | 2265 |
public: |
2267 | 2266 |
|
2268 |
/// \brief The inverse map type of |
|
2267 |
/// \brief The inverse map type of RangeIdMap. |
|
2269 | 2268 |
/// |
2270 |
/// The inverse map type of |
|
2269 |
/// The inverse map type of RangeIdMap. |
|
2271 | 2270 |
class InverseMap { |
2272 | 2271 |
public: |
2273 | 2272 |
/// \brief Constructor |
2274 | 2273 |
/// |
2275 | 2274 |
/// Constructor of the InverseMap. |
2276 |
explicit InverseMap(const |
|
2275 |
explicit InverseMap(const RangeIdMap& inverted) |
|
2277 | 2276 |
: _inverted(inverted) {} |
2278 | 2277 |
|
2279 | 2278 |
|
2280 | 2279 |
/// The value type of the InverseMap. |
2281 |
typedef typename |
|
2280 |
typedef typename RangeIdMap::Key Value; |
|
2282 | 2281 |
/// The key type of the InverseMap. |
2283 |
typedef typename |
|
2282 |
typedef typename RangeIdMap::Value Key; |
|
2284 | 2283 |
|
2285 | 2284 |
/// \brief Subscript operator. |
2286 | 2285 |
/// |
... | ... |
@@ -2298,7 +2297,7 @@ |
2298 | 2297 |
} |
2299 | 2298 |
|
2300 | 2299 |
private: |
2301 |
const |
|
2300 |
const RangeIdMap& _inverted; |
|
2302 | 2301 |
}; |
2303 | 2302 |
|
2304 | 2303 |
/// \brief Gives back the inverse of the map. |
... | ... |
@@ -38,15 +38,15 @@ |
38 | 38 |
for (int i = 0; i < 10; ++i) { |
39 | 39 |
digraph.addNode(); |
40 | 40 |
} |
41 |
DescriptorMap<Digraph, Node> nodes(digraph); |
|
42 |
typename DescriptorMap<Digraph, Node>::InverseMap invNodes(nodes); |
|
41 |
RangeIdMap<Digraph, Node> nodes(digraph); |
|
42 |
typename RangeIdMap<Digraph, Node>::InverseMap invNodes(nodes); |
|
43 | 43 |
for (int i = 0; i < 100; ++i) { |
44 | 44 |
int src = rnd[invNodes.size()]; |
45 | 45 |
int trg = rnd[invNodes.size()]; |
46 | 46 |
digraph.addArc(invNodes[src], invNodes[trg]); |
47 | 47 |
} |
48 | 48 |
typename Digraph::template ArcMap<bool> found(digraph, false); |
49 |
|
|
49 |
RangeIdMap<Digraph, Arc> arcs(digraph); |
|
50 | 50 |
for (NodeIt src(digraph); src != INVALID; ++src) { |
51 | 51 |
for (NodeIt trg(digraph); trg != INVALID; ++trg) { |
52 | 52 |
for (ConArcIt<Digraph> con(digraph, src, trg); con != INVALID; ++con) { |
... | ... |
@@ -113,15 +113,15 @@ |
113 | 113 |
for (int i = 0; i < 10; ++i) { |
114 | 114 |
graph.addNode(); |
115 | 115 |
} |
116 |
DescriptorMap<Graph, Node> nodes(graph); |
|
117 |
typename DescriptorMap<Graph, Node>::InverseMap invNodes(nodes); |
|
116 |
RangeIdMap<Graph, Node> nodes(graph); |
|
117 |
typename RangeIdMap<Graph, Node>::InverseMap invNodes(nodes); |
|
118 | 118 |
for (int i = 0; i < 100; ++i) { |
119 | 119 |
int src = rnd[invNodes.size()]; |
120 | 120 |
int trg = rnd[invNodes.size()]; |
121 | 121 |
graph.addEdge(invNodes[src], invNodes[trg]); |
122 | 122 |
} |
123 | 123 |
typename Graph::template EdgeMap<int> found(graph, 0); |
124 |
|
|
124 |
RangeIdMap<Graph, Edge> edges(graph); |
|
125 | 125 |
for (NodeIt src(graph); src != INVALID; ++src) { |
126 | 126 |
for (NodeIt trg(graph); trg != INVALID; ++trg) { |
127 | 127 |
for (ConEdgeIt<Graph> con(graph, src, trg); con != INVALID; ++con) { |
0 comments (0 inline)