Changes in / [193:65cba1032f90:191:abc5b9d0c67e] in lemon-main
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/groups.dox
r192 r156 476 476 @defgroup lemon_io Lemon Input-Output 477 477 @ingroup io_group 478 \brief Reading and writing \ref lgf-format "Lemon Graph Format". 479 480 This group describes methods for reading and writing \ref lgf-format "Lemon Graph Format". 478 \brief Reading and writing LEMON format 479 480 This group describes methods for reading and writing LEMON format. 481 You can find more about this format on the \ref graph-io-page "Graph Input-Output" 482 tutorial pages. 481 483 */ 482 484 -
doc/lgf.dox
r192 r162 47 47 48 48 The \c \@nodes section describes a set of nodes and associated 49 maps. The first is a header line, it scolumns are the names of the49 maps. The first is a header line, it columns are the names of the 50 50 maps appearing in the following lines. 51 51 One of the maps must be called \c … … 65 65 66 66 The \c \@arcs section is very similar to the \c \@nodes section, 67 it again starts with a header line describing the names of the maps,67 it again starts with a header line describing the names of the arc, 68 68 but the \c "label" map is not obligatory here. The following lines 69 69 describe the arcs. The first two tokens of each line are -
lemon/lgf_reader.h
r192 r190 19 19 ///\ingroup lemon_io 20 20 ///\file 21 ///\brief \ref lgf-format "Lemon Graph Format"reader.21 ///\brief Lemon Graph Format reader. 22 22 23 23 … … 401 401 /// \ingroup lemon_io 402 402 /// 403 /// \brief \ref lgf-format "LGF"reader for directed graphs403 /// \brief LGF reader for directed graphs 404 404 /// 405 405 /// This utility reads an \ref lgf-format "LGF" file. … … 411 411 /// with the \c nodeMap() or \c arcMap() members. An optional 412 412 /// converter parameter can also be added as a standard functor 413 /// converting from \cstd::string to the value type of the map. If it413 /// converting from std::string to the value type of the map. If it 414 414 /// is set, it will determine how the tokens in the file should be 415 /// converted to the value type of the map. If the functor is not set,415 /// is converted to the map's value type. If the functor is not set, 416 416 /// then a default conversion will be used. One map can be read into 417 417 /// multiple map objects at the same time. The \c attribute(), \c … … 420 420 /// 421 421 ///\code 422 /// DigraphReader<Digraph>(std::cin, digraph).423 /// nodeMap("coordinates", coord_map).424 /// arcMap("capacity", cap_map).425 /// node("source", src).426 /// node("target", trg).427 /// attribute("caption", caption).428 /// run();422 /// DigraphReader<Digraph>(std::cin, digraph). 423 /// nodeMap("coordinates", coord_map). 424 /// arcMap("capacity", cap_map). 425 /// node("source", src). 426 /// node("target", trg). 427 /// attribute("caption", caption). 428 /// run(); 429 429 ///\endcode 430 430 /// … … 438 438 /// graph) during the reading, but instead the label map of the items 439 439 /// are given as a parameter of these functions. An 440 /// application of these function sis multipass reading, which is441 /// important if two \ c\@arcs sections must be read from the442 /// file. In this case the first phase would read the node set and one440 /// application of these function is multipass reading, which is 441 /// important if two \e \@arcs sections must be read from the 442 /// file. In this example the first phase would read the node set and one 443 443 /// of the arc sets, while the second phase would read the second arc 444 444 /// set into an \e ArcSet class (\c SmartArcSet or \c ListArcSet). 445 445 /// The previously read label node map should be passed to the \c 446 446 /// useNodes() functions. Another application of multipass reading when 447 /// paths are given as a node map or an arc map. It is impossible toread this in447 /// paths are given as a node map or an arc map. It is impossible read this in 448 448 /// a single pass, because the arcs are not constructed when the node 449 449 /// maps are read. … … 736 736 /// Use previously constructed node set, and specify the node 737 737 /// label map and a functor which converts the label map values to 738 /// \cstd::string.738 /// std::string. 739 739 template <typename Map, typename Converter> 740 740 DigraphReader& useNodes(const Map& map, … … 769 769 /// Use previously constructed arc set, and specify the arc 770 770 /// label map and a functor which converts the label map values to 771 /// \cstd::string.771 /// std::string. 772 772 template <typename Map, typename Converter> 773 773 DigraphReader& useArcs(const Map& map, … … 785 785 /// 786 786 /// Omit the reading of the node section. This implies that each node 787 /// map reading rule will be aban doned, and the nodes of the graph787 /// map reading rule will be abanoned, and the nodes of the graph 788 788 /// will not be constructed, which usually cause that the arc set 789 /// could not be read due to lack of node name resolving. 790 /// Therefore \c skipArcs() function should also be used, or 791 /// \c useNodes() should be used to specify the label of the nodes. 789 /// could not be read due to lack of node name 790 /// resolving. Therefore, the \c skipArcs() should be used too, or 791 /// the useNodes() member function should be used to specify the 792 /// label of the nodes. 792 793 DigraphReader& skipNodes() { 793 794 LEMON_ASSERT(!_skip_nodes, "Skip nodes already set"); … … 799 800 /// 800 801 /// Omit the reading of the arc section. This implies that each arc 801 /// map reading rule will be aban doned, and the arcs of the graph802 /// map reading rule will be abanoned, and the arcs of the graph 802 803 /// will not be constructed. 803 804 DigraphReader& skipArcs() { … … 1175 1176 }; 1176 1177 1177 /// \brief Return a \ref DigraphReader class1178 ///1179 /// This function just returns a \ref DigraphReader class.1180 1178 /// \relates DigraphReader 1181 1179 template <typename Digraph> … … 1185 1183 } 1186 1184 1187 /// \brief Return a \ref DigraphReader class1188 ///1189 /// This function just returns a \ref DigraphReader class.1190 1185 /// \relates DigraphReader 1191 1186 template <typename Digraph> … … 1196 1191 } 1197 1192 1198 /// \brief Return a \ref DigraphReader class1199 ///1200 /// This function just returns a \ref DigraphReader class.1201 1193 /// \relates DigraphReader 1202 1194 template <typename Digraph> … … 1220 1212 /// \ingroup lemon_io 1221 1213 /// 1222 /// \brief \ref lgf-format "LGF"reader for undirected graphs1214 /// \brief LGF reader for undirected graphs 1223 1215 /// 1224 1216 /// This utility reads an \ref lgf-format "LGF" file. 1225 ///1226 /// It can be used almost the same way as \c DigraphReader.1227 /// The only difference is that this class can handle edges and1228 /// edge maps as well as arcs and arc maps.1229 1217 template <typename _Graph> 1230 1218 class GraphReader { … … 1275 1263 /// \brief Constructor 1276 1264 /// 1277 /// Construct a nundirected graph reader, which reads from the given1265 /// Construct a undirected graph reader, which reads from the given 1278 1266 /// input stream. 1279 1267 GraphReader(std::istream& is, Graph& graph) … … 1284 1272 /// \brief Constructor 1285 1273 /// 1286 /// Construct a nundirected graph reader, which reads from the given1274 /// Construct a undirected graph reader, which reads from the given 1287 1275 /// file. 1288 1276 GraphReader(const std::string& fn, Graph& graph) … … 1293 1281 /// \brief Constructor 1294 1282 /// 1295 /// Construct a nundirected graph reader, which reads from the given1283 /// Construct a undirected graph reader, which reads from the given 1296 1284 /// file. 1297 1285 GraphReader(const char* fn, Graph& graph) … … 1510 1498 /// \brief Set \c \@nodes section to be read 1511 1499 /// 1512 /// Set \c \@nodes section to be read .1500 /// Set \c \@nodes section to be read 1513 1501 GraphReader& nodes(const std::string& caption) { 1514 1502 _nodes_caption = caption; … … 1518 1506 /// \brief Set \c \@edges section to be read 1519 1507 /// 1520 /// Set \c \@edges section to be read .1508 /// Set \c \@edges section to be read 1521 1509 GraphReader& edges(const std::string& caption) { 1522 1510 _edges_caption = caption; … … 1526 1514 /// \brief Set \c \@attributes section to be read 1527 1515 /// 1528 /// Set \c \@attributes section to be read .1516 /// Set \c \@attributes section to be read 1529 1517 GraphReader& attributes(const std::string& caption) { 1530 1518 _attributes_caption = caption; … … 1557 1545 /// Use previously constructed node set, and specify the node 1558 1546 /// label map and a functor which converts the label map values to 1559 /// \cstd::string.1547 /// std::string. 1560 1548 template <typename Map, typename Converter> 1561 1549 GraphReader& useNodes(const Map& map, … … 1590 1578 /// Use previously constructed edge set, and specify the edge 1591 1579 /// label map and a functor which converts the label map values to 1592 /// \cstd::string.1580 /// std::string. 1593 1581 template <typename Map, typename Converter> 1594 1582 GraphReader& useEdges(const Map& map, … … 1603 1591 } 1604 1592 1605 /// \brief Skip the reading of node section1593 /// \brief Skips the reading of node section 1606 1594 /// 1607 1595 /// Omit the reading of the node section. This implies that each node 1608 /// map reading rule will be aban doned, and the nodes of the graph1596 /// map reading rule will be abanoned, and the nodes of the graph 1609 1597 /// will not be constructed, which usually cause that the edge set 1610 1598 /// could not be read due to lack of node name 1611 /// could not be read due to lack of node name resolving.1612 /// Therefore \c skipEdges() function should also be used, or1613 /// \c useNodes() should be used to specify thelabel of the nodes.1599 /// resolving. Therefore, the \c skipEdges() should be used too, or 1600 /// the useNodes() member function should be used to specify the 1601 /// label of the nodes. 1614 1602 GraphReader& skipNodes() { 1615 1603 LEMON_ASSERT(!_skip_nodes, "Skip nodes already set"); … … 1618 1606 } 1619 1607 1620 /// \brief Skip the reading of edge section1608 /// \brief Skips the reading of edge section 1621 1609 /// 1622 1610 /// Omit the reading of the edge section. This implies that each edge 1623 /// map reading rule will be aban doned, and the edges of the graph1611 /// map reading rule will be abanoned, and the edges of the graph 1624 1612 /// will not be constructed. 1625 1613 GraphReader& skipEdges() { … … 1995 1983 }; 1996 1984 1997 /// \brief Return a \ref GraphReader class1998 ///1999 /// This function just returns a \ref GraphReader class.2000 1985 /// \relates GraphReader 2001 1986 template <typename Graph> … … 2005 1990 } 2006 1991 2007 /// \brief Return a \ref GraphReader class2008 ///2009 /// This function just returns a \ref GraphReader class.2010 1992 /// \relates GraphReader 2011 1993 template <typename Graph> … … 2016 1998 } 2017 1999 2018 /// \brief Return a \ref GraphReader class2019 ///2020 /// This function just returns a \ref GraphReader class.2021 2000 /// \relates GraphReader 2022 2001 template <typename Graph> … … 2032 2011 SectionReader sectionReader(const char* fn); 2033 2012 2034 /// \ingroup lemon_io2035 ///2036 2013 /// \brief Section reader class 2037 2014 /// 2038 /// In the \ ref lgf-format "LGF" file extra sections can be placed,2039 /// which contain any data in arbitrary format. Such sections can be2040 /// read with this class. A reading rule can be added to the class2041 /// with two different functions. With the \c sectionLines() function a2042 /// functor can process the section line-by-line, while with the \c2015 /// In the \e LGF file extra sections can be placed, which contain 2016 /// any data in arbitrary format. Such sections can be read with 2017 /// this class. A reading rule can be added with two different 2018 /// functions, with the \c sectionLines() function a functor can 2019 /// process the section line-by-line. While with the \c 2043 2020 /// sectionStream() member the section can be read from an input 2044 2021 /// stream. … … 2129 2106 ///\endcode 2130 2107 /// 2131 /// The functor is implemented as a struct:2108 /// The functor is implemented as an struct: 2132 2109 ///\code 2133 2110 /// struct NumberSection { … … 2147 2124 template <typename Functor> 2148 2125 SectionReader& sectionLines(const std::string& type, Functor functor) { 2149 LEMON_ASSERT(!type.empty(), "Type is empty.");2126 LEMON_ASSERT(!type.empty(), "Type is not empty."); 2150 2127 LEMON_ASSERT(_sections.find(type) == _sections.end(), 2151 2128 "Multiple reading of section."); … … 2159 2136 /// 2160 2137 /// The first parameter is the type of the section, the second is 2161 /// a functor, which takes an \c std::istream& and an \cint&2138 /// a functor, which takes an \c std::istream& and an int& 2162 2139 /// parameter, the latter regard to the line number of stream. The 2163 2140 /// functor can read the input while the section go on, and the … … 2165 2142 template <typename Functor> 2166 2143 SectionReader& sectionStream(const std::string& type, Functor functor) { 2167 LEMON_ASSERT(!type.empty(), "Type is empty.");2144 LEMON_ASSERT(!type.empty(), "Type is not empty."); 2168 2145 LEMON_ASSERT(_sections.find(type) == _sections.end(), 2169 2146 "Multiple reading of section."); … … 2210 2187 /// \brief Start the batch processing 2211 2188 /// 2212 /// This function starts the batch processing .2189 /// This function starts the batch processing 2213 2190 void run() { 2214 2191 … … 2263 2240 }; 2264 2241 2265 /// \brief Return a \ref SectionReader class2266 ///2267 /// This function just returns a \ref SectionReader class.2268 2242 /// \relates SectionReader 2269 2243 inline SectionReader sectionReader(std::istream& is) { … … 2272 2246 } 2273 2247 2274 /// \brief Return a \ref SectionReader class2275 ///2276 /// This function just returns a \ref SectionReader class.2277 2248 /// \relates SectionReader 2278 2249 inline SectionReader sectionReader(const std::string& fn) { … … 2281 2252 } 2282 2253 2283 /// \brief Return a \ref SectionReader class2284 ///2285 /// This function just returns a \ref SectionReader class.2286 2254 /// \relates SectionReader 2287 2255 inline SectionReader sectionReader(const char* fn) { … … 2302 2270 /// reading the graph. 2303 2271 /// 2304 ///\code 2305 /// LgfContents contents("graph.lgf"); 2272 ///\code LgfContents contents("graph.lgf"); 2306 2273 /// contents.run(); 2307 2274 /// 2308 /// // Does it contain any node section and arc section?2275 /// // does it contain any node section and arc section 2309 2276 /// if (contents.nodeSectionNum() == 0 || contents.arcSectionNum()) { 2310 /// std::cerr << "Failure, cannot find graph ." << std::endl;2277 /// std::cerr << "Failure, cannot find graph" << std::endl; 2311 2278 /// return -1; 2312 2279 /// } 2313 /// std::cout << "The name of the default node section : "2280 /// std::cout << "The name of the default node section : " 2314 2281 /// << contents.nodeSection(0) << std::endl; 2315 /// std::cout << "The number of the arc maps : "2282 /// std::cout << "The number of the arc maps : " 2316 2283 /// << contents.arcMaps(0).size() << std::endl; 2317 /// std::cout << "The name of second arc map : "2284 /// std::cout << "The name of second arc map : " 2318 2285 /// << contents.arcMaps(0)[1] << std::endl; 2319 2286 ///\endcode … … 2386 2353 } 2387 2354 2388 /// \brief Returns the nodesection name at the given position.2389 /// 2390 /// Returns the nodesection name at the given position.2355 /// \brief Returns the section name at the given position. 2356 /// 2357 /// Returns the section name at the given position. 2391 2358 const std::string& nodeSection(int i) const { 2392 2359 return _node_sections[i]; … … 2413 2380 } 2414 2381 2415 /// \brief Returns the arc/edgesection name at the given position.2416 /// 2417 /// Returns the arc/edgesection name at the given position.2382 /// \brief Returns the section name at the given position. 2383 /// 2384 /// Returns the section name at the given position. 2418 2385 /// \note It is synonym of \c edgeSection(). 2419 2386 const std::string& arcSection(int i) const { … … 2470 2437 } 2471 2438 2472 /// \brief Returns the attributesection name at the given position.2473 /// 2474 /// Returns the attributesection name at the given position.2439 /// \brief Returns the section name at the given position. 2440 /// 2441 /// Returns the section name at the given position. 2475 2442 const std::string& attributeSectionNames(int i) const { 2476 2443 return _attribute_sections[i]; … … 2563 2530 /// @{ 2564 2531 2565 /// \brief Start sthe reading2566 /// 2567 /// This function starts the reading .2532 /// \brief Start the reading 2533 /// 2534 /// This function starts the reading 2568 2535 void run() { 2569 2536 -
lemon/lgf_writer.h
r192 r190 19 19 ///\ingroup lemon_io 20 20 ///\file 21 ///\brief \ref lgf-format "Lemon Graph Format"writer.21 ///\brief Lemon Graph Format writer. 22 22 23 23 … … 323 323 /// \ingroup lemon_io 324 324 /// 325 /// \brief \ref lgf-format "LGF"writer for directed graphs325 /// \brief LGF writer for directed graphs 326 326 /// 327 327 /// This utility writes an \ref lgf-format "LGF" file. … … 333 333 /// with the \c nodeMap() or \c arcMap() members. An optional 334 334 /// converter parameter can also be added as a standard functor 335 /// converting from the value type of the map to \cstd::string. If it336 /// is set, it will determine how the value type of the mapis written to335 /// converting from the value type of the map to std::string. If it 336 /// is set, it will determine how the map's value type is written to 337 337 /// the output stream. If the functor is not set, then a default 338 338 /// conversion will be used. The \c attribute(), \c node() and \c … … 340 340 /// 341 341 ///\code 342 /// DigraphWriter<Digraph>(std::cout, digraph).343 /// nodeMap("coordinates", coord_map).344 /// nodeMap("size", size).345 /// nodeMap("title", title).346 /// arcMap("capacity", cap_map).347 /// node("source", src).348 /// node("target", trg).349 /// attribute("caption", caption).350 /// run();342 /// DigraphWriter<Digraph>(std::cout, digraph). 343 /// nodeMap("coordinates", coord_map). 344 /// nodeMap("size", size). 345 /// nodeMap("title", title). 346 /// arcMap("capacity", cap_map). 347 /// node("source", src). 348 /// node("target", trg). 349 /// attribute("caption", caption). 350 /// run(); 351 351 ///\endcode 352 352 /// … … 487 487 /// @{ 488 488 489 /// \brief Node map writing rule490 /// 491 /// Add a node map writing rule to the writer.489 /// \brief Node map reading rule 490 /// 491 /// Add a node map reading rule to the writer. 492 492 template <typename Map> 493 493 DigraphWriter& nodeMap(const std::string& caption, const Map& map) { … … 587 587 } 588 588 589 /// \name Se ction captions589 /// \name Select section by name 590 590 /// @{ 591 591 592 /// \brief Add an additional caption to the \c \@nodes section593 /// 594 /// Add an additional caption to the \c \@nodes section.592 /// \brief Set \c \@nodes section to be read 593 /// 594 /// Set \c \@nodes section to be read 595 595 DigraphWriter& nodes(const std::string& caption) { 596 596 _nodes_caption = caption; … … 598 598 } 599 599 600 /// \brief Add an additional caption to the \c \@arcs section601 /// 602 /// Add an additional caption to the \c \@arcs section.600 /// \brief Set \c \@arcs section to be read 601 /// 602 /// Set \c \@arcs section to be read 603 603 DigraphWriter& arcs(const std::string& caption) { 604 604 _arcs_caption = caption; … … 606 606 } 607 607 608 /// \brief Add an additional caption to the \c \@attributes section609 /// 610 /// Add an additional caption to the \c \@attributes section.608 /// \brief Set \c \@attributes section to be read 609 /// 610 /// Set \c \@attributes section to be read 611 611 DigraphWriter& attributes(const std::string& caption) { 612 612 _attributes_caption = caption; … … 619 619 /// \brief Skip writing the node set 620 620 /// 621 /// The \c \@nodes section will not bewritten to the stream.621 /// The \c \@nodes section will be not written to the stream. 622 622 DigraphWriter& skipNodes() { 623 623 LEMON_ASSERT(!_skip_nodes, "Multiple usage of skipNodes() member"); … … 628 628 /// \brief Skip writing arc set 629 629 /// 630 /// The \c \@arcs section will not bewritten to the stream.630 /// The \c \@arcs section will be not written to the stream. 631 631 DigraphWriter& skipArcs() { 632 632 LEMON_ASSERT(!_skip_arcs, "Multiple usage of skipArcs() member"); … … 836 836 /// \brief Start the batch processing 837 837 /// 838 /// This function starts the batch processing .838 /// This function starts the batch processing 839 839 void run() { 840 840 if (!_skip_nodes) { … … 851 851 } 852 852 853 /// \brief Give back the stream of the writer854 /// 855 /// Give back the stream of the writer.853 /// \brief Gives back the stream of the writer 854 /// 855 /// Gives back the stream of the writer 856 856 std::ostream& ostream() { 857 857 return *_os; … … 861 861 }; 862 862 863 /// \brief Return a \ref DigraphWriter class864 ///865 /// This function just returns a \ref DigraphWriter class.866 863 /// \relates DigraphWriter 867 864 template <typename Digraph> … … 872 869 } 873 870 874 /// \brief Return a \ref DigraphWriter class875 ///876 /// This function just returns a \ref DigraphWriter class.877 871 /// \relates DigraphWriter 878 872 template <typename Digraph> … … 883 877 } 884 878 885 /// \brief Return a \ref DigraphWriter class886 ///887 /// This function just returns a \ref DigraphWriter class.888 879 /// \relates DigraphWriter 889 880 template <typename Digraph> … … 908 899 /// \ingroup lemon_io 909 900 /// 910 /// \brief \ref lgf-format "LGF"writer for directed graphs901 /// \brief LGF writer for directed graphs 911 902 /// 912 903 /// This utility writes an \ref lgf-format "LGF" file. 913 ///914 /// It can be used almost the same way as \c DigraphWriter.915 /// The only difference is that this class can handle edges and916 /// edge maps as well as arcs and arc maps.917 904 template <typename _Graph> 918 905 class GraphWriter { … … 1037 1024 /// @{ 1038 1025 1039 /// \brief Node map writing rule1040 /// 1041 /// Add a node map writing rule to the writer.1026 /// \brief Node map reading rule 1027 /// 1028 /// Add a node map reading rule to the writer. 1042 1029 template <typename Map> 1043 1030 GraphWriter& nodeMap(const std::string& caption, const Map& map) { … … 1183 1170 } 1184 1171 1185 /// \name Se ction captions1172 /// \name Select section by name 1186 1173 /// @{ 1187 1174 1188 /// \brief Add an additional caption to the \c \@nodes section1189 /// 1190 /// Add an additional caption to the \c \@nodes section.1175 /// \brief Set \c \@nodes section to be read 1176 /// 1177 /// Set \c \@nodes section to be read 1191 1178 GraphWriter& nodes(const std::string& caption) { 1192 1179 _nodes_caption = caption; … … 1194 1181 } 1195 1182 1196 /// \brief Add an additional caption to the \c \@arcs section1197 /// 1198 /// Add an additional caption to the \c \@arcs section.1183 /// \brief Set \c \@edges section to be read 1184 /// 1185 /// Set \c \@edges section to be read 1199 1186 GraphWriter& edges(const std::string& caption) { 1200 1187 _edges_caption = caption; … … 1202 1189 } 1203 1190 1204 /// \brief Add an additional caption to the \c \@attributes section1205 /// 1206 /// Add an additional caption to the \c \@attributes section.1191 /// \brief Set \c \@attributes section to be read 1192 /// 1193 /// Set \c \@attributes section to be read 1207 1194 GraphWriter& attributes(const std::string& caption) { 1208 1195 _attributes_caption = caption; … … 1215 1202 /// \brief Skip writing the node set 1216 1203 /// 1217 /// The \c \@nodes section will not bewritten to the stream.1204 /// The \c \@nodes section will be not written to the stream. 1218 1205 GraphWriter& skipNodes() { 1219 1206 LEMON_ASSERT(!_skip_nodes, "Multiple usage of skipNodes() member"); … … 1224 1211 /// \brief Skip writing edge set 1225 1212 /// 1226 /// The \c \@edges section will not bewritten to the stream.1213 /// The \c \@edges section will be not written to the stream. 1227 1214 GraphWriter& skipEdges() { 1228 1215 LEMON_ASSERT(!_skip_edges, "Multiple usage of skipEdges() member"); … … 1432 1419 /// \brief Start the batch processing 1433 1420 /// 1434 /// This function starts the batch processing .1421 /// This function starts the batch processing 1435 1422 void run() { 1436 1423 if (!_skip_nodes) { … … 1447 1434 } 1448 1435 1449 /// \brief Give back the stream of the writer1450 /// 1451 /// Give back the stream of the writer1436 /// \brief Gives back the stream of the writer 1437 /// 1438 /// Gives back the stream of the writer 1452 1439 std::ostream& ostream() { 1453 1440 return *_os; … … 1457 1444 }; 1458 1445 1459 /// \brief Return a \ref GraphWriter class1460 ///1461 /// This function just returns a \ref GraphWriter class.1462 1446 /// \relates GraphWriter 1463 1447 template <typename Graph> … … 1467 1451 } 1468 1452 1469 /// \brief Return a \ref GraphWriter class1470 ///1471 /// This function just returns a \ref GraphWriter class.1472 1453 /// \relates GraphWriter 1473 1454 template <typename Graph> … … 1477 1458 } 1478 1459 1479 /// \brief Return a \ref GraphWriter class1480 ///1481 /// This function just returns a \ref GraphWriter class.1482 1460 /// \relates GraphWriter 1483 1461 template <typename Graph>
Note: See TracChangeset
for help on using the changeset viewer.