Changeset 188:70694e6bdcac in lemon-1.0 for lemon/lgf_reader.h
- Timestamp:
- 07/03/08 12:40:04 (16 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/lgf_reader.h
r186 r188 480 480 bool _use_arcs; 481 481 482 bool _skip_nodes; 483 bool _skip_arcs; 484 482 485 int line_num; 483 486 std::istringstream line; … … 491 494 DigraphReader(std::istream& is, Digraph& digraph) 492 495 : _is(&is), local_is(false), _digraph(digraph), 493 _use_nodes(false), _use_arcs(false) {} 496 _use_nodes(false), _use_arcs(false), 497 _skip_nodes(false), _skip_arcs(false) {} 494 498 495 499 /// \brief Constructor … … 499 503 DigraphReader(const std::string& fn, Digraph& digraph) 500 504 : _is(new std::ifstream(fn.c_str())), local_is(true), _digraph(digraph), 501 _use_nodes(false), _use_arcs(false) {} 505 _use_nodes(false), _use_arcs(false), 506 _skip_nodes(false), _skip_arcs(false) {} 502 507 503 508 /// \brief Constructor … … 507 512 DigraphReader(const char* fn, Digraph& digraph) 508 513 : _is(new std::ifstream(fn)), local_is(true), _digraph(digraph), 509 _use_nodes(false), _use_arcs(false) {} 514 _use_nodes(false), _use_arcs(false), 515 _skip_nodes(false), _skip_arcs(false) {} 510 516 511 517 /// \brief Copy constructor … … 515 521 DigraphReader(DigraphReader& other) 516 522 : _is(other._is), local_is(other.local_is), _digraph(other._digraph), 517 _use_nodes(other._use_nodes), _use_arcs(other._use_arcs) { 523 _use_nodes(other._use_nodes), _use_arcs(other._use_arcs), 524 _skip_nodes(other._skip_nodes), _skip_arcs(other._skip_arcs) { 518 525 519 526 other._is = 0; … … 838 845 template <typename Map, typename Converter> 839 846 DigraphReader& useArcs(const Map& map, 840 847 const Converter& converter = Converter()) { 841 848 checkConcept<concepts::ReadMap<Arc, typename Map::Value>, Map>(); 842 849 LEMON_ASSERT(!_use_arcs, "Multiple usage of useArcs() member"); … … 845 852 _arc_index.insert(std::make_pair(converter(map[a]), a)); 846 853 } 854 return *this; 855 } 856 857 /// \brief Skips the reading of node section 858 /// 859 /// Omit the reading of the node section. This implies that each node 860 /// map reading rule will be abanoned, and the nodes of the graph 861 /// will not be constructed, which usually cause that the arc set 862 /// could not be read due to lack of node name 863 /// resolving. Therefore, the \c skipArcs() should be used too, or 864 /// the useNodes() member function should be used to specify the 865 /// label of the nodes. 866 DigraphReader& skipNodes() { 867 LEMON_ASSERT(!_skip_nodes, "Skip nodes already set"); 868 _skip_nodes = true; 869 return *this; 870 } 871 872 /// \brief Skips the reading of arc section 873 /// 874 /// Omit the reading of the arc section. This implies that each arc 875 /// map reading rule will be abanoned, and the arcs of the graph 876 /// will not be constructed. 877 DigraphReader& skipArcs() { 878 LEMON_ASSERT(!_skip_arcs, "Skip arcs already set"); 879 _skip_arcs = true; 847 880 return *this; 848 881 } … … 1153 1186 } 1154 1187 1155 bool nodes_done = false;1156 bool arcs_done = false;1188 bool nodes_done = _skip_nodes; 1189 bool arcs_done = _skip_arcs; 1157 1190 bool attributes_done = false; 1158 1191 std::set<std::string> extra_sections; … … 1296 1329 bool _use_edges; 1297 1330 1331 bool _skip_nodes; 1332 bool _skip_edges; 1333 1298 1334 int line_num; 1299 1335 std::istringstream line; … … 1307 1343 GraphReader(std::istream& is, Graph& graph) 1308 1344 : _is(&is), local_is(false), _graph(graph), 1309 _use_nodes(false), _use_edges(false) {} 1345 _use_nodes(false), _use_edges(false), 1346 _skip_nodes(false), _skip_edges(false) {} 1310 1347 1311 1348 /// \brief Constructor … … 1315 1352 GraphReader(const std::string& fn, Graph& graph) 1316 1353 : _is(new std::ifstream(fn.c_str())), local_is(true), _graph(graph), 1317 _use_nodes(false), _use_edges(false) {} 1354 _use_nodes(false), _use_edges(false), 1355 _skip_nodes(false), _skip_edges(false) {} 1318 1356 1319 1357 /// \brief Constructor … … 1323 1361 GraphReader(const char* fn, Graph& graph) 1324 1362 : _is(new std::ifstream(fn)), local_is(true), _graph(graph), 1325 _use_nodes(false), _use_edges(false) {} 1363 _use_nodes(false), _use_edges(false), 1364 _skip_nodes(false), _skip_edges(false) {} 1326 1365 1327 1366 /// \brief Copy constructor … … 1331 1370 GraphReader(GraphReader& other) 1332 1371 : _is(other._is), local_is(other.local_is), _graph(other._graph), 1333 _use_nodes(other._use_nodes), _use_edges(other._use_edges) { 1372 _use_nodes(other._use_nodes), _use_edges(other._use_edges), 1373 _skip_nodes(other._skip_nodes), _skip_edges(other._skip_edges) { 1334 1374 1335 1375 other._is = 0; … … 1710 1750 } 1711 1751 1752 /// \brief Skips the reading of node section 1753 /// 1754 /// Omit the reading of the node section. This implies that each node 1755 /// map reading rule will be abanoned, and the nodes of the graph 1756 /// will not be constructed, which usually cause that the edge set 1757 /// could not be read due to lack of node name 1758 /// resolving. Therefore, the \c skipEdges() should be used too, or 1759 /// the useNodes() member function should be used to specify the 1760 /// label of the nodes. 1761 GraphReader& skipNodes() { 1762 LEMON_ASSERT(!_skip_nodes, "Skip nodes already set"); 1763 _skip_nodes = true; 1764 return *this; 1765 } 1766 1767 /// \brief Skips the reading of edge section 1768 /// 1769 /// Omit the reading of the edge section. This implies that each edge 1770 /// map reading rule will be abanoned, and the edges of the graph 1771 /// will not be constructed. 1772 GraphReader& skipEdges() { 1773 LEMON_ASSERT(!_skip_edges, "Skip edges already set"); 1774 _skip_edges = true; 1775 return *this; 1776 } 1777 1712 1778 /// @} 1713 1779 … … 2013 2079 LEMON_ASSERT(_is != 0, "This reader assigned to an other reader"); 2014 2080 2015 bool nodes_done = false;2016 bool edges_done = false;2081 bool nodes_done = _skip_nodes; 2082 bool edges_done = _skip_edges; 2017 2083 bool attributes_done = false; 2018 2084 std::set<std::string> extra_sections;
Note: See TracChangeset
for help on using the changeset viewer.