Show
Ignore:
Timestamp:
11/02/08 13:21:19 (6 years ago)
Author:
mrkn
Message:

boost_supplement/graph/read_lgl.hpp (boost_supplement::detail::lgl_reader::read): conserving vertex order.

Location:
lang/cplusplus/boost-supplement/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/cplusplus/boost-supplement/trunk/ChangeLog

    r21208 r22565  
     12008-11-02  Kenta Murata  <mrkn@mrkn.jp> 
     2 
     3        * boost_supplement/graph/read_lgl.hpp (boost_supplement::detail::lgl_reader::read): conserving vertex order. 
     4 
    152008-10-13  Kenta Murata  <mrkn@mrkn.jp> 
    26 
  • lang/cplusplus/boost-supplement/trunk/boost_supplement/graph/read_lgl.hpp

    r21200 r22565  
    99#include <boost_supplement/graph/detail/line_input_iterator.hpp> 
    1010 
     11#include <list> 
    1112#include <map> 
    1213 
     
    2829  NameVertexMap nvm_; 
    2930  std::string base_; 
     31  std::list<std::string> lines_; 
    3032 
    3133  Vertex name_to_vertex(std::string const& n) 
     
    4143    } 
    4244 
    43   void process_line(std::string const& line) 
     45  void process_line_1(std::string const& line) 
     46    { 
     47      using namespace std; 
     48      using namespace boost; 
     49 
     50      tokenizer tokens(line, SEP); 
     51      tokenizer::iterator tok_iter = tokens.begin(); 
     52      string tok1(*tok_iter++); 
     53      if ("#" == tok1) { 
     54        if (tok_iter == tokens.end()) { 
     55          // TODO: Syntax error 
     56          return; 
     57        } 
     58        name_to_vertex(*tok_iter); 
     59      } 
     60    } 
     61 
     62  void process_line_2(std::string const& line) 
    4463    { 
    4564      using namespace std; 
     
    7998      vnm_(&n), 
    8099      ewm_(&w), 
    81       base_("") 
     100      base_(""), 
     101      lines_() 
    82102    {} 
    83103 
     
    86106    { 
    87107      graph_->clear(); 
     108      // pass 1: adding vertices 
    88109      for (line_input_iterator<InputStream> line_iter(is); 
    89110           line_iter != line_input_iterator<InputStream>(); 
    90111           ++line_iter) { 
    91         process_line(*line_iter); 
     112        process_line_1(*line_iter); 
     113        lines_.push_back(*line_iter); 
     114      } 
     115      // pass 2: adding edges 
     116      for (std::list<std::string>::iterator line_iter = lines_.begin(); 
     117           line_iter != lines_.end(); ++line_iter) { 
     118        process_line_2(*line_iter); 
    92119      } 
    93120