388 } |
388 } |
389 |
389 |
390 template <typename Digraph> |
390 template <typename Digraph> |
391 class DigraphReader; |
391 class DigraphReader; |
392 |
392 |
393 /// \brief Return a \ref DigraphReader class |
|
394 /// |
|
395 /// This function just returns a \ref DigraphReader class. |
|
396 /// \relates DigraphReader |
|
397 template <typename Digraph> |
393 template <typename Digraph> |
398 DigraphReader<Digraph> digraphReader(Digraph& digraph, |
394 DigraphReader<Digraph> digraphReader(Digraph& digraph, |
399 std::istream& is = std::cin) { |
395 std::istream& is = std::cin); |
400 DigraphReader<Digraph> tmp(digraph, is); |
|
401 return tmp; |
|
402 } |
|
403 |
|
404 /// \brief Return a \ref DigraphReader class |
|
405 /// |
|
406 /// This function just returns a \ref DigraphReader class. |
|
407 /// \relates DigraphReader |
|
408 template <typename Digraph> |
396 template <typename Digraph> |
409 DigraphReader<Digraph> digraphReader(Digraph& digraph, |
397 DigraphReader<Digraph> digraphReader(Digraph& digraph, const std::string& fn); |
410 const std::string& fn) { |
|
411 DigraphReader<Digraph> tmp(digraph, fn); |
|
412 return tmp; |
|
413 } |
|
414 |
|
415 /// \brief Return a \ref DigraphReader class |
|
416 /// |
|
417 /// This function just returns a \ref DigraphReader class. |
|
418 /// \relates DigraphReader |
|
419 template <typename Digraph> |
398 template <typename Digraph> |
420 DigraphReader<Digraph> digraphReader(Digraph& digraph, const char* fn) { |
399 DigraphReader<Digraph> digraphReader(Digraph& digraph, const char *fn); |
421 DigraphReader<Digraph> tmp(digraph, fn); |
|
422 return tmp; |
|
423 } |
|
424 |
400 |
425 /// \ingroup lemon_io |
401 /// \ingroup lemon_io |
426 /// |
402 /// |
427 /// \brief \ref lgf-format "LGF" reader for directed graphs |
403 /// \brief \ref lgf-format "LGF" reader for directed graphs |
428 /// |
404 /// |
582 |
558 |
583 } |
559 } |
584 |
560 |
585 private: |
561 private: |
586 |
562 |
587 friend DigraphReader<Digraph> digraphReader<>(Digraph& digraph, |
563 template <typename DGR> |
588 std::istream& is); |
564 friend DigraphReader<DGR> digraphReader(DGR& digraph, std::istream& is); |
589 friend DigraphReader<Digraph> digraphReader<>(Digraph& digraph, |
565 template <typename DGR> |
590 const std::string& fn); |
566 friend DigraphReader<DGR> digraphReader(DGR& digraph, |
591 friend DigraphReader<Digraph> digraphReader<>(Digraph& digraph, |
567 const std::string& fn); |
592 const char *fn); |
568 template <typename DGR> |
|
569 friend DigraphReader<DGR> digraphReader(DGR& digraph, const char *fn); |
593 |
570 |
594 DigraphReader(DigraphReader& other) |
571 DigraphReader(DigraphReader& other) |
595 : _is(other._is), local_is(other.local_is), _digraph(other._digraph), |
572 : _is(other._is), local_is(other.local_is), _digraph(other._digraph), |
596 _use_nodes(other._use_nodes), _use_arcs(other._use_arcs), |
573 _use_nodes(other._use_nodes), _use_arcs(other._use_arcs), |
597 _skip_nodes(other._skip_nodes), _skip_arcs(other._skip_arcs) { |
574 _skip_nodes(other._skip_nodes), _skip_arcs(other._skip_arcs) { |
1208 |
1185 |
1209 /// @} |
1186 /// @} |
1210 |
1187 |
1211 }; |
1188 }; |
1212 |
1189 |
|
1190 /// \brief Return a \ref DigraphReader class |
|
1191 /// |
|
1192 /// This function just returns a \ref DigraphReader class. |
|
1193 /// \relates DigraphReader |
|
1194 template <typename Digraph> |
|
1195 DigraphReader<Digraph> digraphReader(Digraph& digraph, std::istream& is) { |
|
1196 DigraphReader<Digraph> tmp(digraph, is); |
|
1197 return tmp; |
|
1198 } |
|
1199 |
|
1200 /// \brief Return a \ref DigraphReader class |
|
1201 /// |
|
1202 /// This function just returns a \ref DigraphReader class. |
|
1203 /// \relates DigraphReader |
|
1204 template <typename Digraph> |
|
1205 DigraphReader<Digraph> digraphReader(Digraph& digraph, |
|
1206 const std::string& fn) { |
|
1207 DigraphReader<Digraph> tmp(digraph, fn); |
|
1208 return tmp; |
|
1209 } |
|
1210 |
|
1211 /// \brief Return a \ref DigraphReader class |
|
1212 /// |
|
1213 /// This function just returns a \ref DigraphReader class. |
|
1214 /// \relates DigraphReader |
|
1215 template <typename Digraph> |
|
1216 DigraphReader<Digraph> digraphReader(Digraph& digraph, const char* fn) { |
|
1217 DigraphReader<Digraph> tmp(digraph, fn); |
|
1218 return tmp; |
|
1219 } |
|
1220 |
1213 template <typename Graph> |
1221 template <typename Graph> |
1214 class GraphReader; |
1222 class GraphReader; |
1215 |
1223 |
1216 /// \brief Return a \ref GraphReader class |
|
1217 /// |
|
1218 /// This function just returns a \ref GraphReader class. |
|
1219 /// \relates GraphReader |
|
1220 template <typename Graph> |
1224 template <typename Graph> |
1221 GraphReader<Graph> graphReader(Graph& graph, std::istream& is = std::cin) { |
1225 GraphReader<Graph> graphReader(Graph& graph, |
1222 GraphReader<Graph> tmp(graph, is); |
1226 std::istream& is = std::cin); |
1223 return tmp; |
|
1224 } |
|
1225 |
|
1226 /// \brief Return a \ref GraphReader class |
|
1227 /// |
|
1228 /// This function just returns a \ref GraphReader class. |
|
1229 /// \relates GraphReader |
|
1230 template <typename Graph> |
1227 template <typename Graph> |
1231 GraphReader<Graph> graphReader(Graph& graph, const std::string& fn) { |
1228 GraphReader<Graph> graphReader(Graph& graph, const std::string& fn); |
1232 GraphReader<Graph> tmp(graph, fn); |
|
1233 return tmp; |
|
1234 } |
|
1235 |
|
1236 /// \brief Return a \ref GraphReader class |
|
1237 /// |
|
1238 /// This function just returns a \ref GraphReader class. |
|
1239 /// \relates GraphReader |
|
1240 template <typename Graph> |
1229 template <typename Graph> |
1241 GraphReader<Graph> graphReader(Graph& graph, const char* fn) { |
1230 GraphReader<Graph> graphReader(Graph& graph, const char *fn); |
1242 GraphReader<Graph> tmp(graph, fn); |
|
1243 return tmp; |
|
1244 } |
|
1245 |
1231 |
1246 /// \ingroup lemon_io |
1232 /// \ingroup lemon_io |
1247 /// |
1233 /// |
1248 /// \brief \ref lgf-format "LGF" reader for undirected graphs |
1234 /// \brief \ref lgf-format "LGF" reader for undirected graphs |
1249 /// |
1235 /// |
1366 } |
1352 } |
1367 |
1353 |
1368 } |
1354 } |
1369 |
1355 |
1370 private: |
1356 private: |
1371 friend GraphReader<Graph> graphReader<>(Graph& graph, std::istream& is); |
1357 template <typename GR> |
1372 friend GraphReader<Graph> graphReader<>(Graph& graph, |
1358 friend GraphReader<GR> graphReader(GR& graph, std::istream& is); |
1373 const std::string& fn); |
1359 template <typename GR> |
1374 friend GraphReader<Graph> graphReader<>(Graph& graph, const char *fn); |
1360 friend GraphReader<GR> graphReader(GR& graph, const std::string& fn); |
|
1361 template <typename GR> |
|
1362 friend GraphReader<GR> graphReader(GR& graph, const char *fn); |
1375 |
1363 |
1376 GraphReader(GraphReader& other) |
1364 GraphReader(GraphReader& other) |
1377 : _is(other._is), local_is(other.local_is), _graph(other._graph), |
1365 : _is(other._is), local_is(other.local_is), _graph(other._graph), |
1378 _use_nodes(other._use_nodes), _use_edges(other._use_edges), |
1366 _use_nodes(other._use_nodes), _use_edges(other._use_edges), |
1379 _skip_nodes(other._skip_nodes), _skip_edges(other._skip_edges) { |
1367 _skip_nodes(other._skip_nodes), _skip_edges(other._skip_edges) { |
2037 } |
2025 } |
2038 |
2026 |
2039 /// @} |
2027 /// @} |
2040 |
2028 |
2041 }; |
2029 }; |
|
2030 |
|
2031 /// \brief Return a \ref GraphReader class |
|
2032 /// |
|
2033 /// This function just returns a \ref GraphReader class. |
|
2034 /// \relates GraphReader |
|
2035 template <typename Graph> |
|
2036 GraphReader<Graph> graphReader(Graph& graph, std::istream& is) { |
|
2037 GraphReader<Graph> tmp(graph, is); |
|
2038 return tmp; |
|
2039 } |
|
2040 |
|
2041 /// \brief Return a \ref GraphReader class |
|
2042 /// |
|
2043 /// This function just returns a \ref GraphReader class. |
|
2044 /// \relates GraphReader |
|
2045 template <typename Graph> |
|
2046 GraphReader<Graph> graphReader(Graph& graph, const std::string& fn) { |
|
2047 GraphReader<Graph> tmp(graph, fn); |
|
2048 return tmp; |
|
2049 } |
|
2050 |
|
2051 /// \brief Return a \ref GraphReader class |
|
2052 /// |
|
2053 /// This function just returns a \ref GraphReader class. |
|
2054 /// \relates GraphReader |
|
2055 template <typename Graph> |
|
2056 GraphReader<Graph> graphReader(Graph& graph, const char* fn) { |
|
2057 GraphReader<Graph> tmp(graph, fn); |
|
2058 return tmp; |
|
2059 } |
2042 |
2060 |
2043 class SectionReader; |
2061 class SectionReader; |
2044 |
2062 |
2045 SectionReader sectionReader(std::istream& is); |
2063 SectionReader sectionReader(std::istream& is); |
2046 SectionReader sectionReader(const std::string& fn); |
2064 SectionReader sectionReader(const std::string& fn); |