1 #ifndef __DIADES__GRAPH__EDGEMAP_HH 2 #define __DIADES__GRAPH__EDGEMAP_HH 8 #include <boost/serialization/vector.hpp> 33 return "Graph::EdgeMap";
61 typedef typename vector<T>::size_type
SizeType;
73 typedef typename vector<T>::pointer
Pointer;
240 template <
typename T>
244 typedef EdgeMapIterator<T>
Self;
266 ConstReference value);
268 Reference operator*()
const;
271 Pointer operator->()
const;
277 Self operator++(
int);
294 template <
typename T >
298 template <
typename T>
301 if(capacity > (_owner->edgeCapacity()+1))
303 _tabData.resize(capacity,_dflt);
307 _tabData.resize(_owner->edgeCapacity()+1, _dflt);
309 ensure(Exception, valid() && _tabData.size() > _owner->edgeCapacity(),
"EdgeMap");
313 template <
typename T>
318 if(capacity > (_owner->edgeCapacity()+1))
320 _tabData.resize(capacity,_dflt);
324 _tabData.resize(_owner->edgeCapacity()+1,_dflt);
326 ensure(Exception, valid() && _tabData.size() > _owner->edgeCapacity(),
"EdgeMap");
330 template <
typename T>
333 require(Exception, valid(),
"EdgeMap::operator[]: invalid _owner");
334 require(Exception, e.
valid(),
"EdgeMap::operator[]: invalid edge");
335 require(Exception, &e.
owner()==_owner,
"EdgeMap::operator[]: The edge's _owner is not the map's _owner");
336 if( _owner->edgeCapacity() >= _tabData.size())
338 _tabData.resize(_owner->edgeCapacity()+1,_dflt);
340 ensure(Exception, valid() && _tabData.size() > _owner->edgeCapacity(),
"EdgeMap[]");
341 return _tabData.operator[](e.
id());
344 template <
typename T>
347 require(Exception, valid(),
"EdgeMap::operator[]: invalid _owner");
348 require(Exception, e.
valid(),
"EdgeMap::operator[]: invalid edge");
349 require(Exception, &e.
owner()==_owner,
"EdgeMap::operator[]: The edge's _owner is not the map's _owner");
350 if( _owner->edgeCapacity() >= _tabData.size() )
352 _tabData.resize(_owner->edgeCapacity()+1,_dflt);
354 ensure(Exception, valid() && _tabData.size() > _owner->edgeCapacity(),
"EdgeMap[]");
355 return _tabData.operator[](e.
id());
364 template <
typename InputIterator,
typename T>
368 for(; start != end; ++
start)
375 template <
typename T>
383 template <
typename T>
393 ConstReference value):_pMap(mapping),
394 _currentIterator(currentIterator),
409 return _pMap->operator[](*_currentIterator);
416 return &(
_pMap->operator[](*_currentIterator));
462 return !(*
this == it);
ptrdiff_t difference_type
EdgeMapIterator< ValueType > egdeEnd(ConstReference value) const
EdgeMap< T >::Pointer pointer
bool operator!=(const Self &it) const
InputIterator initValue(EdgeMap< T > &map, InputIterator start, InputIterator end, typename EdgeMap< T >::ConstReference value)
EdgeMap< T >::Reference Reference
Reference operator*() const
Reference operator[](Edge edge)
vector< T >::const_reverse_iterator ConstReverseIterator
vector< ValueType > _tabData
EdgeMapIterator< ValueType > edgeBegin(ConstReference value) const
Diades::Utils::Exception< EdgeMap > Exception
const Graph & owner() const
vector< T >::pointer Pointer
EdgeMap< T >::ConstReference ConstReference
EdgeMapIterator< T > Self
bool operator==(const Self &it) const
#define ensure(Exception, expr, message)
EdgeIterator initValue(EdgeIterator begin, EdgeIterator end, ConstReference value)
EdgeMap< T >::Pointer Pointer
const Graph & owner() const
vector< T >::size_type SizeType
vector< T >::allocator_type AllocatorType
vector< T >::const_pointer ConstPointer
vector< T >::reverse_iterator ReverseIterator
vector< T >::difference_type DifferenceType
std::forward_iterator_tag IteratorCategory
void init(Graph &g, SizeType capacity=0, ValueType dflt=ValueType())
#define require(Exception, expr, message)
Namespace of the Diades project.
bool operator!=(const Graph &g) const
vector< T >::const_reference ConstReference
list< Edge >::iterator LocalEdgeIterator
std::forward_iterator_tag iterator_category
const EdgeMap< ValueType > * _pMap
boost::adjacency_list Graph
bool operator==(const Graph &g) const
EdgeMap< T >::ValueType value_type
vector< T >::value_type ValueType
EdgeMap< T >::ValueType ValueType
EdgeIterator _currentIterator
vector< T >::reference Reference
vector< T >::const_iterator ConstIterator
vector< T >::iterator Iterator
EdgeMap< T >::Reference reference
Pointer operator->() const