Changeset 190:1e6af6f0843c in lemon-1.2 for lemon/lgf_reader.h
- Timestamp:
- 07/04/08 16:12:31 (17 years ago)
- Branch:
- default
- Children:
- 191:abc5b9d0c67e, 192:7bf5f97d574f, 206:4e22275a2b52
- Phase:
- public
- File:
-
- 1 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
Note: See TracChangeset
for help on using the changeset viewer.