# HG changeset patch # User athos # Date 1120148010 0 # Node ID 8c14aa8f27a210ec9f6fe45dac6bae977d778280 # Parent 6d94de269ab1b13e971ab79fe28ef9af62a8b3f1 Mainly doc review. diff -r 6d94de269ab1 -r 8c14aa8f27a2 demo/Makefile.am --- a/demo/Makefile.am Wed Jun 29 19:44:30 2005 +0000 +++ b/demo/Makefile.am Thu Jun 30 16:13:30 2005 +0000 @@ -5,6 +5,7 @@ noinst_PROGRAMS = \ dim_to_dot \ + dijkstra_demo \ dim_to_lgf \ graph_to_eps_demo \ min_route \ @@ -23,6 +24,8 @@ dim_to_dot_SOURCES = dim_to_dot.cc +dijkstra_demo_SOURCES = dijkstra_demo.cc + dim_to_lgf_SOURCES = dim_to_lgf.cc coloring_SOURCES = coloring.cc diff -r 6d94de269ab1 -r 8c14aa8f27a2 demo/dijkstra_demo.cc --- a/demo/dijkstra_demo.cc Wed Jun 29 19:44:30 2005 +0000 +++ b/demo/dijkstra_demo.cc Thu Jun 30 16:13:30 2005 +0000 @@ -2,7 +2,7 @@ #include #include -//#include +//#include using namespace lemon; @@ -49,7 +49,7 @@ std::cout << "Dijkstra algorithm test..." << std::endl; // GraphWriter writer(std::cout, g); -// writer.writeEdgeMap("capacity", length); +// writer.writeEdgeMap("capacity", len); // writer.writeNode("source", s); // writer.writeNode("target", t); // writer.run(); diff -r 6d94de269ab1 -r 8c14aa8f27a2 demo/hello_lemon.cc --- a/demo/hello_lemon.cc Wed Jun 29 19:44:30 2005 +0000 +++ b/demo/hello_lemon.cc Thu Jun 30 16:13:30 2005 +0000 @@ -17,6 +17,11 @@ for (NodeIt j(g); j!=INVALID; ++j) if (i != j) g.addEdge(i, j); + std::cout << "Hello World!" << std::endl; + std::cout << std::endl; + std::cout << "This is library LEMON here! We have a graph!" << std::endl; + std::cout << std::endl; + std::cout << "Nodes:"; for (NodeIt i(g); i!=INVALID; ++i) std::cout << " " << g.id(i); diff -r 6d94de269ab1 -r 8c14aa8f27a2 demo/helloworld.cc --- a/demo/helloworld.cc Wed Jun 29 19:44:30 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -#include -#include - -using namespace lemon; - -int main() -{ - typedef ListGraph Graph; - typedef Graph::Edge Edge; - typedef Graph::InEdgeIt InEdgeIt; - typedef Graph::OutEdgeIt OutEdgeIt; - typedef Graph::EdgeIt EdgeIt; - typedef Graph::Node Node; - typedef Graph::NodeIt NodeIt; - - Graph g; - - for (int i = 0; i < 3; i++) - g.addNode(); - - for (NodeIt i(g); i!=INVALID; ++i) - for (NodeIt j(g); j!=INVALID; ++j) - if (i != j) g.addEdge(i, j); - - std::cout << "Hello World!" << std::endl; - std::cout << std::endl; - std::cout << "This is library LEMON here! We have a graph!" << std::endl; - std::cout << std::endl; - - std::cout << "Nodes:"; - for (NodeIt i(g); i!=INVALID; ++i) - std::cout << " " << g.id(i); - std::cout << std::endl; - - std::cout << "Edges:"; - for (EdgeIt i(g); i!=INVALID; ++i) - std::cout << " (" << g.id(g.source(i)) << "," << g.id(g.target(i)) << ")"; - std::cout << std::endl; -} diff -r 6d94de269ab1 -r 8c14aa8f27a2 doc/graph_io.dox --- a/doc/graph_io.dox Wed Jun 29 19:44:30 2005 +0000 +++ b/doc/graph_io.dox Thu Jun 30 16:13:30 2005 +0000 @@ -93,7 +93,7 @@ \subsection write Writing a graph The \c GraphWriter class provides the graph output. To write a graph -you should first give writing commands for the writer. You can declare +you should first give writing commands to the writer. You can declare write command as \c NodeMap or \c EdgeMap writing and labeled Node and Edge writing. @@ -248,7 +248,7 @@ \endcode The global functionality of the reader class can be changed by giving a -special template parameter for the GraphReader class. By default, the +special template parameter to the GraphReader class. By default, the template parameter is \c DefaultReaderTraits. A reader traits class should provide an inner template class Reader for each type, and an DefaultReader for skipping a value. diff -r 6d94de269ab1 -r 8c14aa8f27a2 doc/quicktour.dox --- a/doc/quicktour.dox Wed Jun 29 19:44:30 2005 +0000 +++ b/doc/quicktour.dox Thu Jun 30 16:13:30 2005 +0000 @@ -44,28 +44,19 @@ LEMON graph types: the typedefs in the beginning are for convenience and we will suppose them later as well. -\code +\dontinclude hello_lemon.cc +\skip ListGraph +\until addEdge - typedef ListGraph Graph; - typedef Graph::NodeIt NodeIt; +See the whole program in file \ref hello_lemon.cc in \c demo subdir of +LEMON package. - Graph g; - - for (int i = 0; i < 3; i++) - g.addNode(); - - for (NodeIt i(g); i!=INVALID; ++i) - for (NodeIt j(g); j!=INVALID; ++j) - if (i != j) g.addEdge(i, j); + If you want to read more on the LEMON graph structures and +concepts, read the page about \ref graphs "graphs". -\endcode - -See the whole program in file \ref helloworld.cc. - - If you want to read more on the LEMON graph structures and concepts, read the page about \ref graphs "graphs". - -
  • The following code shows how to read a graph from a stream (e.g. a file) -in the DIMACS file format (find the documentation of the DIMACS file formats on the web). +
  • The following code shows how to read a graph from a stream +(e.g. a file) in the DIMACS file format (find the documentation of the +DIMACS file formats on the web). \code Graph g; @@ -73,13 +64,13 @@ readDimacs(f, g); \endcode -One can also store network (graph+capacity on the edges) instances and other -things (minimum cost flow instances etc.) in DIMACS format and use these in LEMON: to see the details read the -documentation of the \ref dimacs.h "Dimacs file format reader". There you will -also find the details about the output routines into files of the DIMACS -format. +One can also store network (graph+capacity on the edges) instances and +other things (minimum cost flow instances etc.) in DIMACS format and +use these in LEMON: to see the details read the documentation of the +\ref dimacs.h "Dimacs file format reader". There you will also find +the details about the output routines into files of the DIMACS format. -
  • We needed much greater flexibility than the DIMACS formats could give us, +
  • DIMACS formats could not give us the flexibility we needed, so we worked out our own file format. Instead of any explanation let us give a short example file in this format: read the detailed description of the LEMON graph file format and input-output routines \ref graph-io-page here. @@ -239,7 +230,7 @@ commercial solver. So far we have an -interface for the commercial LP solver software \b CLPLEX (developed by ILOG) +interface for the commercial LP solver software \b CPLEX (developed by ILOG) and for the open source solver \b GLPK (a shorthand for Gnu Linear Programming Toolkit). diff -r 6d94de269ab1 -r 8c14aa8f27a2 lemon/concept/sym_graph.h --- a/lemon/concept/sym_graph.h Wed Jun 29 19:44:30 2005 +0000 +++ b/lemon/concept/sym_graph.h Thu Jun 30 16:13:30 2005 +0000 @@ -36,7 +36,7 @@ /// This class provides all the common features of a symmetric /// graph structure, however completely without implementations and /// real data structures behind the interface. - /// All graph algorithms should compile with this class, but it will not + /// All graph algorithms should compile with this class, but they will not /// run properly, of course. /// /// It can be used for checking the interface compatibility, @@ -51,7 +51,7 @@ public: /// Defalult constructor. - /// Defalult constructor. + /// Default constructor. /// StaticSymGraph() { } ///Copy consructor. @@ -595,9 +595,9 @@ class ExtendableSymGraph : public StaticSymGraph { public: - /// Defalult constructor. + /// Default constructor. - /// Defalult constructor. + /// Default constructor. /// ExtendableSymGraph() { } ///Add a new node to the graph. @@ -627,9 +627,9 @@ class ErasableSymGraph : public ExtendableSymGraph { public: - /// Defalult constructor. + /// Default constructor. - /// Defalult constructor. + /// Default constructor. /// ErasableSymGraph() { } /// Deletes a node. diff -r 6d94de269ab1 -r 8c14aa8f27a2 lemon/graph_utils.h --- a/lemon/graph_utils.h Wed Jun 29 19:44:30 2005 +0000 +++ b/lemon/graph_utils.h Thu Jun 30 16:13:30 2005 +0000 @@ -73,7 +73,7 @@ /// /// This function counts the nodes in the graph. /// The complexity of the function is O(n) but for some - /// graph structure it is specialized to run in O(1). + /// graph structures it is specialized to run in O(1). /// /// \todo refer how to specialize it @@ -100,7 +100,7 @@ /// /// This function counts the edges in the graph. /// The complexity of the function is O(e) but for some - /// graph structure it is specialized to run in O(1). + /// graph structures it is specialized to run in O(1). template inline int countEdges(const Graph& g) { @@ -121,9 +121,9 @@ return countItems(w.value); } - /// \brief Function to count the edges in the graph. + /// \brief Function to count the undirected edges in the graph. /// - /// This function counts the edges in the graph. + /// This function counts the undirected edges in the graph. /// The complexity of the function is O(e) but for some /// graph structure it is specialized to run in O(1). @@ -174,19 +174,19 @@ return e; } - ///\e - - ///\todo Please document. + /// \brief Function to count the number of the out-edges from node \c n. /// + /// This function counts the number of the out-edges from node \c n + /// in the graph. template inline int countOutEdges(const Graph& _g, const typename Graph::Node& _n) { return countNodeDegree(_g, _n); } - ///\e - - ///\todo Please document. + /// \brief Function to count the number of the in-edges to node \c n. /// + /// This function counts the number of the in-edges to node \c n + /// in the graph. template inline int countInEdges(const Graph& _g, const typename Graph::Node& _n) { return countNodeDegree(_g, _n); @@ -364,7 +364,7 @@ /// Provides an immutable and unique id for each item in the graph. - /// The IdMap class provides an unique and immutable mapping for each item + /// The IdMap class provides a unique and immutable mapping for each item /// in the graph. /// template @@ -429,14 +429,14 @@ }; - /// \brief General inversable graph-map type. + /// \brief General invertable graph-map type. - /// This type provides simple inversable map functions. - /// The InversableMap wraps an arbitrary ReadWriteMap - /// and if a key is setted to a new value then store it + /// This type provides simple invertable map functions. + /// The InvertableMap wraps an arbitrary ReadWriteMap + /// and if a key is set to a new value then store it /// in the inverse map. /// \param _Graph The graph type. - /// \param _Map The map to extend with inversable functionality. + /// \param _Map The map to extend with invertable functionality. template < typename _Graph, typename _Item, diff -r 6d94de269ab1 -r 8c14aa8f27a2 lemon/graph_writer.h --- a/lemon/graph_writer.h Wed Jun 29 19:44:30 2005 +0000 +++ b/lemon/graph_writer.h Thu Jun 30 16:13:30 2005 +0000 @@ -33,9 +33,12 @@ /// \brief The graph writer class. /// - /// The \c GraphWriter class provides the graph output. To write a graph - /// you should first give writing commands for the writer. You can declare - /// write command as \c NodeMap or \c EdgeMap writing and labeled Node and + /// The \c GraphWriter class provides the graph output. + /// Before you read this documentation it might be useful to read the general + /// description of \ref graph-io-page "Graph Input-Output". + /// To write a graph + /// you should first give writing commands to the writer. You can declare + /// write commands as \c NodeMap or \c EdgeMap writing and labeled Node and /// Edge writing. /// /// \code @@ -46,7 +49,7 @@ /// command in the \c GraphWriter. You should give as parameter /// the name of the map and the map object. The NodeMap writing /// command with name "id" should write a unique map because it - /// is regarded as ID map. + /// is regarded as ID map (such a map is essential if the graph has edges). /// /// \code /// IdMap nodeIdMap; @@ -69,8 +72,8 @@ /// \endcode /// /// With \c writeNode() and \c writeEdge() functions you can - /// point out Nodes and Edges in the graph. By example, you can - /// write out the source and target of the graph. + /// point out Nodes and Edges in the graph. For example, you can + /// write out the source and target of a maximum flow instance. /// /// \code /// writer.writeNode("source", sourceNode); @@ -80,7 +83,7 @@ /// \endcode /// /// After you give all write commands you must call the \c run() member - /// function, which execute all the writer commands. + /// function, which executes all the writing commands. /// /// \code /// writer.run(); @@ -105,7 +108,7 @@ /// \brief Construct a new GraphWriter. /// - /// Construct a new GraphWriter. It writes the given graph + /// This function constructs a new GraphWriter to write the given graph /// to the given stream. GraphWriter(std::ostream& _os, const Graph& _graph) : writer(new LemonWriter(_os)), own_writer(true), @@ -117,7 +120,7 @@ /// \brief Construct a new GraphWriter. /// - /// Construct a new GraphWriter. It writes into the given graph + /// This function constructs a new GraphWriter to write the given graph /// to the given file. GraphWriter(const std::string& _filename, const Graph& _graph) : writer(new LemonWriter(_filename)), own_writer(true), @@ -129,8 +132,8 @@ /// \brief Construct a new GraphWriter. /// - /// Construct a new GraphWriter. It writes into the given graph - /// to given LemonReader. + /// This function constructs a new GraphWriter to write the given graph + /// to the given LemonReader. GraphWriter(LemonWriter& _writer, const Graph& _graph) : writer(_writer), own_writer(false), nodeset_writer(*writer, _graph, std::string()), @@ -141,24 +144,24 @@ /// \brief Destruct the graph writer. /// - /// Destruct the graph writer. + /// This function destructs the graph writer. ~GraphWriter() { if (own_writer) delete writer; } - /// \brief Add a new node map writer command for the writer. + /// \brief Issue a new node map writing command for the writer. /// - /// Add a new node map writer command for the writer. + /// This function issues a new node map writing command to the writer. template GraphWriter& writeNodeMap(std::string name, const Map& map) { nodeset_writer.writeNodeMap(name, map); return *this; } - /// \brief Add a new node map writer command for the writer. + /// \brief Issue a new node map writing command for the writer. /// - /// Add a new node map writer command for the writer. + /// This function issues a new node map writing command to the writer. template GraphWriter& writeNodeMap(std::string name, const Map& map, const Writer& writer = Writer()) { @@ -167,9 +170,9 @@ } - /// \brief Add a new edge map writer command for the writer. + /// \brief Issue a new edge map writing command for the writer. /// - /// Add a new edge map writer command for the writer. + /// This function issues a new edge map writing command to the writer. template GraphWriter& writeEdgeMap(std::string name, const Map& map) { edgeset_writer.writeEdgeMap(name, map); @@ -177,9 +180,9 @@ } - /// \brief Add a new edge map writer command for the writer. + /// \brief Issue a new edge map writing command for the writer. /// - /// Add a new edge map writer command for the writer. + /// This function issues a new edge map writing command to the writer. template GraphWriter& writeEdgeMap(std::string name, const Map& map, const Writer& writer = Writer()) { @@ -187,33 +190,37 @@ return *this; } - /// \brief Add a new labeled node writer for the writer. + /// \brief Issue a new labeled node writing command to the writer. /// - /// Add a new labeled node writer for the writer. + /// This function issues a new labeled node writing command + /// to the writer. GraphWriter& writeNode(std::string name, const Node& node) { node_writer.writeNode(name, node); return *this; } - /// \brief Add a new labeled edge writer for the writer. + /// \brief Issue a new labeled edge writing command to the writer. /// - /// Add a new labeled edge writer for the writer. + /// This function issues a new labeled edge writing command + /// to the writer. GraphWriter& writeEdge(std::string name, const Edge& edge) { edge_writer.writeEdge(name, edge); } - /// \brief Add a new attribute writer command. + /// \brief Issue a new attribute writing command. /// - /// Add a new attribute writer command. + /// This function issues a new attribute writing command + /// to the writer. template GraphWriter& writeAttribute(std::string name, const Value& value) { attribute_writer.writeAttribute(name, value); return *this; } - /// \brief Add a new attribute writer command. + /// \brief Issue a new attribute writing command. /// - /// Add a new attribute writer command. + /// This function issues a new attribute writing command + /// to the writer. template GraphWriter& writeAttribute(std::string name, const Value& value, const Writer& writer) { @@ -223,7 +230,7 @@ /// \brief Conversion operator to LemonWriter. /// - /// Conversion operator to LemonWriter. It make possible + /// Conversion operator to LemonWriter. It makes possible /// to access the encapsulated \e LemonWriter, this way /// you can attach to this writer new instances of /// \e LemonWriter::SectionWriter. @@ -231,9 +238,9 @@ return *writer; } - /// \brief Executes the writer commands. + /// \brief Executes the writing commands. /// - /// Executes the writer commands. + /// Executes the writing commands. void run() { writer->run(); } @@ -241,7 +248,7 @@ /// \brief Write the id of the given node. /// /// It writes the id of the given node. If there was written an "id" - /// named node map then it will write the map value belongs to the node. + /// named node map then it will write the map value belonging to the node. void writeId(std::ostream& os, const Node& item) const { nodeset_writer.writeId(os, item); } @@ -249,7 +256,7 @@ /// \brief Write the id of the given edge. /// /// It writes the id of the given edge. If there was written an "id" - /// named edge map then it will write the map value belongs to the edge. + /// named edge map then it will write the map value belonging to the edge. void writeId(std::ostream& os, const Edge& item) const { edgeset_writer.writeId(os, item); } @@ -373,7 +380,7 @@ /// \brief The undirected graph writer class. /// /// The \c UndirGraphWriter class provides the undir graph output. To write - /// a graph you should first give writing commands for the writer. You can + /// a graph you should first give writing commands to the writer. You can /// declare write command as \c NodeMap, \c EdgeMap or \c UndirEdgeMap /// writing and labeled Node, Edge or UndirEdge writing. /// @@ -416,7 +423,7 @@ /// /// /// With \c writeNode() and \c writeUndirEdge() functions you can - /// point out nodes and undirected edges in the graph. By example, you can + /// designate nodes and undirected edges in the graph. For example, you can /// write out the source and target of the graph. /// /// \code @@ -427,7 +434,7 @@ /// \endcode /// /// After you give all write commands you must call the \c run() member - /// function, which execute all the writer commands. + /// function, which executes all the writing commands. /// /// \code /// writer.run(); @@ -465,7 +472,7 @@ /// \brief Construct a new UndirGraphWriter. /// - /// Construct a new UndirGraphWriter. It writes into the given graph + /// Construct a new UndirGraphWriter. It writes the given graph /// to the given file. UndirGraphWriter(const std::string& _filename, const Graph& _graph) : writer(new LemonWriter(_filename)), own_writer(true), @@ -477,7 +484,7 @@ /// \brief Construct a new UndirGraphWriter. /// - /// Construct a new UndirGraphWriter. It writes into the given graph + /// Construct a new UndirGraphWriter. It writes the given graph /// to given LemonReader. UndirGraphWriter(LemonWriter& _writer, const Graph& _graph) : writer(_writer), own_writer(false), @@ -495,18 +502,18 @@ delete writer; } - /// \brief Add a new node map writer command for the writer. + /// \brief Issue a new node map writing command to the writer. /// - /// Add a new node map writer command for the writer. + /// This function issues a new node map writing command to the writer. template UndirGraphWriter& writeNodeMap(std::string name, const Map& map) { nodeset_writer.writeNodeMap(name, map); return *this; } - /// \brief Add a new node map writer command for the writer. + /// \brief Issue a new node map writing command to the writer. /// - /// Add a new node map writer command for the writer. + /// This function issues a new node map writing command to the writer. template UndirGraphWriter& writeNodeMap(std::string name, const Map& map, const Writer& writer = Writer()) { @@ -514,18 +521,18 @@ return *this; } - /// \brief Add a new edge map writer command for the writer. + /// \brief Issue a new edge map writing command to the writer. /// - /// Add a new edge map writer command for the writer. + /// This function issues a new edge map writing command to the writer. template UndirGraphWriter& writeEdgeMap(std::string name, const Map& map) { undir_edgeset_writer.writeEdgeMap(name, map); return *this; } - /// \brief Add a new edge map writer command for the writer. + /// \brief Issue a new edge map writing command to the writer. /// - /// Add a new edge map writer command for the writer. + /// This function issues a new edge map writing command to the writer. template UndirGraphWriter& writeEdgeMap(std::string name, const Map& map, const Writer& writer = Writer()) { @@ -533,18 +540,20 @@ return *this; } - /// \brief Add a new undirected edge map writer command for the writer. + /// \brief Issue a new undirected edge map writing command to the writer. /// - /// Add a new undirected edge map writer command for the writer. + /// This function issues a new undirected edge map writing + /// command to the writer. template UndirGraphWriter& writeUndirEdgeMap(std::string name, const Map& map) { undir_edgeset_writer.writeUndirEdgeMap(name, map); return *this; } - /// \brief Add a new undirected edge map writer command for the writer. + /// \brief Issue a new undirected edge map writing command to the writer. /// - /// Add a new edge undirected map writer command for the writer. + /// This function issues a new undirected edge map writing + /// command to the writer. template UndirGraphWriter& writeUndirEdgeMap(std::string name, const Map& map, const Writer& writer = Writer()) { @@ -552,40 +561,46 @@ return *this; } - /// \brief Add a new labeled node writer for the writer. + /// \brief Issue a new labeled node writer to the writer. /// - /// Add a new labeled node writer for the writer. + /// This function issues a new labeled node writing + /// command to the writer. UndirGraphWriter& writeNode(std::string name, const Node& node) { node_writer.writeNode(name, node); return *this; } - /// \brief Add a new labeled edge writer for the writer. + /// \brief Issue a new labeled edge writer to the writer. /// - /// Add a new labeled edge writer for the writer. + /// This function issues a new labeled edge writing + /// command to the writer. UndirGraphWriter& writeEdge(std::string name, const Edge& edge) { undir_edge_writer.writeEdge(name, edge); } - /// \brief Add a new labeled undirected edge writer for the writer. + /// \brief Issue a new labeled undirected edge writing command to + /// the writer. /// - /// Add a new labeled undirected edge writer for the writer. + /// Issue a new labeled undirected edge writing command to + /// the writer. UndirGraphWriter& writeUndirEdge(std::string name, const UndirEdge& edge) { undir_edge_writer.writeUndirEdge(name, edge); } - /// \brief Add a new attribute writer command. + /// \brief Issue a new attribute writing command. /// - /// Add a new attribute writer command. + /// This function issues a new attribute writing + /// command to the writer. template UndirGraphWriter& writeAttribute(std::string name, const Value& value) { attribute_writer.writeAttribute(name, value); return *this; } - /// \brief Add a new attribute writer command. + /// \brief Issue a new attribute writing command. /// - /// Add a new attribute writer command. + /// This function issues a new attribute writing + /// command to the writer. template UndirGraphWriter& writeAttribute(std::string name, const Value& value, const Writer& writer) { @@ -595,7 +610,7 @@ /// \brief Conversion operator to LemonWriter. /// - /// Conversion operator to LemonWriter. It make possible + /// Conversion operator to LemonWriter. It makes possible /// to access the encapsulated \e LemonWriter, this way /// you can attach to this writer new instances of /// \e LemonWriter::SectionWriter. @@ -603,9 +618,9 @@ return *writer; } - /// \brief Executes the writer commands. + /// \brief Executes the writing commands. /// - /// Executes the writer commands. + /// Executes the writing commands. void run() { writer->run(); } @@ -613,7 +628,7 @@ /// \brief Write the id of the given node. /// /// It writes the id of the given node. If there was written an "id" - /// named node map then it will write the map value belongs to the node. + /// named node map then it will write the map value belonging to the node. void writeId(std::ostream& os, const Node& item) const { nodeset_writer.writeId(os, item); } @@ -621,7 +636,7 @@ /// \brief Write the id of the given edge. /// /// It writes the id of the given edge. If there was written an "id" - /// named edge map then it will write the map value belongs to the edge. + /// named edge map then it will write the map value belonging to the edge. void writeId(std::ostream& os, const Edge& item) const { undir_edgeset_writer.writeId(os, item); } @@ -629,7 +644,7 @@ /// \brief Write the id of the given undirected edge. /// /// It writes the id of the given undirected edge. If there was written - /// an "id" named edge map then it will write the map value belongs to + /// an "id" named edge map then it will write the map value belonging to /// the edge. void writeId(std::ostream& os, const UndirEdge& item) const { undir_edgeset_writer.writeId(os, item); @@ -651,9 +666,11 @@ }; - /// \brief Write an undirected graph to the output. + /// \brief Write an undirected multigraph (undirected graph + capacity + /// map on the edges) to the output. /// - /// Write an undirected graph to the output. + /// Write an undirected multigraph (undirected graph + capacity + /// map on the edges) to the output. /// \param os The output stream. /// \param g The graph. /// \param capacity The capacity undirected map.