Changeset 190:1e6af6f0843c in lemon-main for lemon
- Timestamp:
- 07/04/08 16:12:31 (16 years ago)
- Branch:
- default
- Children:
- 191:abc5b9d0c67e, 192:7bf5f97d574f, 206:4e22275a2b52
- Phase:
- public
- Location:
- lemon
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/lgf_reader.h
r189 r190 386 386 387 387 } 388 389 template <typename Digraph> 390 class DigraphReader; 391 392 template <typename Digraph> 393 DigraphReader<Digraph> digraphReader(std::istream& is, Digraph& digraph); 394 395 template <typename Digraph> 396 DigraphReader<Digraph> digraphReader(const std::string& fn, Digraph& digraph); 397 398 template <typename Digraph> 399 DigraphReader<Digraph> digraphReader(const char *fn, Digraph& digraph); 388 400 389 401 /// \ingroup lemon_io … … 510 522 _skip_nodes(false), _skip_arcs(false) {} 511 523 512 /// \brief Copy constructor 513 /// 514 /// The copy constructor transfers all data from the other reader, 515 /// therefore the copied reader will not be usable more. 524 /// \brief Destructor 525 ~DigraphReader() { 526 for (typename NodeMaps::iterator it = _node_maps.begin(); 527 it != _node_maps.end(); ++it) { 528 delete it->second; 529 } 530 531 for (typename ArcMaps::iterator it = _arc_maps.begin(); 532 it != _arc_maps.end(); ++it) { 533 delete it->second; 534 } 535 536 for (typename Attributes::iterator it = _attributes.begin(); 537 it != _attributes.end(); ++it) { 538 delete it->second; 539 } 540 541 if (local_is) { 542 delete _is; 543 } 544 545 } 546 547 private: 548 549 friend DigraphReader<Digraph> digraphReader<>(std::istream& is, 550 Digraph& digraph); 551 friend DigraphReader<Digraph> digraphReader<>(const std::string& fn, 552 Digraph& digraph); 553 friend DigraphReader<Digraph> digraphReader<>(const char *fn, 554 Digraph& digraph); 555 516 556 DigraphReader(DigraphReader& other) 517 557 : _is(other._is), local_is(other.local_is), _digraph(other._digraph), … … 535 575 } 536 576 537 /// \brief Destructor538 ~DigraphReader() {539 for (typename NodeMaps::iterator it = _node_maps.begin();540 it != _node_maps.end(); ++it) {541 delete it->second;542 }543 544 for (typename ArcMaps::iterator it = _arc_maps.begin();545 it != _arc_maps.end(); ++it) {546 delete it->second;547 }548 549 for (typename Attributes::iterator it = _attributes.begin();550 it != _attributes.end(); ++it) {551 delete it->second;552 }553 554 if (local_is) {555 delete _is;556 }557 558 }559 560 private:561 562 577 DigraphReader& operator=(const DigraphReader&); 563 578 … … 1183 1198 } 1184 1199 1200 template <typename Graph> 1201 class GraphReader; 1202 1203 template <typename Graph> 1204 GraphReader<Graph> graphReader(std::istream& is, Graph& graph); 1205 1206 template <typename Graph> 1207 GraphReader<Graph> graphReader(const std::string& fn, Graph& graph); 1208 1209 template <typename Graph> 1210 GraphReader<Graph> graphReader(const char *fn, Graph& graph); 1211 1185 1212 /// \ingroup lemon_io 1186 1213 /// … … 1261 1288 _skip_nodes(false), _skip_edges(false) {} 1262 1289 1263 /// \brief Copy constructor 1264 /// 1265 /// The copy constructor transfers all data from the other reader, 1266 /// therefore the copied reader will not be usable more. 1290 /// \brief Destructor 1291 ~GraphReader() { 1292 for (typename NodeMaps::iterator it = _node_maps.begin(); 1293 it != _node_maps.end(); ++it) { 1294 delete it->second; 1295 } 1296 1297 for (typename EdgeMaps::iterator it = _edge_maps.begin(); 1298 it != _edge_maps.end(); ++it) { 1299 delete it->second; 1300 } 1301 1302 for (typename Attributes::iterator it = _attributes.begin(); 1303 it != _attributes.end(); ++it) { 1304 delete it->second; 1305 } 1306 1307 if (local_is) { 1308 delete _is; 1309 } 1310 1311 } 1312 1313 private: 1314 friend GraphReader<Graph> graphReader<>(std::istream& is, Graph& graph); 1315 friend GraphReader<Graph> graphReader<>(const std::string& fn, 1316 Graph& graph); 1317 friend GraphReader<Graph> graphReader<>(const char *fn, Graph& graph); 1318 1267 1319 GraphReader(GraphReader& other) 1268 1320 : _is(other._is), local_is(other.local_is), _graph(other._graph), … … 1286 1338 } 1287 1339 1288 /// \brief Destructor1289 ~GraphReader() {1290 for (typename NodeMaps::iterator it = _node_maps.begin();1291 it != _node_maps.end(); ++it) {1292 delete it->second;1293 }1294 1295 for (typename EdgeMaps::iterator it = _edge_maps.begin();1296 it != _edge_maps.end(); ++it) {1297 delete it->second;1298 }1299 1300 for (typename Attributes::iterator it = _attributes.begin();1301 it != _attributes.end(); ++it) {1302 delete it->second;1303 }1304 1305 if (local_is) {1306 delete _is;1307 }1308 1309 }1310 1311 private:1312 1313 1340 GraphReader& operator=(const GraphReader&); 1314 1341 … … 1978 2005 } 1979 2006 2007 class SectionReader; 2008 2009 SectionReader sectionReader(std::istream& is); 2010 SectionReader sectionReader(const std::string& fn); 2011 SectionReader sectionReader(const char* fn); 2012 1980 2013 /// \brief Section reader class 1981 2014 /// … … 2020 2053 : _is(new std::ifstream(fn)), local_is(true) {} 2021 2054 2022 /// \brief Copy constructor2023 ///2024 /// The copy constructor transfers all data from the other reader,2025 /// therefore the copied reader will not be usable more.2026 SectionReader(SectionReader& other)2027 : _is(other._is), local_is(other.local_is) {2028 2029 other._is = 0;2030 other.local_is = false;2031 2032 _sections.swap(other._sections);2033 }2034 2035 2055 /// \brief Destructor 2036 2056 ~SectionReader() { … … 2047 2067 2048 2068 private: 2069 2070 friend SectionReader sectionReader(std::istream& is); 2071 friend SectionReader sectionReader(const std::string& fn); 2072 friend SectionReader sectionReader(const char* fn); 2073 2074 SectionReader(SectionReader& other) 2075 : _is(other._is), local_is(other.local_is) { 2076 2077 other._is = 0; 2078 other.local_is = false; 2079 2080 _sections.swap(other._sections); 2081 } 2049 2082 2050 2083 SectionReader& operator=(const SectionReader&); … … 2296 2329 LgfContents(const char* fn) 2297 2330 : _is(new std::ifstream(fn)), local_is(true) {} 2298 2299 /// \brief Copy constructor2300 ///2301 /// The copy constructor transfers all data from the other reader,2302 /// therefore the copied reader will not be usable more.2303 LgfContents(LgfContents& other)2304 : _is(other._is), local_is(other.local_is) {2305 2306 other._is = 0;2307 other.local_is = false;2308 2309 _node_sections.swap(other._node_sections);2310 _edge_sections.swap(other._edge_sections);2311 _attribute_sections.swap(other._attribute_sections);2312 _extra_sections.swap(other._extra_sections);2313 2314 _arc_sections.swap(other._arc_sections);2315 2316 _node_maps.swap(other._node_maps);2317 _edge_maps.swap(other._edge_maps);2318 _attributes.swap(other._attributes);2319 }2320 2331 2321 2332 /// \brief Destructor … … 2323 2334 if (local_is) delete _is; 2324 2335 } 2336 2337 private: 2338 2339 LgfContents(const LgfContents&); 2340 LgfContents& operator=(const LgfContents&); 2341 2342 public: 2325 2343 2326 2344 -
lemon/lgf_writer.h
r185 r190 305 305 306 306 } 307 308 template <typename Digraph> 309 class DigraphWriter; 310 311 template <typename Digraph> 312 DigraphWriter<Digraph> digraphWriter(std::ostream& os, 313 const Digraph& digraph); 314 315 template <typename Digraph> 316 DigraphWriter<Digraph> digraphWriter(const std::string& fn, 317 const Digraph& digraph); 318 319 template <typename Digraph> 320 DigraphWriter<Digraph> digraphWriter(const char *fn, 321 const Digraph& digraph); 307 322 308 323 /// \ingroup lemon_io … … 363 378 bool local_os; 364 379 365 Digraph& _digraph;380 const Digraph& _digraph; 366 381 367 382 std::string _nodes_caption; … … 395 410 /// Construct a directed graph writer, which writes to the given 396 411 /// output stream. 397 DigraphWriter(std::ostream& is, Digraph& digraph)412 DigraphWriter(std::ostream& is, const Digraph& digraph) 398 413 : _os(&is), local_os(false), _digraph(digraph), 399 414 _skip_nodes(false), _skip_arcs(false) {} … … 403 418 /// Construct a directed graph writer, which writes to the given 404 419 /// output file. 405 DigraphWriter(const std::string& fn, Digraph& digraph)420 DigraphWriter(const std::string& fn, const Digraph& digraph) 406 421 : _os(new std::ofstream(fn.c_str())), local_os(true), _digraph(digraph), 407 422 _skip_nodes(false), _skip_arcs(false) {} … … 411 426 /// Construct a directed graph writer, which writes to the given 412 427 /// output file. 413 DigraphWriter(const char* fn, Digraph& digraph)428 DigraphWriter(const char* fn, const Digraph& digraph) 414 429 : _os(new std::ofstream(fn)), local_os(true), _digraph(digraph), 415 430 _skip_nodes(false), _skip_arcs(false) {} 416 417 /// \brief Copy constructor418 ///419 /// The copy constructor transfers all data from the other writer,420 /// therefore the copied writer will not be usable more.421 DigraphWriter(DigraphWriter& other)422 : _os(other._os), local_os(other.local_os), _digraph(other._digraph),423 _skip_nodes(other._skip_nodes), _skip_arcs(other._skip_arcs) {424 425 other._os = 0;426 other.local_os = false;427 428 _node_index.swap(other._node_index);429 _arc_index.swap(other._arc_index);430 431 _node_maps.swap(other._node_maps);432 _arc_maps.swap(other._arc_maps);433 _attributes.swap(other._attributes);434 435 _nodes_caption = other._nodes_caption;436 _arcs_caption = other._arcs_caption;437 _attributes_caption = other._attributes_caption;438 }439 431 440 432 /// \brief Destructor … … 461 453 462 454 private: 455 456 friend DigraphWriter<Digraph> digraphWriter<>(std::ostream& os, 457 const Digraph& digraph); 458 friend DigraphWriter<Digraph> digraphWriter<>(const std::string& fn, 459 const Digraph& digraph); 460 friend DigraphWriter<Digraph> digraphWriter<>(const char *fn, 461 const Digraph& digraph); 462 463 DigraphWriter(DigraphWriter& other) 464 : _os(other._os), local_os(other.local_os), _digraph(other._digraph), 465 _skip_nodes(other._skip_nodes), _skip_arcs(other._skip_arcs) { 466 467 other._os = 0; 468 other.local_os = false; 469 470 _node_index.swap(other._node_index); 471 _arc_index.swap(other._arc_index); 472 473 _node_maps.swap(other._node_maps); 474 _arc_maps.swap(other._arc_maps); 475 _attributes.swap(other._attributes); 476 477 _nodes_caption = other._nodes_caption; 478 _arcs_caption = other._arcs_caption; 479 _attributes_caption = other._attributes_caption; 480 } 463 481 464 482 DigraphWriter& operator=(const DigraphWriter&); … … 845 863 /// \relates DigraphWriter 846 864 template <typename Digraph> 847 DigraphWriter<Digraph> digraphWriter(std::ostream& os, Digraph& digraph) { 865 DigraphWriter<Digraph> digraphWriter(std::ostream& os, 866 const Digraph& digraph) { 848 867 DigraphWriter<Digraph> tmp(os, digraph); 849 868 return tmp; … … 853 872 template <typename Digraph> 854 873 DigraphWriter<Digraph> digraphWriter(const std::string& fn, 855 Digraph& digraph) {874 const Digraph& digraph) { 856 875 DigraphWriter<Digraph> tmp(fn, digraph); 857 876 return tmp; … … 860 879 /// \relates DigraphWriter 861 880 template <typename Digraph> 862 DigraphWriter<Digraph> digraphWriter(const char* fn, Digraph& digraph) { 881 DigraphWriter<Digraph> digraphWriter(const char* fn, 882 const Digraph& digraph) { 863 883 DigraphWriter<Digraph> tmp(fn, digraph); 864 884 return tmp; 865 885 } 886 887 template <typename Graph> 888 class GraphWriter; 889 890 template <typename Graph> 891 GraphWriter<Graph> graphWriter(std::ostream& os, const Graph& graph); 892 893 template <typename Graph> 894 GraphWriter<Graph> graphWriter(const std::string& fn, const Graph& graph); 895 896 template <typename Graph> 897 GraphWriter<Graph> graphWriter(const char *fn, const Graph& graph); 866 898 867 899 /// \ingroup lemon_io … … 915 947 /// Construct a directed graph writer, which writes to the given 916 948 /// output stream. 917 GraphWriter(std::ostream& is, Graph& graph)949 GraphWriter(std::ostream& is, const Graph& graph) 918 950 : _os(&is), local_os(false), _graph(graph), 919 951 _skip_nodes(false), _skip_edges(false) {} … … 923 955 /// Construct a directed graph writer, which writes to the given 924 956 /// output file. 925 GraphWriter(const std::string& fn, Graph& graph)957 GraphWriter(const std::string& fn, const Graph& graph) 926 958 : _os(new std::ofstream(fn.c_str())), local_os(true), _graph(graph), 927 959 _skip_nodes(false), _skip_edges(false) {} … … 931 963 /// Construct a directed graph writer, which writes to the given 932 964 /// output file. 933 GraphWriter(const char* fn, Graph& graph)965 GraphWriter(const char* fn, const Graph& graph) 934 966 : _os(new std::ofstream(fn)), local_os(true), _graph(graph), 935 967 _skip_nodes(false), _skip_edges(false) {} 936 937 /// \brief Copy constructor938 ///939 /// The copy constructor transfers all data from the other writer,940 /// therefore the copied writer will not be usable more.941 GraphWriter(GraphWriter& other)942 : _os(other._os), local_os(other.local_os), _graph(other._graph),943 _skip_nodes(other._skip_nodes), _skip_edges(other._skip_edges) {944 945 other._os = 0;946 other.local_os = false;947 948 _node_index.swap(other._node_index);949 _edge_index.swap(other._edge_index);950 951 _node_maps.swap(other._node_maps);952 _edge_maps.swap(other._edge_maps);953 _attributes.swap(other._attributes);954 955 _nodes_caption = other._nodes_caption;956 _edges_caption = other._edges_caption;957 _attributes_caption = other._attributes_caption;958 }959 968 960 969 /// \brief Destructor … … 979 988 } 980 989 } 981 990 982 991 private: 983 992 993 friend GraphWriter<Graph> graphWriter<>(std::ostream& os, 994 const Graph& graph); 995 friend GraphWriter<Graph> graphWriter<>(const std::string& fn, 996 const Graph& graph); 997 friend GraphWriter<Graph> graphWriter<>(const char *fn, 998 const Graph& graph); 999 1000 GraphWriter(GraphWriter& other) 1001 : _os(other._os), local_os(other.local_os), _graph(other._graph), 1002 _skip_nodes(other._skip_nodes), _skip_edges(other._skip_edges) { 1003 1004 other._os = 0; 1005 other.local_os = false; 1006 1007 _node_index.swap(other._node_index); 1008 _edge_index.swap(other._edge_index); 1009 1010 _node_maps.swap(other._node_maps); 1011 _edge_maps.swap(other._edge_maps); 1012 _attributes.swap(other._attributes); 1013 1014 _nodes_caption = other._nodes_caption; 1015 _edges_caption = other._edges_caption; 1016 _attributes_caption = other._attributes_caption; 1017 } 1018 984 1019 GraphWriter& operator=(const GraphWriter&); 985 1020 … … 1411 1446 /// \relates GraphWriter 1412 1447 template <typename Graph> 1413 GraphWriter<Graph> graphWriter(std::ostream& os, Graph& graph) {1448 GraphWriter<Graph> graphWriter(std::ostream& os, const Graph& graph) { 1414 1449 GraphWriter<Graph> tmp(os, graph); 1415 1450 return tmp; … … 1418 1453 /// \relates GraphWriter 1419 1454 template <typename Graph> 1420 GraphWriter<Graph> graphWriter(const std::string& fn, Graph& graph) {1455 GraphWriter<Graph> graphWriter(const std::string& fn, const Graph& graph) { 1421 1456 GraphWriter<Graph> tmp(fn, graph); 1422 1457 return tmp; … … 1425 1460 /// \relates GraphWriter 1426 1461 template <typename Graph> 1427 GraphWriter<Graph> graphWriter(const char* fn, Graph& graph) {1462 GraphWriter<Graph> graphWriter(const char* fn, const Graph& graph) { 1428 1463 GraphWriter<Graph> tmp(fn, graph); 1429 1464 return tmp;
Note: See TracChangeset
for help on using the changeset viewer.