Changeset 192:7bf5f97d574f in lemon
- Timestamp:
- 07/05/08 00:14:27 (16 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
demo/lgf_demo.cc
r164 r192 35 35 #include <lemon/lgf_reader.h> 36 36 #include <lemon/lgf_writer.h> 37 #include <lemon/random.h>38 39 37 40 38 using namespace lemon; … … 45 43 SmartDigraph::Node s, t; 46 44 47 digraphReader("digraph.lgf", g). // read the directe ggraph into g45 digraphReader("digraph.lgf", g). // read the directed graph into g 48 46 arcMap("capacity", cap). // read the 'capacity' arc map into cap 49 47 node("source", s). // read 'source' node to s … … 51 49 run(); 52 50 53 std::cout << " Digraph read from 'digraph.lgf'" << std::endl;51 std::cout << "A digraph is read from 'digraph.lgf'." << std::endl; 54 52 std::cout << "Number of nodes: " << countNodes(g) << std::endl; 55 53 std::cout << "Number of arcs: " << countArcs(g) << std::endl; -
doc/groups.dox
r156 r192 476 476 @defgroup lemon_io Lemon Input-Output 477 477 @ingroup io_group 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. 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". 483 481 */ 484 482 -
doc/lgf.dox
r162 r192 47 47 48 48 The \c \@nodes section describes a set of nodes and associated 49 maps. The first is a header line, it columns are the names of the49 maps. The first is a header line, its 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 arc,67 it again starts with a header line describing the names of the maps, 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
r190 r192 19 19 ///\ingroup lemon_io 20 20 ///\file 21 ///\brief Lemon Graph Formatreader.21 ///\brief \ref lgf-format "Lemon Graph Format" reader. 22 22 23 23 … … 401 401 /// \ingroup lemon_io 402 402 /// 403 /// \brief LGFreader for directed graphs403 /// \brief \ref lgf-format "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 std::string to the value type of the map. If it413 /// converting from \c 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 /// is converted to the map's value type. If the functor is not set,415 /// converted to the value type of the map. 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 /// 423 /// 424 /// 425 /// 426 /// 427 /// 428 /// 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 is multipass reading, which is441 /// important if two \ e\@arcs sections must be read from the442 /// file. In this example the first phase would read the node set and one440 /// application of these functions is multipass reading, which is 441 /// important if two \c \@arcs sections must be read from the 442 /// file. In this case 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 read this in447 /// paths are given as a node map or an arc map. It is impossible to 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 /// std::string.738 /// \c 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 /// std::string.771 /// \c 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 oned, and the nodes of the graph787 /// map reading rule will be abandoned, 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 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. 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. 793 792 DigraphReader& skipNodes() { 794 793 LEMON_ASSERT(!_skip_nodes, "Skip nodes already set"); … … 800 799 /// 801 800 /// Omit the reading of the arc section. This implies that each arc 802 /// map reading rule will be aban oned, and the arcs of the graph801 /// map reading rule will be abandoned, and the arcs of the graph 803 802 /// will not be constructed. 804 803 DigraphReader& skipArcs() { … … 1176 1175 }; 1177 1176 1177 /// \brief Return a \ref DigraphReader class 1178 /// 1179 /// This function just returns a \ref DigraphReader class. 1178 1180 /// \relates DigraphReader 1179 1181 template <typename Digraph> … … 1183 1185 } 1184 1186 1187 /// \brief Return a \ref DigraphReader class 1188 /// 1189 /// This function just returns a \ref DigraphReader class. 1185 1190 /// \relates DigraphReader 1186 1191 template <typename Digraph> … … 1191 1196 } 1192 1197 1198 /// \brief Return a \ref DigraphReader class 1199 /// 1200 /// This function just returns a \ref DigraphReader class. 1193 1201 /// \relates DigraphReader 1194 1202 template <typename Digraph> … … 1212 1220 /// \ingroup lemon_io 1213 1221 /// 1214 /// \brief LGFreader for undirected graphs1222 /// \brief \ref lgf-format "LGF" reader for undirected graphs 1215 1223 /// 1216 1224 /// 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 and 1228 /// edge maps as well as arcs and arc maps. 1217 1229 template <typename _Graph> 1218 1230 class GraphReader { … … 1263 1275 /// \brief Constructor 1264 1276 /// 1265 /// Construct a undirected graph reader, which reads from the given1277 /// Construct an undirected graph reader, which reads from the given 1266 1278 /// input stream. 1267 1279 GraphReader(std::istream& is, Graph& graph) … … 1272 1284 /// \brief Constructor 1273 1285 /// 1274 /// Construct a undirected graph reader, which reads from the given1286 /// Construct an undirected graph reader, which reads from the given 1275 1287 /// file. 1276 1288 GraphReader(const std::string& fn, Graph& graph) … … 1281 1293 /// \brief Constructor 1282 1294 /// 1283 /// Construct a undirected graph reader, which reads from the given1295 /// Construct an undirected graph reader, which reads from the given 1284 1296 /// file. 1285 1297 GraphReader(const char* fn, Graph& graph) … … 1498 1510 /// \brief Set \c \@nodes section to be read 1499 1511 /// 1500 /// Set \c \@nodes section to be read 1512 /// Set \c \@nodes section to be read. 1501 1513 GraphReader& nodes(const std::string& caption) { 1502 1514 _nodes_caption = caption; … … 1506 1518 /// \brief Set \c \@edges section to be read 1507 1519 /// 1508 /// Set \c \@edges section to be read 1520 /// Set \c \@edges section to be read. 1509 1521 GraphReader& edges(const std::string& caption) { 1510 1522 _edges_caption = caption; … … 1514 1526 /// \brief Set \c \@attributes section to be read 1515 1527 /// 1516 /// Set \c \@attributes section to be read 1528 /// Set \c \@attributes section to be read. 1517 1529 GraphReader& attributes(const std::string& caption) { 1518 1530 _attributes_caption = caption; … … 1545 1557 /// Use previously constructed node set, and specify the node 1546 1558 /// label map and a functor which converts the label map values to 1547 /// std::string.1559 /// \c std::string. 1548 1560 template <typename Map, typename Converter> 1549 1561 GraphReader& useNodes(const Map& map, … … 1578 1590 /// Use previously constructed edge set, and specify the edge 1579 1591 /// label map and a functor which converts the label map values to 1580 /// std::string.1592 /// \c std::string. 1581 1593 template <typename Map, typename Converter> 1582 1594 GraphReader& useEdges(const Map& map, … … 1591 1603 } 1592 1604 1593 /// \brief Skip sthe reading of node section1605 /// \brief Skip the reading of node section 1594 1606 /// 1595 1607 /// Omit the reading of the node section. This implies that each node 1596 /// map reading rule will be aban oned, and the nodes of the graph1608 /// map reading rule will be abandoned, and the nodes of the graph 1597 1609 /// will not be constructed, which usually cause that the edge set 1598 1610 /// could not be read due to lack of node name 1599 /// resolving. Therefore, the \c skipEdges() should be used too, or1600 /// the useNodes() member function should be used to specify the1601 /// label of the nodes.1611 /// could not be read due to lack of node name resolving. 1612 /// Therefore \c skipEdges() function should also be used, or 1613 /// \c useNodes() should be used to specify the label of the nodes. 1602 1614 GraphReader& skipNodes() { 1603 1615 LEMON_ASSERT(!_skip_nodes, "Skip nodes already set"); … … 1606 1618 } 1607 1619 1608 /// \brief Skip sthe reading of edge section1620 /// \brief Skip the reading of edge section 1609 1621 /// 1610 1622 /// Omit the reading of the edge section. This implies that each edge 1611 /// map reading rule will be aban oned, and the edges of the graph1623 /// map reading rule will be abandoned, and the edges of the graph 1612 1624 /// will not be constructed. 1613 1625 GraphReader& skipEdges() { … … 1983 1995 }; 1984 1996 1997 /// \brief Return a \ref GraphReader class 1998 /// 1999 /// This function just returns a \ref GraphReader class. 1985 2000 /// \relates GraphReader 1986 2001 template <typename Graph> … … 1990 2005 } 1991 2006 2007 /// \brief Return a \ref GraphReader class 2008 /// 2009 /// This function just returns a \ref GraphReader class. 1992 2010 /// \relates GraphReader 1993 2011 template <typename Graph> … … 1998 2016 } 1999 2017 2018 /// \brief Return a \ref GraphReader class 2019 /// 2020 /// This function just returns a \ref GraphReader class. 2000 2021 /// \relates GraphReader 2001 2022 template <typename Graph> … … 2011 2032 SectionReader sectionReader(const char* fn); 2012 2033 2034 /// \ingroup lemon_io 2035 /// 2013 2036 /// \brief Section reader class 2014 2037 /// 2015 /// In the \ e LGF file extra sections can be placed, which contain2016 /// any data in arbitrary format. Such sections can be read with2017 /// this class. A reading rule can be added with two different2018 /// functions, with the \c sectionLines() function a functor can2019 /// process the section line-by-line. While with the \c2038 /// In the \ref lgf-format "LGF" file extra sections can be placed, 2039 /// which contain any data in arbitrary format. Such sections can be 2040 /// read with this class. A reading rule can be added to the class 2041 /// with two different functions. With the \c sectionLines() function a 2042 /// functor can process the section line-by-line, while with the \c 2020 2043 /// sectionStream() member the section can be read from an input 2021 2044 /// stream. … … 2106 2129 ///\endcode 2107 2130 /// 2108 /// The functor is implemented as a nstruct:2131 /// The functor is implemented as a struct: 2109 2132 ///\code 2110 2133 /// struct NumberSection { … … 2124 2147 template <typename Functor> 2125 2148 SectionReader& sectionLines(const std::string& type, Functor functor) { 2126 LEMON_ASSERT(!type.empty(), "Type is notempty.");2149 LEMON_ASSERT(!type.empty(), "Type is empty."); 2127 2150 LEMON_ASSERT(_sections.find(type) == _sections.end(), 2128 2151 "Multiple reading of section."); … … 2136 2159 /// 2137 2160 /// The first parameter is the type of the section, the second is 2138 /// a functor, which takes an \c std::istream& and an int&2161 /// a functor, which takes an \c std::istream& and an \c int& 2139 2162 /// parameter, the latter regard to the line number of stream. The 2140 2163 /// functor can read the input while the section go on, and the … … 2142 2165 template <typename Functor> 2143 2166 SectionReader& sectionStream(const std::string& type, Functor functor) { 2144 LEMON_ASSERT(!type.empty(), "Type is notempty.");2167 LEMON_ASSERT(!type.empty(), "Type is empty."); 2145 2168 LEMON_ASSERT(_sections.find(type) == _sections.end(), 2146 2169 "Multiple reading of section."); … … 2187 2210 /// \brief Start the batch processing 2188 2211 /// 2189 /// This function starts the batch processing 2212 /// This function starts the batch processing. 2190 2213 void run() { 2191 2214 … … 2240 2263 }; 2241 2264 2265 /// \brief Return a \ref SectionReader class 2266 /// 2267 /// This function just returns a \ref SectionReader class. 2242 2268 /// \relates SectionReader 2243 2269 inline SectionReader sectionReader(std::istream& is) { … … 2246 2272 } 2247 2273 2274 /// \brief Return a \ref SectionReader class 2275 /// 2276 /// This function just returns a \ref SectionReader class. 2248 2277 /// \relates SectionReader 2249 2278 inline SectionReader sectionReader(const std::string& fn) { … … 2252 2281 } 2253 2282 2283 /// \brief Return a \ref SectionReader class 2284 /// 2285 /// This function just returns a \ref SectionReader class. 2254 2286 /// \relates SectionReader 2255 2287 inline SectionReader sectionReader(const char* fn) { … … 2270 2302 /// reading the graph. 2271 2303 /// 2272 ///\code LgfContents contents("graph.lgf"); 2304 ///\code 2305 /// LgfContents contents("graph.lgf"); 2273 2306 /// contents.run(); 2274 2307 /// 2275 /// // does it contain any node section and arc section2308 /// // Does it contain any node section and arc section? 2276 2309 /// if (contents.nodeSectionNum() == 0 || contents.arcSectionNum()) { 2277 /// std::cerr << "Failure, cannot find graph " << std::endl;2310 /// std::cerr << "Failure, cannot find graph." << std::endl; 2278 2311 /// return -1; 2279 2312 /// } 2280 /// std::cout << "The name of the default node section 2313 /// std::cout << "The name of the default node section: " 2281 2314 /// << contents.nodeSection(0) << std::endl; 2282 /// std::cout << "The number of the arc maps 2315 /// std::cout << "The number of the arc maps: " 2283 2316 /// << contents.arcMaps(0).size() << std::endl; 2284 /// std::cout << "The name of second arc map 2317 /// std::cout << "The name of second arc map: " 2285 2318 /// << contents.arcMaps(0)[1] << std::endl; 2286 2319 ///\endcode … … 2353 2386 } 2354 2387 2355 /// \brief Returns the section name at the given position.2356 /// 2357 /// Returns the section name at the given position.2388 /// \brief Returns the node section name at the given position. 2389 /// 2390 /// Returns the node section name at the given position. 2358 2391 const std::string& nodeSection(int i) const { 2359 2392 return _node_sections[i]; … … 2380 2413 } 2381 2414 2382 /// \brief Returns the section name at the given position.2383 /// 2384 /// Returns the section name at the given position.2415 /// \brief Returns the arc/edge section name at the given position. 2416 /// 2417 /// Returns the arc/edge section name at the given position. 2385 2418 /// \note It is synonym of \c edgeSection(). 2386 2419 const std::string& arcSection(int i) const { … … 2437 2470 } 2438 2471 2439 /// \brief Returns the section name at the given position.2440 /// 2441 /// Returns the section name at the given position.2472 /// \brief Returns the attribute section name at the given position. 2473 /// 2474 /// Returns the attribute section name at the given position. 2442 2475 const std::string& attributeSectionNames(int i) const { 2443 2476 return _attribute_sections[i]; … … 2530 2563 /// @{ 2531 2564 2532 /// \brief Start the reading2533 /// 2534 /// This function starts the reading 2565 /// \brief Starts the reading 2566 /// 2567 /// This function starts the reading. 2535 2568 void run() { 2536 2569 -
lemon/lgf_writer.h
r190 r192 19 19 ///\ingroup lemon_io 20 20 ///\file 21 ///\brief Lemon Graph Formatwriter.21 ///\brief \ref lgf-format "Lemon Graph Format" writer. 22 22 23 23 … … 323 323 /// \ingroup lemon_io 324 324 /// 325 /// \brief LGFwriter for directed graphs325 /// \brief \ref lgf-format "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 std::string. If it336 /// is set, it will determine how the map's value typeis written to335 /// converting from the value type of the map to \c std::string. If it 336 /// is set, it will determine how the value type of the map 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 /// 343 /// 344 /// 345 /// 346 /// 347 /// 348 /// 349 /// 350 /// 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 reading rule490 /// 491 /// Add a node map reading rule to the writer.489 /// \brief Node map writing rule 490 /// 491 /// Add a node map writing 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 lect section by name589 /// \name Section captions 590 590 /// @{ 591 591 592 /// \brief Set \c \@nodes section to be read593 /// 594 /// Set \c \@nodes section to be read592 /// \brief Add an additional caption to the \c \@nodes section 593 /// 594 /// Add an additional caption to the \c \@nodes section. 595 595 DigraphWriter& nodes(const std::string& caption) { 596 596 _nodes_caption = caption; … … 598 598 } 599 599 600 /// \brief Set \c \@arcs section to be read601 /// 602 /// Set \c \@arcs section to be read600 /// \brief Add an additional caption to the \c \@arcs section 601 /// 602 /// Add an additional caption to the \c \@arcs section. 603 603 DigraphWriter& arcs(const std::string& caption) { 604 604 _arcs_caption = caption; … … 606 606 } 607 607 608 /// \brief Set \c \@attributes section to be read609 /// 610 /// Set \c \@attributes section to be read608 /// \brief Add an additional caption to the \c \@attributes section 609 /// 610 /// Add an additional caption to the \c \@attributes section. 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 be notwritten to the stream.621 /// The \c \@nodes section will not be 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 be notwritten to the stream.630 /// The \c \@arcs section will not be 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 sback the stream of the writer854 /// 855 /// Give s back the stream of the writer853 /// \brief Give back the stream of the writer 854 /// 855 /// Give 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 class 864 /// 865 /// This function just returns a \ref DigraphWriter class. 863 866 /// \relates DigraphWriter 864 867 template <typename Digraph> … … 869 872 } 870 873 874 /// \brief Return a \ref DigraphWriter class 875 /// 876 /// This function just returns a \ref DigraphWriter class. 871 877 /// \relates DigraphWriter 872 878 template <typename Digraph> … … 877 883 } 878 884 885 /// \brief Return a \ref DigraphWriter class 886 /// 887 /// This function just returns a \ref DigraphWriter class. 879 888 /// \relates DigraphWriter 880 889 template <typename Digraph> … … 899 908 /// \ingroup lemon_io 900 909 /// 901 /// \brief LGFwriter for directed graphs910 /// \brief \ref lgf-format "LGF" writer for directed graphs 902 911 /// 903 912 /// 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 and 916 /// edge maps as well as arcs and arc maps. 904 917 template <typename _Graph> 905 918 class GraphWriter { … … 1024 1037 /// @{ 1025 1038 1026 /// \brief Node map reading rule1027 /// 1028 /// Add a node map reading rule to the writer.1039 /// \brief Node map writing rule 1040 /// 1041 /// Add a node map writing rule to the writer. 1029 1042 template <typename Map> 1030 1043 GraphWriter& nodeMap(const std::string& caption, const Map& map) { … … 1170 1183 } 1171 1184 1172 /// \name Se lect section by name1185 /// \name Section captions 1173 1186 /// @{ 1174 1187 1175 /// \brief Set \c \@nodes section to be read1176 /// 1177 /// Set \c \@nodes section to be read1188 /// \brief Add an additional caption to the \c \@nodes section 1189 /// 1190 /// Add an additional caption to the \c \@nodes section. 1178 1191 GraphWriter& nodes(const std::string& caption) { 1179 1192 _nodes_caption = caption; … … 1181 1194 } 1182 1195 1183 /// \brief Set \c \@edges section to be read1184 /// 1185 /// Set \c \@edges section to be read1196 /// \brief Add an additional caption to the \c \@arcs section 1197 /// 1198 /// Add an additional caption to the \c \@arcs section. 1186 1199 GraphWriter& edges(const std::string& caption) { 1187 1200 _edges_caption = caption; … … 1189 1202 } 1190 1203 1191 /// \brief Set \c \@attributes section to be read1192 /// 1193 /// Set \c \@attributes section to be read1204 /// \brief Add an additional caption to the \c \@attributes section 1205 /// 1206 /// Add an additional caption to the \c \@attributes section. 1194 1207 GraphWriter& attributes(const std::string& caption) { 1195 1208 _attributes_caption = caption; … … 1202 1215 /// \brief Skip writing the node set 1203 1216 /// 1204 /// The \c \@nodes section will be notwritten to the stream.1217 /// The \c \@nodes section will not be written to the stream. 1205 1218 GraphWriter& skipNodes() { 1206 1219 LEMON_ASSERT(!_skip_nodes, "Multiple usage of skipNodes() member"); … … 1211 1224 /// \brief Skip writing edge set 1212 1225 /// 1213 /// The \c \@edges section will be notwritten to the stream.1226 /// The \c \@edges section will not be written to the stream. 1214 1227 GraphWriter& skipEdges() { 1215 1228 LEMON_ASSERT(!_skip_edges, "Multiple usage of skipEdges() member"); … … 1419 1432 /// \brief Start the batch processing 1420 1433 /// 1421 /// This function starts the batch processing 1434 /// This function starts the batch processing. 1422 1435 void run() { 1423 1436 if (!_skip_nodes) { … … 1434 1447 } 1435 1448 1436 /// \brief Give sback the stream of the writer1437 /// 1438 /// Give sback the stream of the writer1449 /// \brief Give back the stream of the writer 1450 /// 1451 /// Give back the stream of the writer 1439 1452 std::ostream& ostream() { 1440 1453 return *_os; … … 1444 1457 }; 1445 1458 1459 /// \brief Return a \ref GraphWriter class 1460 /// 1461 /// This function just returns a \ref GraphWriter class. 1446 1462 /// \relates GraphWriter 1447 1463 template <typename Graph> … … 1451 1467 } 1452 1468 1469 /// \brief Return a \ref GraphWriter class 1470 /// 1471 /// This function just returns a \ref GraphWriter class. 1453 1472 /// \relates GraphWriter 1454 1473 template <typename Graph> … … 1458 1477 } 1459 1478 1479 /// \brief Return a \ref GraphWriter class 1480 /// 1481 /// This function just returns a \ref GraphWriter class. 1460 1482 /// \relates GraphWriter 1461 1483 template <typename Graph>
Note: See TracChangeset
for help on using the changeset viewer.