# HG changeset patch # User hegyi # Date 1107531131 0 # Node ID a2e93889a60449184b5503a505e02ee8973711fd # Parent 3ce7fc516ccab628b5e4523494f9c1dfa8942b11 Documentation is developing itself, but is not ready yet. diff -r 3ce7fc516cca -r a2e93889a604 src/work/alpar/dijkstra.h --- a/src/work/alpar/dijkstra.h Thu Feb 03 19:31:37 2005 +0000 +++ b/src/work/alpar/dijkstra.h Fri Feb 04 15:32:11 2005 +0000 @@ -72,7 +72,8 @@ typedef typename Graph::template NodeMap PredMap; ///Instantiates a PredMap. - ///\todo Please document... + ///This function instantiates a \ref PredMap. + ///\param G is the graph, to which we would like to define the PredMap. ///\todo The graph alone may be insufficient for the initialization static PredMap *createPredMap(const GR &G) { @@ -86,8 +87,8 @@ typedef typename Graph::template NodeMap PredNodeMap; ///Instantiates a PredNodeMap. - ///\todo Please document... - /// + ///This function instantiates a \ref PredNodeMap. + ///\param G is the graph, to which we would like to define the \ref PredNodeMap static PredNodeMap *createPredNodeMap(const GR &G) { return new PredNodeMap(G); @@ -102,8 +103,8 @@ typedef NullMap ReachedMap; ///Instantiates a ReachedMap. - ///\todo Please document... - /// + ///This function instantiates a \ref ReachedMap. + ///\param G is the graph, to which we would like to define the \ref ReachedMap static ReachedMap *createReachedMap(const GR &G) { return new ReachedMap(); @@ -115,8 +116,8 @@ typedef typename Graph::template NodeMap DistMap; ///Instantiates a DistMap. - ///\todo Please document... - /// + ///This function instantiates a \ref DistMap. + ///\param G is the graph, to which we would like to define the \ref DistMap static DistMap *createDistMap(const GR &G) { return new DistMap(G); @@ -506,6 +507,12 @@ }; + /// Default traits used by \ref DijkstraWizard + + /// To make it easier to use Dijkstra algorithm we created a wizard class. + /// This \ref DijkstraWizard class also needs default traits. + /// The \ref DijkstraWizardBase is a class to be the default traits of the + /// \ref DijkstraWizard class. template class DijkstraWizardBase : public DijkstraDefaultTraits { @@ -525,28 +532,52 @@ ///Pointer to the source node. void *_source; + /// Type of the nodes in the graph. typedef typename Base::Graph::Node Node; public: + /// Constructor. + + /// This constructor does not require parameters, therefore it initiates + /// all of the attributes to default values (0, INVALID). DijkstraWizardBase() : _g(0), _length(0), _pred(0), _predNode(0), _dist(0), _source(INVALID) {} + /// Constructor. + + /// This constructor requires some parameters, listed in the parameters list. + /// Others are initiated to 0. + /// \param g is the initial value of \ref _g + /// \param l is the initial value of \ref _length + /// \param s is the initial value of \ref _source DijkstraWizardBase(const GR &g,const LM &l, Node s=INVALID) : _g((void *)&g), _length((void *)&l), _pred(0), _predNode(0), _dist(0), _source((void *)&s) {} }; - ///\e + /// A class to make easier the usage of Dijkstra algorithm - ///\e + /// This class is created to make it easier to use Dijkstra algorithm. + /// It uses the functions and features of the plain \ref Dijkstra, + /// but it is much more simple to use it. /// + /// Simplicity means that the way to change the types defined + /// in the traits class is based on functions that returns the new class + /// and not on templatable built-in classes. When using the plain \Dijkstra + /// the new class with the modified type comes from the original by using the :: + /// operator. In this case only a function have to be called and it will + /// return the needed class. + /// + /// It does not have own \ref run method. When its \ref run method is called + /// it initiates a plain \ref Dijkstra class, and calls the \ref Dijkstra::run + /// method of it. template class DijkstraWizard : public TR { typedef TR Base; - //The type of the underlying graph. + ///The type of the underlying graph. typedef typename TR::Graph Graph; //\e typedef typename Graph::Node Node; @@ -557,32 +588,39 @@ //\e typedef typename Graph::OutEdgeIt OutEdgeIt; - //The type of the map that stores the edge lengths. + ///The type of the map that stores the edge lengths. typedef typename TR::LengthMap LengthMap; - //The type of the length of the edges. + ///The type of the length of the edges. typedef typename LengthMap::Value Value; - //\brief The type of the map that stores the last - //edges of the shortest paths. + ///\brief The type of the map that stores the last + ///edges of the shortest paths. typedef typename TR::PredMap PredMap; - //\brief The type of the map that stores the last but one - //nodes of the shortest paths. + ///\brief The type of the map that stores the last but one + ///nodes of the shortest paths. typedef typename TR::PredNodeMap PredNodeMap; - //The type of the map that stores the dists of the nodes. + ///The type of the map that stores the dists of the nodes. typedef typename TR::DistMap DistMap; - //The heap type used by the dijkstra algorithm. + ///The heap type used by the dijkstra algorithm. typedef typename TR::Heap Heap; public: + /// Constructor. DijkstraWizard() : TR() {} + /// Constructor that requires parameters. + /// These parameters will be the default values for the traits class. DijkstraWizard(const Graph &g,const LengthMap &l, Node s=INVALID) : TR(g,l,s) {} + ///Copy constructor DijkstraWizard(const TR &b) : TR(b) {} ~DijkstraWizard() {} - ///\e + ///Runs Dijkstra algorithm from a given node. + + ///Runs Dijkstra algorithm from a given node. + ///The node can be given by the \ref source function. void run() { if(_source==0) throw UninitializedData(); @@ -593,7 +631,10 @@ Dij.run(*(Node*)_source); } - ///\e + ///Runs Dijkstra algorithm from a given node. + + ///Runs Dijkstra algorithm from a given node. + ///\param s is the given source. void run(Node s) { _source=(void *)&s; @@ -607,7 +648,9 @@ DefPredMapBase(const Base &b) : Base(b) {} }; - ///\e + /// \ref named-templ-param "Named parameter" function for setting PredMap type + + /// \ref named-templ-param "Named parameter" function for setting PredMap type template DijkstraWizard > predMap(const T &t) { @@ -623,7 +666,9 @@ DefPredNodeMapBase(const Base &b) : Base(b) {} }; - ///\e + /// \ref named-templ-param "Named parameter" function for setting PredNodeMap type + + /// \ref named-templ-param "Named parameter" function for setting PredNodeMap type template DijkstraWizard > predNodeMap(const T &t) { @@ -638,7 +683,9 @@ DefDistMapBase(const Base &b) : Base(b) {} }; - ///\e + /// \ref named-templ-param "Named parameter" function for setting DistMap type + + /// \ref named-templ-param "Named parameter" function for setting DistMap type template DijkstraWizard > distMap(const T &t) { @@ -646,7 +693,10 @@ return DijkstraWizard >(*this); } - ///\e + /// Sets the source node, from which the Dijkstra algorithm runs. + + /// Sets the source node, from which the Dijkstra algorithm runs. + /// \param s is the source node. DijkstraWizard &source(Node s) { source=(void *)&s;