00001
00030 #ifndef __inout_hpp
00031 #define __inout_hpp
00032
00033
00034 #include<ostream>
00035
00036 #include"graph.hpp"
00037
00038
00039 namespace graphgen{
00040
00047
00048 class adjmatrix;
00049 class adjlist;
00050 class linklist;
00051 class degreeseq;
00052
00053
00054
00055 class pajek;
00056 class graphviz;
00057
00058
00060 typedef adjmatrix default_format;
00061
00062
00063
00070 class adjmatrix{
00071 const undirected_graph& G;
00072 public:
00073 adjmatrix(const undirected_graph&ref): G(ref){}
00074 std::ostream&print(std::ostream&os) const;
00075 };
00076
00078 std::ostream& operator<<( std::ostream&, const adjmatrix& );
00079
00080
00081
00087 class adjlist{
00088 const undirected_graph& G;
00089 public:
00090 adjlist(const undirected_graph&ref): G(ref){}
00091
00092 std::ostream&print(std::ostream&os) const;
00093 };
00094
00096 std::ostream& operator<<( std::ostream&, const adjlist& );
00097
00098
00099
00107 class linklist{
00108 const undirected_graph& G;
00109 public:
00110 linklist(const undirected_graph&ref): G(ref){}
00111
00112 std::ostream&print(std::ostream&os) const;
00113 };
00114
00116 std::ostream& operator<<( std::ostream&, const linklist& );
00117
00118
00124 class degreeseq{
00125 const undirected_graph& G;
00126 public:
00127 degreeseq(const undirected_graph&ref): G(ref){}
00128
00129 std::ostream&print(std::ostream&os) const;
00130 };
00131
00133 std::ostream& operator<<( std::ostream&, const degreeseq& );
00134
00135
00156 class pajek{
00157 const undirected_graph& G;
00158 public:
00159 pajek(const undirected_graph&ref): G(ref){}
00160
00161 std::ostream&print(std::ostream&os) const;
00162 };
00163
00165 std::ostream& operator<<( std::ostream&, const pajek& );
00166
00173 class graphviz{
00174 const undirected_graph& G;
00175 public:
00176 graphviz(const undirected_graph&ref): G(ref){}
00177
00178 std::ostream&print(std::ostream&) const;
00179 };
00180
00182 std::ostream& operator<<( std::ostream&, const graphviz& );
00183
00184
00186 std::ostream& operator<<( std::ostream&, const undirected_graph& G );
00187
00191
00192
00193
00198 }
00199
00200 #endif