1 #ifndef __FPA__BASE__DIJKSTRA__HXX__
2 #define __FPA__BASE__DIJKSTRA__HXX__
6 // -------------------------------------------------------------------------
7 template< class V, class C, class R, class B >
8 fpa::Base::Dijkstra< V, C, R, B >::
14 // -------------------------------------------------------------------------
15 template< class V, class C, class R, class B >
16 fpa::Base::Dijkstra< V, C, R, B >::
21 // -------------------------------------------------------------------------
22 template< class V, class C, class R, class B >
23 bool fpa::Base::Dijkstra< V, C, R, B >::
24 _ComputeNeighborResult(
25 TResult& result, const TVertex& neighbor, const TVertex& parent
28 result = this->_Cost( neighbor, parent );
29 result *= TResult( this->_Distance( neighbor, parent ) );
31 _TNode pn = this->_Node( parent );
32 if( pn.Label == Self::AliveLabel )
38 // -------------------------------------------------------------------------
39 template< class V, class C, class R, class B >
40 bool fpa::Base::Dijkstra< V, C, R, B >::
41 _IsQueueEmpty( ) const
43 return( this->m_Queue.empty( ) );
46 // -------------------------------------------------------------------------
47 template< class V, class C, class R, class B >
48 void fpa::Base::Dijkstra< V, C, R, B >::
49 _QueuePush( const _TNode& n )
51 this->m_Queue.push_back( n );
53 this->m_Queue.begin( ), this->m_Queue.end( ), Self::m_NodeCompare
57 // -------------------------------------------------------------------------
58 template< class V, class C, class R, class B >
59 typename fpa::Base::Dijkstra< V, C, R, B >::
60 _TNode fpa::Base::Dijkstra< V, C, R, B >::
63 _TNode n = this->m_Queue.front( );
65 this->m_Queue.begin( ), this->m_Queue.end( ), Self::m_NodeCompare
67 this->m_Queue.pop_back( );
71 // -------------------------------------------------------------------------
72 template< class V, class C, class R, class B >
73 void fpa::Base::Dijkstra< V, C, R, B >::
76 this->m_Queue.clear( );
79 #endif // __FPA__BASE__DIJKSTRA__HXX__