COIN-OR::LEMON - Graph Library

Changeset 190:1e6af6f0843c in lemon-1.2 for lemon/lgf_writer.h


Ignore:
Timestamp:
07/04/08 16:12:31 (16 years ago)
Author:
Balazs Dezso <deba@…>
Branch:
default
Children:
191:abc5b9d0c67e, 192:7bf5f97d574f, 206:4e22275a2b52
Phase:
public
Message:

Move to private copy constrcutors

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lemon/lgf_writer.h

    r185 r190  
    305305
    306306  }
     307
     308  template <typename Digraph>
     309  class DigraphWriter;
     310
     311  template <typename Digraph>
     312  DigraphWriter<Digraph> digraphWriter(std::ostream& os,
     313                                       const Digraph& digraph);
     314
     315  template <typename Digraph>
     316  DigraphWriter<Digraph> digraphWriter(const std::string& fn,
     317                                       const Digraph& digraph);
     318
     319  template <typename Digraph>
     320  DigraphWriter<Digraph> digraphWriter(const char *fn,
     321                                       const Digraph& digraph);
    307322 
    308323  /// \ingroup lemon_io
     
    363378    bool local_os;
    364379
    365     Digraph& _digraph;
     380    const Digraph& _digraph;
    366381
    367382    std::string _nodes_caption;
     
    395410    /// Construct a directed graph writer, which writes to the given
    396411    /// output stream.
    397     DigraphWriter(std::ostream& is, Digraph& digraph)
     412    DigraphWriter(std::ostream& is, const Digraph& digraph)
    398413      : _os(&is), local_os(false), _digraph(digraph),
    399414        _skip_nodes(false), _skip_arcs(false) {}
     
    403418    /// Construct a directed graph writer, which writes to the given
    404419    /// output file.
    405     DigraphWriter(const std::string& fn, Digraph& digraph)
     420    DigraphWriter(const std::string& fn, const Digraph& digraph)
    406421      : _os(new std::ofstream(fn.c_str())), local_os(true), _digraph(digraph),
    407422        _skip_nodes(false), _skip_arcs(false) {}
     
    411426    /// Construct a directed graph writer, which writes to the given
    412427    /// output file.
    413     DigraphWriter(const char* fn, Digraph& digraph)
     428    DigraphWriter(const char* fn, const Digraph& digraph)
    414429      : _os(new std::ofstream(fn)), local_os(true), _digraph(digraph),
    415430        _skip_nodes(false), _skip_arcs(false) {}
    416 
    417     /// \brief Copy constructor
    418     ///
    419     /// The copy constructor transfers all data from the other writer,
    420     /// therefore the copied writer will not be usable more.
    421     DigraphWriter(DigraphWriter& other)
    422       : _os(other._os), local_os(other.local_os), _digraph(other._digraph),
    423         _skip_nodes(other._skip_nodes), _skip_arcs(other._skip_arcs) {
    424 
    425       other._os = 0;
    426       other.local_os = false;
    427 
    428       _node_index.swap(other._node_index);
    429       _arc_index.swap(other._arc_index);
    430 
    431       _node_maps.swap(other._node_maps);
    432       _arc_maps.swap(other._arc_maps);
    433       _attributes.swap(other._attributes);
    434 
    435       _nodes_caption = other._nodes_caption;
    436       _arcs_caption = other._arcs_caption;
    437       _attributes_caption = other._attributes_caption;
    438     }
    439431
    440432    /// \brief Destructor
     
    461453
    462454  private:
     455
     456    friend DigraphWriter<Digraph> digraphWriter<>(std::ostream& os,
     457                                                  const Digraph& digraph);
     458    friend DigraphWriter<Digraph> digraphWriter<>(const std::string& fn,
     459                                                  const Digraph& digraph);   
     460    friend DigraphWriter<Digraph> digraphWriter<>(const char *fn,
     461                                                  const Digraph& digraph);
     462
     463    DigraphWriter(DigraphWriter& other)
     464      : _os(other._os), local_os(other.local_os), _digraph(other._digraph),
     465        _skip_nodes(other._skip_nodes), _skip_arcs(other._skip_arcs) {
     466
     467      other._os = 0;
     468      other.local_os = false;
     469
     470      _node_index.swap(other._node_index);
     471      _arc_index.swap(other._arc_index);
     472
     473      _node_maps.swap(other._node_maps);
     474      _arc_maps.swap(other._arc_maps);
     475      _attributes.swap(other._attributes);
     476
     477      _nodes_caption = other._nodes_caption;
     478      _arcs_caption = other._arcs_caption;
     479      _attributes_caption = other._attributes_caption;
     480    }
    463481   
    464482    DigraphWriter& operator=(const DigraphWriter&);
     
    845863  /// \relates DigraphWriter
    846864  template <typename Digraph>
    847   DigraphWriter<Digraph> digraphWriter(std::ostream& os, Digraph& digraph) {
     865  DigraphWriter<Digraph> digraphWriter(std::ostream& os,
     866                                       const Digraph& digraph) {
    848867    DigraphWriter<Digraph> tmp(os, digraph);
    849868    return tmp;
     
    853872  template <typename Digraph>
    854873  DigraphWriter<Digraph> digraphWriter(const std::string& fn,
    855                                        Digraph& digraph) {
     874                                       const Digraph& digraph) {
    856875    DigraphWriter<Digraph> tmp(fn, digraph);
    857876    return tmp;
     
    860879  /// \relates DigraphWriter
    861880  template <typename Digraph>
    862   DigraphWriter<Digraph> digraphWriter(const char* fn, Digraph& digraph) {
     881  DigraphWriter<Digraph> digraphWriter(const char* fn,
     882                                       const Digraph& digraph) {
    863883    DigraphWriter<Digraph> tmp(fn, digraph);
    864884    return tmp;
    865885  }
     886
     887  template <typename Graph>
     888  class GraphWriter;
     889
     890  template <typename Graph>
     891  GraphWriter<Graph> graphWriter(std::ostream& os, const Graph& graph);   
     892
     893  template <typename Graph>
     894  GraphWriter<Graph> graphWriter(const std::string& fn, const Graph& graph);   
     895
     896  template <typename Graph>
     897  GraphWriter<Graph> graphWriter(const char *fn, const Graph& graph);   
    866898
    867899  /// \ingroup lemon_io
     
    915947    /// Construct a directed graph writer, which writes to the given
    916948    /// output stream.
    917     GraphWriter(std::ostream& is, Graph& graph)
     949    GraphWriter(std::ostream& is, const Graph& graph)
    918950      : _os(&is), local_os(false), _graph(graph),
    919951        _skip_nodes(false), _skip_edges(false) {}
     
    923955    /// Construct a directed graph writer, which writes to the given
    924956    /// output file.
    925     GraphWriter(const std::string& fn, Graph& graph)
     957    GraphWriter(const std::string& fn, const Graph& graph)
    926958      : _os(new std::ofstream(fn.c_str())), local_os(true), _graph(graph),
    927959        _skip_nodes(false), _skip_edges(false) {}
     
    931963    /// Construct a directed graph writer, which writes to the given
    932964    /// output file.
    933     GraphWriter(const char* fn, Graph& graph)
     965    GraphWriter(const char* fn, const Graph& graph)
    934966      : _os(new std::ofstream(fn)), local_os(true), _graph(graph),
    935967        _skip_nodes(false), _skip_edges(false) {}
    936 
    937     /// \brief Copy constructor
    938     ///
    939     /// The copy constructor transfers all data from the other writer,
    940     /// therefore the copied writer will not be usable more.
    941     GraphWriter(GraphWriter& other)
    942       : _os(other._os), local_os(other.local_os), _graph(other._graph),
    943         _skip_nodes(other._skip_nodes), _skip_edges(other._skip_edges) {
    944 
    945       other._os = 0;
    946       other.local_os = false;
    947 
    948       _node_index.swap(other._node_index);
    949       _edge_index.swap(other._edge_index);
    950 
    951       _node_maps.swap(other._node_maps);
    952       _edge_maps.swap(other._edge_maps);
    953       _attributes.swap(other._attributes);
    954 
    955       _nodes_caption = other._nodes_caption;
    956       _edges_caption = other._edges_caption;
    957       _attributes_caption = other._attributes_caption;
    958     }
    959968
    960969    /// \brief Destructor
     
    979988      }
    980989    }
    981 
     990   
    982991  private:
    983    
     992
     993    friend GraphWriter<Graph> graphWriter<>(std::ostream& os,
     994                                            const Graph& graph);   
     995    friend GraphWriter<Graph> graphWriter<>(const std::string& fn,
     996                                            const Graph& graph);   
     997    friend GraphWriter<Graph> graphWriter<>(const char *fn,
     998                                            const Graph& graph);   
     999
     1000    GraphWriter(GraphWriter& other)
     1001      : _os(other._os), local_os(other.local_os), _graph(other._graph),
     1002        _skip_nodes(other._skip_nodes), _skip_edges(other._skip_edges) {
     1003
     1004      other._os = 0;
     1005      other.local_os = false;
     1006
     1007      _node_index.swap(other._node_index);
     1008      _edge_index.swap(other._edge_index);
     1009
     1010      _node_maps.swap(other._node_maps);
     1011      _edge_maps.swap(other._edge_maps);
     1012      _attributes.swap(other._attributes);
     1013
     1014      _nodes_caption = other._nodes_caption;
     1015      _edges_caption = other._edges_caption;
     1016      _attributes_caption = other._attributes_caption;
     1017    }
     1018
    9841019    GraphWriter& operator=(const GraphWriter&);
    9851020
     
    14111446  /// \relates GraphWriter
    14121447  template <typename Graph>
    1413   GraphWriter<Graph> graphWriter(std::ostream& os, Graph& graph) {
     1448  GraphWriter<Graph> graphWriter(std::ostream& os, const Graph& graph) {
    14141449    GraphWriter<Graph> tmp(os, graph);
    14151450    return tmp;
     
    14181453  /// \relates GraphWriter
    14191454  template <typename Graph>
    1420   GraphWriter<Graph> graphWriter(const std::string& fn, Graph& graph) {
     1455  GraphWriter<Graph> graphWriter(const std::string& fn, const Graph& graph) {
    14211456    GraphWriter<Graph> tmp(fn, graph);
    14221457    return tmp;
     
    14251460  /// \relates GraphWriter
    14261461  template <typename Graph>
    1427   GraphWriter<Graph> graphWriter(const char* fn, Graph& graph) {
     1462  GraphWriter<Graph> graphWriter(const char* fn, const Graph& graph) {
    14281463    GraphWriter<Graph> tmp(fn, graph);
    14291464    return tmp;
Note: See TracChangeset for help on using the changeset viewer.