Changeset 1396:56f9a4ba9149 in lemon-0.x
- Timestamp:
- 04/28/05 11:54:38 (20 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@1856
- Location:
- src/lemon
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/lemon/graph_reader.h
r1394 r1396 182 182 }; 183 183 184 class GUIReader { 185 public: 186 virtual void read(std::istream& is) = 0; 187 }; 188 184 189 /// \brief The graph reader class. 185 190 /// … … 264 269 GraphReader(std::istream& _is, Graph& _graph, 265 270 const DefaultReader& _reader = DefaultReader()) 266 : is(_is), graph(_graph), nodeSkipper(_reader), edgeSkipper(_reader) {} 271 : gui_reader(0), is(_is), graph(_graph), 272 nodeSkipper(_reader), edgeSkipper(_reader) {} 267 273 268 274 /// \brief Destruct the graph reader. … … 412 418 line = readEdges(line_num, edgeInverter); 413 419 } 420 if (line.find("@gui") == 0) { 421 line = readGUI(line_num); 422 } 414 423 if (line.find("@end") != 0) { 415 424 throw DataFormatError("Invalid control sequence error"); … … 419 428 throw e; 420 429 } 430 } 431 432 GraphReader& readGUI(GUIReader& reader) { 433 gui_reader = &reader; 434 return *this; 421 435 } 422 436 … … 545 559 } 546 560 561 std::string readGUI(int& line_num) { 562 std::stringstream section; 563 std::string line; 564 while (line = readNotEmptyLine(is, line_num), line[0] != '@') { 565 section << line << std::endl; 566 } 567 if (gui_reader != 0) { 568 gui_reader->read(section); 569 } 570 return line; 571 } 572 547 573 std::string readNotEmptyLine(std::istream& is, int& line_num) { 548 574 std::string line; … … 732 758 typedef std::map<std::string, Edge*> EdgeReaders; 733 759 EdgeReaders edge_readers; 760 761 GUIReader* gui_reader; 734 762 735 763 std::istream& is; -
src/lemon/graph_writer.h
r1394 r1396 155 155 private: 156 156 bool escaped; 157 }; 158 159 class GUIWriter { 160 public: 161 virtual void write(std::ostream& os) = 0; 157 162 }; 158 163 … … 239 244 /// default skipper. 240 245 GraphWriter(std::ostream& _os, const Graph& _graph) 241 : os(_os), graph(_graph){}246 : gui_writer(0), os(_os), graph(_graph){} 242 247 243 248 … … 317 322 edge_writers.push_back(make_pair(name, edge)); 318 323 return *this; 324 } 325 326 GraphWriter& writeGUI(const GUIWriter& writer) { 327 gui_writer = &writer; 319 328 } 320 329 … … 329 338 writeNodes(nodeWriter); 330 339 writeEdges(edgeWriter); 340 writeGUI(); 331 341 os << "@end" << std::endl; 332 342 } … … 434 444 } 435 445 446 void writeGUI() { 447 if (gui_writer) { 448 os << "@gui" << std::endl; 449 gui_writer->write(os); 450 } 451 } 436 452 437 453 … … 450 466 typedef std::vector<std::pair<std::string, Edge> > EdgeWriters; 451 467 EdgeWriters edge_writers; 468 469 GUIWriter* gui_writer; 452 470 453 471 std::ostream& os;
Note: See TracChangeset
for help on using the changeset viewer.