1 #ifndef __DIADES__GRAPH__CONSTNODEMAP__HH 2 #define __DIADES__GRAPH__CONSTNODEMAP__HH 26 template <
typename T >
31 return "Graph::ConstNodeMap";
59 typedef typename vector<T>::size_type
SizeType;
71 typedef typename vector<T>::pointer
Pointer;
238 template <
typename T>
241 typedef ConstNodeMapIterator<T>
Self;
264 ConstReference value);
266 Reference operator*()
const;
269 Pointer operator->()
const;
275 Self operator++(
int);
291 template <
typename T >
295 template <
typename T>
298 if (capacity > (_owner->nodeCapacity() + 1)) {
299 _tabData.resize(capacity, _dflt);
301 _tabData.resize(_owner->nodeCapacity() + 1, dflt);
303 ensure(Exception, _tabData.size() > _owner->nodeCapacity(),
"ConstNodeMap");
306 template <
typename T>
312 if (capacity > (_owner->nodeCapacity() + 1)) {
313 _tabData.resize(capacity, _dflt);
315 _tabData.resize(_owner->nodeCapacity() + 1, _dflt);
317 ensure(Exception, _tabData.size() > _owner->nodeCapacity(),
"ConstNodeMap");
320 template <
typename T>
323 require(Exception, n.
valid(),
"ConstNodeMap::operator[]: invalid node");
326 if (_owner->nodeCapacity() >= _tabData.size()) {
327 _tabData.resize(_owner->nodeCapacity() + 1, _dflt);
329 ensure(Exception, _tabData.size() > _owner->nodeCapacity(),
"ConstNodeMap[]");
330 return _tabData.operator[](n.
id());
333 template <
typename T>
336 require(Exception, n.
valid(),
"ConstNodeMap::operator[]: invalid node");
338 if (_owner->nodeCapacity() >= _tabData.size()) {
339 _tabData.resize(_owner->nodeCapacity() + 1, _dflt);
341 ensure(Exception, _tabData.size() > _owner->nodeCapacity(),
"ConstNodeMap[]");
342 return _tabData.operator[](n.
id());
345 template <
typename T>
347 for (
NodeIterator nodeIt = begin; nodeIt != end; ++nodeIt) {
348 operator[](*nodeIt) = value;
350 ensure(Exception, _tabData.size() > _owner->nodeCapacity(),
"ConstNodeMap[]");
354 template <
typename T,
typename ForwardIterator>
357 for (; start != end; ++
start) {
366 ConstReference value) : _pMap(mapping),
367 _currentIterator(currentIterator),
378 return _pMap->operator[](*_currentIterator);
384 return &(
_pMap->operator[](*_currentIterator));
421 return !(*
this == it);
434 os <<
"digraph G {" <<
"\n";
435 os <<
"\tratio=fill;" <<
"\n";
436 os <<
"\tpage=\"8.5,11.6\";" <<
"\n";
437 os <<
"\tsize=\"7.5,10.5\";" <<
"\n";
441 nodeIt != owner().nodeEnd();
443 os <<
"\t" << *nodeIt;
444 os <<
"[ label=\"" << operator[](*nodeIt) <<
"\"];";
450 edgeIt != owner().edgeEnd();
452 os <<
"\t" << edgeIt->source() <<
" -> " << edgeIt->target();
463 template<
typename T >
471 template<
typename T >
std::forward_iterator_tag iterator_category
vector< T >::difference_type DifferenceType
ConstNodeMap< T >::Pointer Pointer
InputIterator initValue(EdgeMap< T > &map, InputIterator start, InputIterator end, typename EdgeMap< T >::ConstReference value)
ForwardIterator initValueConstNodeMap(ConstNodeMap< T > &map, ForwardIterator start, ForwardIterator end, typename ConstNodeMap< T >::ConstReference value)
vector< T >::allocator_type AllocatorType
ConstNodeMapIterator< ValueType > nodeEnd(ConstReference value) const
vector< T >::const_reference ConstReference
ConstNodeMap< T >::ConstReference ConstReference
void export2dot(ostream &os)
#define ensure(Exception, expr, message)
Pointer operator->() const
vector< T >::iterator Iterator
ConstNodeMap< T >::ValueType value_type
ConstNodeMap< T >::ValueType ValueType
const Graph & owner() const
vector< T >::value_type ValueType
vector< T >::reverse_iterator ReverseIterator
ConstNodeMap< T >::Reference Reference
vector< T >::const_reverse_iterator ConstReverseIterator
ConstNodeMap< T >::Pointer pointer
#define require(Exception, expr, message)
Namespace of the Diades project.
NodeIterator _currentIterator
bool operator!=(const Graph &g) const
ConstNodeMapIterator< ValueType > nodeBegin(ConstReference value) const
ConstNodeMap< T >::Reference reference
vector< ValueType > _tabData
Reference operator[](Node node)
boost::adjacency_list Graph
vector< T >::size_type SizeType
bool operator==(const Graph &g) const
vector< T >::pointer Pointer
bool operator==(const Self &it) const
std::forward_iterator_tag IteratorCategory
const ConstNodeMap< ValueType > * _pMap
void init(const Graph &g, SizeType capacity=0, ValueType dflt=ValueType())
vector< T >::const_pointer ConstPointer
ConstNodeMapIterator< T > Self
vector< T >::reference Reference
bool operator!=(const Self &it) const
vector< T >::const_iterator ConstIterator
ptrdiff_t difference_type
Diades::Utils::Exception< ConstNodeMap > Exception
Reference operator*() const
NodeIterator initValue(NodeIterator begin, NodeIterator end, ConstReference value)