# HG changeset patch # User alpar # Date 1110991221 0 # Node ID 20b26ee5812b076dbf25af31f75419626f2c039f # Parent ce885274b754c87a6246beb5f90eabe033b4a854 - Add compilation tests for the function type interface of BFS/DFS/Dijkstra - Fix the bugs covered up by these tests diff -r ce885274b754 -r 20b26ee5812b src/lemon/dfs.h --- a/src/lemon/dfs.h Wed Mar 16 13:25:19 2005 +0000 +++ b/src/lemon/dfs.h Wed Mar 16 16:40:21 2005 +0000 @@ -431,6 +431,40 @@ return *this; } + ///Sets the map indicating if a node is reached. + + ///Sets the map indicating if a node is reached. + ///If you don't use this function before calling \ref run(), + ///it will allocate one. The destuctor deallocates this + ///automatically allocated map, of course. + ///\return (*this) + Dfs &reachedMap(ReachedMap &m) + { + if(local_reached) { + delete _reached; + local_reached=false; + } + _reached = &m; + return *this; + } + + ///Sets the map indicating if a node is processed. + + ///Sets the map indicating if a node is processed. + ///If you don't use this function before calling \ref run(), + ///it will allocate one. The destuctor deallocates this + ///automatically allocated map, of course. + ///\return (*this) + Dfs &processedMap(ProcessedMap &m) + { + if(local_processed) { + delete _processed; + local_processed=false; + } + _processed = &m; + return *this; + } + public: ///\name Execution control ///The simplest way to execute the algorithm is to use diff -r ce885274b754 -r 20b26ee5812b src/lemon/dijkstra.h --- a/src/lemon/dijkstra.h Wed Mar 16 13:25:19 2005 +0000 +++ b/src/lemon/dijkstra.h Wed Mar 16 16:40:21 2005 +0000 @@ -807,6 +807,7 @@ ///as well as the \ref Dijkstra class. /// The \ref DijkstraWizardBase is a class to be the default traits of the /// \ref DijkstraWizard class. + /// \todo More named parameters are required... template class DijkstraWizardBase : public DijkstraWizardDefaultTraits { diff -r ce885274b754 -r 20b26ee5812b src/test/bfs_test.cc --- a/src/test/bfs_test.cc Wed Mar 16 13:25:19 2005 +0000 +++ b/src/test/bfs_test.cc Wed Mar 16 16:40:21 2005 +0000 @@ -58,6 +58,28 @@ } +void check_Bfs_Function_Compile() +{ + typedef int VType; + typedef concept::StaticGraph Graph; + + typedef Graph::Edge Edge; + typedef Graph::Node Node; + typedef Graph::EdgeIt EdgeIt; + typedef Graph::NodeIt NodeIt; + typedef concept::ReadMap LengthMap; + + bfs(Graph(),Node()).run(); + bfs(Graph()).source(Node()).run(); + bfs(Graph()) + .predMap(concept::WriteMap()) + .distMap(concept::WriteMap()) + .reachedMap(concept::ReadWriteMap()) + .processedMap(concept::WriteMap()) + .run(Node()); + +} + int main() { diff -r ce885274b754 -r 20b26ee5812b src/test/dfs_test.cc --- a/src/test/dfs_test.cc Wed Mar 16 13:25:19 2005 +0000 +++ b/src/test/dfs_test.cc Wed Mar 16 16:40:21 2005 +0000 @@ -58,6 +58,29 @@ } + +void check_Dfs_Function_Compile() +{ + typedef int VType; + typedef concept::StaticGraph Graph; + + typedef Graph::Edge Edge; + typedef Graph::Node Node; + typedef Graph::EdgeIt EdgeIt; + typedef Graph::NodeIt NodeIt; + typedef concept::ReadMap LengthMap; + + dfs(Graph(),Node()).run(); + dfs(Graph()).source(Node()).run(); + dfs(Graph()) + .predMap(concept::WriteMap()) + .distMap(concept::WriteMap()) + .reachedMap(concept::ReadWriteMap()) + .processedMap(concept::WriteMap()) + .run(Node()); + +} + int main() { diff -r ce885274b754 -r 20b26ee5812b src/test/dijkstra_test.cc --- a/src/test/dijkstra_test.cc Wed Mar 16 13:25:19 2005 +0000 +++ b/src/test/dijkstra_test.cc Wed Mar 16 16:40:21 2005 +0000 @@ -62,6 +62,27 @@ } +void check_Dijkstra_Function_Compile() +{ + typedef int VType; + typedef concept::StaticGraph Graph; + + typedef Graph::Edge Edge; + typedef Graph::Node Node; + typedef Graph::EdgeIt EdgeIt; + typedef Graph::NodeIt NodeIt; + typedef concept::ReadMap LengthMap; + + dijkstra(Graph(),LengthMap(),Node()).run(); + dijkstra(Graph(),LengthMap()).source(Node()).run(); + dijkstra(Graph(),LengthMap()) + .predMap(concept::WriteMap()) + .distMap(concept::WriteMap()) + .run(Node()); + +} + + int main() {