... | ... |
@@ -3150,115 +3150,115 @@ |
3150 | 3150 |
|
3151 | 3151 |
NodeMapBase(const SplitNodesBase<DGR>& adaptor) |
3152 | 3152 |
: _in_map(*adaptor._digraph), _out_map(*adaptor._digraph) {} |
3153 | 3153 |
NodeMapBase(const SplitNodesBase<DGR>& adaptor, const V& value) |
3154 | 3154 |
: _in_map(*adaptor._digraph, value), |
3155 | 3155 |
_out_map(*adaptor._digraph, value) {} |
3156 | 3156 |
|
3157 | 3157 |
void set(const Node& key, const V& val) { |
3158 | 3158 |
if (SplitNodesBase<DGR>::inNode(key)) { _in_map.set(key, val); } |
3159 | 3159 |
else {_out_map.set(key, val); } |
3160 | 3160 |
} |
3161 | 3161 |
|
3162 | 3162 |
ReturnValue operator[](const Node& key) { |
3163 | 3163 |
if (SplitNodesBase<DGR>::inNode(key)) { return _in_map[key]; } |
3164 | 3164 |
else { return _out_map[key]; } |
3165 | 3165 |
} |
3166 | 3166 |
|
3167 | 3167 |
ConstReturnValue operator[](const Node& key) const { |
3168 | 3168 |
if (Adaptor::inNode(key)) { return _in_map[key]; } |
3169 | 3169 |
else { return _out_map[key]; } |
3170 | 3170 |
} |
3171 | 3171 |
|
3172 | 3172 |
private: |
3173 | 3173 |
NodeImpl _in_map, _out_map; |
3174 | 3174 |
}; |
3175 | 3175 |
|
3176 | 3176 |
template <typename V> |
3177 | 3177 |
class ArcMapBase |
3178 | 3178 |
: public MapTraits<typename Parent::template ArcMap<V> > { |
3179 | 3179 |
typedef typename Parent::template ArcMap<V> ArcImpl; |
3180 | 3180 |
typedef typename Parent::template NodeMap<V> NodeImpl; |
3181 | 3181 |
public: |
3182 | 3182 |
typedef Arc Key; |
3183 | 3183 |
typedef V Value; |
3184 | 3184 |
typedef typename MapTraits<ArcImpl>::ReferenceMapTag ReferenceMapTag; |
3185 | 3185 |
typedef typename MapTraits<ArcImpl>::ReturnValue ReturnValue; |
3186 | 3186 |
typedef typename MapTraits<ArcImpl>::ConstReturnValue ConstReturnValue; |
3187 | 3187 |
typedef typename MapTraits<ArcImpl>::ReturnValue Reference; |
3188 | 3188 |
typedef typename MapTraits<ArcImpl>::ConstReturnValue ConstReference; |
3189 | 3189 |
|
3190 | 3190 |
ArcMapBase(const SplitNodesBase<DGR>& adaptor) |
3191 | 3191 |
: _arc_map(*adaptor._digraph), _node_map(*adaptor._digraph) {} |
3192 | 3192 |
ArcMapBase(const SplitNodesBase<DGR>& adaptor, const V& value) |
3193 | 3193 |
: _arc_map(*adaptor._digraph, value), |
3194 | 3194 |
_node_map(*adaptor._digraph, value) {} |
3195 | 3195 |
|
3196 | 3196 |
void set(const Arc& key, const V& val) { |
3197 | 3197 |
if (SplitNodesBase<DGR>::origArc(key)) { |
3198 |
_arc_map.set( |
|
3198 |
_arc_map.set(static_cast<const DigraphArc&>(key), val); |
|
3199 | 3199 |
} else { |
3200 |
_node_map.set( |
|
3200 |
_node_map.set(static_cast<const DigraphNode&>(key), val); |
|
3201 | 3201 |
} |
3202 | 3202 |
} |
3203 | 3203 |
|
3204 | 3204 |
ReturnValue operator[](const Arc& key) { |
3205 | 3205 |
if (SplitNodesBase<DGR>::origArc(key)) { |
3206 |
return _arc_map[ |
|
3206 |
return _arc_map[static_cast<const DigraphArc&>(key)]; |
|
3207 | 3207 |
} else { |
3208 |
return _node_map[ |
|
3208 |
return _node_map[static_cast<const DigraphNode&>(key)]; |
|
3209 | 3209 |
} |
3210 | 3210 |
} |
3211 | 3211 |
|
3212 | 3212 |
ConstReturnValue operator[](const Arc& key) const { |
3213 | 3213 |
if (SplitNodesBase<DGR>::origArc(key)) { |
3214 |
return _arc_map[ |
|
3214 |
return _arc_map[static_cast<const DigraphArc&>(key)]; |
|
3215 | 3215 |
} else { |
3216 |
return _node_map[ |
|
3216 |
return _node_map[static_cast<const DigraphNode&>(key)]; |
|
3217 | 3217 |
} |
3218 | 3218 |
} |
3219 | 3219 |
|
3220 | 3220 |
private: |
3221 | 3221 |
ArcImpl _arc_map; |
3222 | 3222 |
NodeImpl _node_map; |
3223 | 3223 |
}; |
3224 | 3224 |
|
3225 | 3225 |
public: |
3226 | 3226 |
|
3227 | 3227 |
template <typename V> |
3228 | 3228 |
class NodeMap |
3229 | 3229 |
: public SubMapExtender<SplitNodesBase<DGR>, NodeMapBase<V> > |
3230 | 3230 |
{ |
3231 | 3231 |
public: |
3232 | 3232 |
typedef V Value; |
3233 | 3233 |
typedef SubMapExtender<SplitNodesBase<DGR>, NodeMapBase<Value> > Parent; |
3234 | 3234 |
|
3235 | 3235 |
NodeMap(const SplitNodesBase<DGR>& adaptor) |
3236 | 3236 |
: Parent(adaptor) {} |
3237 | 3237 |
|
3238 | 3238 |
NodeMap(const SplitNodesBase<DGR>& adaptor, const V& value) |
3239 | 3239 |
: Parent(adaptor, value) {} |
3240 | 3240 |
|
3241 | 3241 |
private: |
3242 | 3242 |
NodeMap& operator=(const NodeMap& cmap) { |
3243 | 3243 |
return operator=<NodeMap>(cmap); |
3244 | 3244 |
} |
3245 | 3245 |
|
3246 | 3246 |
template <typename CMap> |
3247 | 3247 |
NodeMap& operator=(const CMap& cmap) { |
3248 | 3248 |
Parent::operator=(cmap); |
3249 | 3249 |
return *this; |
3250 | 3250 |
} |
3251 | 3251 |
}; |
3252 | 3252 |
|
3253 | 3253 |
template <typename V> |
3254 | 3254 |
class ArcMap |
3255 | 3255 |
: public SubMapExtender<SplitNodesBase<DGR>, ArcMapBase<V> > |
3256 | 3256 |
{ |
3257 | 3257 |
public: |
3258 | 3258 |
typedef V Value; |
3259 | 3259 |
typedef SubMapExtender<SplitNodesBase<DGR>, ArcMapBase<Value> > Parent; |
3260 | 3260 |
|
3261 | 3261 |
ArcMap(const SplitNodesBase<DGR>& adaptor) |
3262 | 3262 |
: Parent(adaptor) {} |
3263 | 3263 |
|
3264 | 3264 |
ArcMap(const SplitNodesBase<DGR>& adaptor, const V& value) |
0 comments (0 inline)