COIN-OR::LEMON - Graph Library

Changeset 1115:444f69240539 in lemon-0.x for src/work/deba/graph_reader.h


Ignore:
Timestamp:
02/01/05 16:56:37 (19 years ago)
Author:
Balazs Dezso
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@1514
Message:

Some changes in the IO and map utilities.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/work/deba/graph_reader.h

    r1037 r1115  
    3838  class IOException {
    3939  public:
     40    virtual ~IOException() {}
    4041    virtual string what() const = 0;
    4142  };
     
    5657    typedef _Exception Exception;
    5758    StreamException(int _line, Exception _exception)
    58       : line_num(_line), Exception(_exception) {}
     59      : Exception(_exception), line_num(_line) {}
    5960    virtual int line() const {
    6061      return line_num;
    6162    }
     63
     64    virtual ~StreamException() {}
     65
    6266    virtual std::string what() const {
    6367      ostringstream os;
     
    7175
    7276  // Readers and ReaderTraits
    73  
     77  /// \brief Standard ReaderTraits for the GraphReader class.
     78  ///
     79  ///
     80 
    7481  struct DefaultReaderTraits {
    7582
     
    97104      value.clear();
    98105      is >> ws;
    99       if (!is.get(c) || c != '\"') throw DataFormatException("Quoted string format");
     106      if (!is.get(c) || c != '\"')
     107        throw DataFormatException("Quoted string format");
    100108      while (is.get(c) && c != '\"') {
    101109        if (escaped && c == '\\') {
     
    193201    typedef typename ReaderTraits::DefaultReader DefaultReader;
    194202
    195     GraphReader(std::istream& _is, Graph& _graph, const DefaultReader& _reader = DefaultReader())
     203    GraphReader(std::istream& _is, Graph& _graph,
     204                const DefaultReader& _reader = DefaultReader())
    196205      : is(_is), graph(_graph), nodeSkipper(_reader), edgeSkipper(_reader) {}
    197206
     
    199208    ~GraphReader() {
    200209
    201       for (typename NodeMapReaders::iterator it = node_map_readers.begin(); it != node_map_readers.end(); ++it) {
     210      for (typename NodeMapReaders::iterator it = node_map_readers.begin();
     211           it != node_map_readers.end(); ++it) {
    202212        delete it->second;
    203213      }
    204214
    205       for (typename EdgeMapReaders::iterator it = edge_map_readers.begin(); it != edge_map_readers.end(); ++it) {
     215      for (typename EdgeMapReaders::iterator it = edge_map_readers.begin();
     216           it != edge_map_readers.end(); ++it) {
    206217        delete it->second;
    207218      }
     
    212223
    213224    template <typename Map>
    214     GraphReader& readNodeMap(std::string name, Map& map) {
    215       return readNodeMap<typename ReaderTraits::template Reader<typename Map::Value>, Map>(name, map);
     225    GraphReader& addNodeMap(std::string name, Map& map) {
     226      return addNodeMap<typename ReaderTraits::template
     227        Reader<typename Map::Value>, Map>(name, map);
    216228    }
    217229
    218230    template <typename Reader, typename Map>
    219     GraphReader& readNodeMap(std::string name, Map& map, const Reader& reader = Reader()) {
     231    GraphReader& addNodeMap(std::string name, Map& map,
     232                             const Reader& reader = Reader()) {
    220233      if (node_map_readers.find(name) != node_map_readers.end()) {
    221234        throw Exception() << "Multiple read rule for node map: " << name;
    222235      }
    223       node_map_readers.insert(make_pair(name, new MapReader<Node, Map, Reader>(map, reader)));
     236      node_map_readers.insert(
     237        make_pair(name, new MapReader<Node, Map, Reader>(map, reader)));
    224238      return *this;
    225239    }
    226240
    227241    template <typename Reader>
    228     GraphReader& skipNodeMap(std::string name, const Reader& reader = Reader()) {
     242    GraphReader& skipNodeMap(std::string name,
     243                             const Reader& reader = Reader()) {
    229244      if (node_map_readers.find(name) != node_map_readers.end()) {
    230245        throw Exception() << "Multiple read rule for node map: " << name;
    231246      }
    232       node_map_readers.insert(make_pair(name, new SkipReader<Node, Reader>(reader)));
     247      node_map_readers.insert(
     248        make_pair(name, new SkipReader<Node, Reader>(reader)));
    233249      return *this;
    234250    }
     
    237253
    238254    template <typename Map>
    239     GraphReader& readEdgeMap(std::string name, Map& map) {
    240       return readEdgeMap<typename ReaderTraits::template Reader<typename Map::Value>, Map>(name, map);
     255    GraphReader& addEdgeMap(std::string name, Map& map) {
     256      return addEdgeMap<typename ReaderTraits::template
     257        Reader<typename Map::Value>, Map>(name, map);
    241258    }
    242259
    243260
    244261    template <typename Reader, typename Map>
    245     GraphReader& readEdgeMap(std::string name, Map& map, const Reader& reader = Reader()) {
     262    GraphReader& addEdgeMap(std::string name, Map& map,
     263                             const Reader& reader = Reader()) {
    246264      if (edge_map_readers.find(name) != edge_map_readers.end()) {
    247265        throw Exception() << "Multiple read rule for edge map: " << name;
    248266      }
    249       edge_map_readers.insert(make_pair(name, new MapReader<Edge, Map, Reader>(map, reader)));
     267      edge_map_readers.insert(
     268        make_pair(name, new MapReader<Edge, Map, Reader>(map, reader)));
    250269      return *this;
    251270    }
    252271
    253272    template <typename Reader>
    254     GraphReader& skipEdgeMap(std::string name, const Reader& reader = Reader()) {
     273    GraphReader& skipEdgeMap(std::string name,
     274                             const Reader& reader = Reader()) {
    255275      if (edge_map_readers.find(name) != edge_map_readers.end()) {
    256276        throw Exception() << "Multiple read rule for edge map: " << name;
    257277      }
    258       edge_map_readers.insert(make_pair(name, new SkipReader<Edge, Reader>(reader)));
     278      edge_map_readers.insert(
     279        make_pair(name, new SkipReader<Edge, Reader>(reader)));
    259280      return *this;
    260281    }
    261282
    262283    // Node rules
    263     GraphReader& readNode(std::string name, Node& node) {
     284    GraphReader& addNode(std::string name, Node& node) {
    264285      if (node_readers.find(name) != node_readers.end()) {
    265286        throw Exception() << "Multiple read rule for node";
    266287      }
    267288      node_readers.insert(make_pair(name, &node));
     289      return *this;
    268290    }
    269291
    270292    // Edge rules
    271293
    272     GraphReader& readEdge(std::string name, Edge& edge) {
     294    GraphReader& addEdge(std::string name, Edge& edge) {
    273295      if (edge_readers.find(name) != edge_readers.end()) {
    274296        throw Exception() << "Multiple read rule for edge";
    275297      }
    276298      edge_readers.insert(make_pair(name, &edge));
     299      return *this;
    277300    }
    278301
     
    307330    template <typename Item> class InverterBase;
    308331
    309     std::string readNodeSet(int& line_num, auto_ptr<InverterBase<Node> > & nodeInverter) {
     332    std::string readNodeSet(int& line_num,
     333                            auto_ptr<InverterBase<Node> > & nodeInverter) {
    310334      std::vector<ReaderBase<Node>* > index;
    311335      {
     
    335359        std::istringstream ls(line);
    336360        nodeInverter->read(ls, node);
    337         for (int i = 1; i < index.size(); ++i) {
     361        for (int i = 1; i < (int)index.size(); ++i) {
    338362          index[i]->read(ls, node);
    339363        }
     
    343367
    344368    std::string readEdgeSet(int& line_num,
    345                      auto_ptr<InverterBase<Edge> > & edgeInverter, auto_ptr<InverterBase<Node> > & nodeInverter) {
     369                            auto_ptr<InverterBase<Edge> > & edgeInverter,
     370                            auto_ptr<InverterBase<Node> > & nodeInverter) {
    346371      std::vector<ReaderBase<Edge>*> index;
    347372      {
     
    373398        Edge edge = graph.addEdge(source, target);
    374399        edgeInverter->read(ls, edge);
    375         for (int i = 1; i < index.size(); ++i) {
     400        for (int i = 1; i < (int)index.size(); ++i) {
    376401          index[i]->read(ls, edge);
    377402        }
     
    380405    }
    381406
    382     std::string readNodes(int& line_num, auto_ptr<InverterBase<Node> >& nodeInverter) {
     407    std::string readNodes(int& line_num,
     408                          auto_ptr<InverterBase<Node> >& nodeInverter) {
    383409      std::string line;
    384410      while (line = readNotEmptyLine(is, line_num), line[0] != '@') {
     
    394420    }
    395421
    396     std::string readEdges(int& line_num, auto_ptr<InverterBase<Edge> >& edgeInverter) {
     422    std::string readEdges(int& line_num,
     423                          auto_ptr<InverterBase<Edge> >& edgeInverter) {
    397424      std::string line;
    398425      while (line = readNotEmptyLine(is, line_num), line[0] != '@') {
     
    412439      while (++line_num, getline(is, line)) {   
    413440        int vi = line.find_first_not_of(" \t");
    414         if (vi != string::npos && line[vi] != '#') {
     441        if (vi != (int)string::npos && line[vi] != '#') {
    415442          return line.substr(vi);
    416443        }
     
    446473        : map(_map), reader(_reader) {}
    447474
     475      virtual ~MapReaderInverter() {}
     476
    448477      virtual void read(std::istream& is, const Item& item) {
    449478        Value value;
     
    483512        : reader(_reader) {}
    484513
     514      virtual ~SkipReaderInverter() {}
     515
    485516      virtual void read(std::istream& is, const Item& item) {
    486517        Value value;
     
    514545    public:
    515546      typedef _Item Item;
     547
     548      //      virtual ~ReaderBase() {}
    516549
    517550      virtual void read(std::istream& is, const Item& item) = 0;
     
    533566        : map(_map), reader(_reader) {}
    534567
     568      virtual ~MapReader() {}
    535569
    536570      virtual void read(std::istream& is, const Item& item) {
     
    556590      SkipReader(const Reader& _reader) : reader(_reader) {}
    557591
     592      virtual ~SkipReader() {}
     593
    558594      virtual void read(std::istream& is, const Item& item) {
    559595        Value value;
Note: See TracChangeset for help on using the changeset viewer.