1 #ifndef __DIADES__GRAPH__NODEMAP__HH 2 #define __DIADES__GRAPH__NODEMAP__HH 28 template <
typename T >
33 return "Graph::NodeMap";
61 typedef typename vector<T>::size_type
SizeType;
73 typedef typename vector<T>::pointer
Pointer;
246 template <
typename T>
249 typedef NodeMapIterator<T>
Self;
272 ConstReference value);
274 Reference operator*()
const;
277 Pointer operator->()
const;
283 Self operator++(
int);
299 template <
typename T >
303 template <
typename T>
306 if (capacity > (_owner->nodeCapacity() + 1)) {
307 _tabData.resize(capacity, _dflt);
309 _tabData.resize(_owner->nodeCapacity() + 1, dflt);
311 ensure(Exception, _tabData.size() > _owner->nodeCapacity(),
"NodeMap");
314 template <
typename T>
320 if (capacity > (_owner->nodeCapacity() + 1)) {
321 _tabData.resize(capacity, _dflt);
323 _tabData.resize(_owner->nodeCapacity() + 1, _dflt);
325 ensure(Exception, _tabData.size() > _owner->nodeCapacity(),
"NodeMap");
328 template <
typename T>
331 require(Exception, n.
valid(),
"NodeMap::operator[]: invalid node");
334 if (_owner->nodeCapacity() >= _tabData.size()) {
335 _tabData.resize(_owner->nodeCapacity() + 1, _dflt);
337 ensure(Exception, _tabData.size() > _owner->nodeCapacity(),
"NodeMap[]");
338 return _tabData.operator[](n.
id());
341 template <
typename T>
344 require(Exception, n.
valid(),
"NodeMap::operator[]: invalid node");
346 if (_owner->nodeCapacity() >= _tabData.size()) {
347 _tabData.resize(_owner->nodeCapacity() + 1, _dflt);
349 ensure(Exception, _tabData.size() > _owner->nodeCapacity(),
"NodeMap[]");
350 return _tabData.operator[](n.
id());
353 template <
typename T>
355 for (
NodeIterator nodeIt = begin; nodeIt != end; ++nodeIt) {
356 operator[](*nodeIt) = value;
358 ensure(Exception, _tabData.size() > _owner->nodeCapacity(),
"NodeMap[]");
362 template <
typename T,
typename ForwardIterator>
365 for (; start != end; ++
start) {
374 ConstReference value) : _pMap(mapping),
375 _currentIterator(currentIterator),
386 return _pMap->operator[](*_currentIterator);
392 return &(
_pMap->operator[](*_currentIterator));
429 return !(*
this == it);
434 os <<
"[ label=\"" << value <<
"\"];";
445 os <<
"digraph G {" <<
"\n";
446 os <<
"\tratio=fill;" <<
"\n";
447 os <<
"\tpage=\"8.5,11.6\";" <<
"\n";
448 os <<
"\tsize=\"7.5,10.5\";" <<
"\n";
452 nodeIt != owner().nodeEnd();
454 os <<
"\t" << *nodeIt;
461 edgeIt != owner().edgeEnd();
463 os <<
"\t" << edgeIt->source() <<
" -> " << edgeIt->target();
474 template<
typename T >
482 template<
typename T >
NodeIterator initValue(NodeIterator begin, NodeIterator end, ConstReference value)
vector< T >::iterator Iterator
bool operator==(const Self &it) const
InputIterator initValue(EdgeMap< T > &map, InputIterator start, InputIterator end, typename EdgeMap< T >::ConstReference value)
NodeMap< T >::Reference reference
vector< T >::difference_type DifferenceType
NodeIterator _currentIterator
vector< T >::reference Reference
vector< T >::value_type ValueType
void init(Graph &g, SizeType capacity=0, ValueType dflt=ValueType())
const Graph & owner() const
Pointer operator->() const
Diades::Utils::Exception< NodeMap > Exception
NodeMap< T >::ValueType ValueType
ptrdiff_t difference_type
#define ensure(Exception, expr, message)
NodeMapIterator< ValueType > nodeBegin(ConstReference value) const
std::forward_iterator_tag iterator_category
vector< T >::size_type SizeType
vector< T >::pointer Pointer
vector< T >::const_iterator ConstIterator
NodeMapIterator< ValueType > nodeEnd(ConstReference value) const
Reference operator*() const
std::forward_iterator_tag IteratorCategory
ForwardIterator initValueNodeMap(NodeMap< T > &map, ForwardIterator start, ForwardIterator end, typename NodeMap< T >::ConstReference value)
NodeMap< T >::Pointer Pointer
vector< T >::reverse_iterator ReverseIterator
NodeMapIterator< T > Self
NodeMap< T >::ValueType value_type
vector< ValueType > _tabData
#define require(Exception, expr, message)
Namespace of the Diades project.
bool operator!=(const Graph &g) const
NodeMap< T >::Pointer pointer
void export2dot(ostream &os)
void printDot(ostream &os, const T &value)
vector< T >::allocator_type AllocatorType
boost::adjacency_list Graph
Reference operator[](Node node)
bool operator==(const Graph &g) const
vector< T >::const_reverse_iterator ConstReverseIterator
bool operator!=(const Self &it) const
vector< T >::const_reference ConstReference
vector< T >::const_pointer ConstPointer
NodeMap< T >::Reference Reference
NodeMap< T >::ConstReference ConstReference
const NodeMap< ValueType > * _pMap