/usr/include/boost/graph
NameSizeModeActions
detail/-0755rm
distributed/-0755rm
parallel/-0755rm
planar_detail/-0755rm
property_maps/-0755rm
accounting.hpp8760644editdlrm
adjacency_iterator.hpp28990644editdlrm
adjacency_list.hpp136920644editdlrm
adjacency_list_io.hpp118490644editdlrm
adjacency_matrix.hpp457430644editdlrm
adj_list_serialize.hpp45230644editdlrm
astar_search.hpp267360644editdlrm
bandwidth.hpp29920644editdlrm
bc_clustering.hpp59370644editdlrm
bellman_ford_shortest_paths.hpp82290644editdlrm
betweenness_centrality.hpp262900644editdlrm
biconnected_components.hpp167010644editdlrm
bipartite.hpp134920644editdlrm
boyer_myrvold_planar_test.hpp98490644editdlrm
boykov_kolmogorov_max_flow.hpp473420644editdlrm
breadth_first_search.hpp147510644editdlrm
bron_kerbosch_all_cliques.hpp117360644editdlrm
buffer_concepts.hpp24290644editdlrm
chrobak_payne_drawing.hpp86410644editdlrm
circle_layout.hpp19240644editdlrm
closeness_centrality.hpp60570644editdlrm
clustering_coefficient.hpp57260644editdlrm
compressed_sparse_row_graph.hpp698870644editdlrm
connected_components.hpp41340644editdlrm
copy.hpp212250644editdlrm
core_numbers.hpp136630644editdlrm
create_condensation_graph.hpp31590644editdlrm
cuthill_mckee_ordering.hpp59920644editdlrm
cycle_canceling.hpp66450644editdlrm
dag_shortest_paths.hpp60640644editdlrm
degree_centrality.hpp42360644editdlrm
depth_first_search.hpp154300644editdlrm
dijkstra_shortest_paths.hpp236870644editdlrm
dijkstra_shortest_paths_no_color_map.hpp96200644editdlrm
dimacs.hpp104480644editdlrm
directed_graph.hpp242140644editdlrm
dll_import_export.hpp8920644editdlrm
dominator_tree.hpp175530644editdlrm
eccentricity.hpp46110644editdlrm
edge_coloring.hpp68090644editdlrm
edge_connectivity.hpp67960644editdlrm
edge_list.hpp99480644editdlrm
edmonds_karp_max_flow.hpp101770644editdlrm
edmunds_karp_max_flow.hpp9820644editdlrm
erdos_renyi_generator.hpp72570644editdlrm
exception.hpp14660644editdlrm
exterior_property.hpp42890644editdlrm
filtered_graph.hpp200980644editdlrm
find_flow_cost.hpp18590644editdlrm
floyd_warshall_shortest.hpp85100644editdlrm
fruchterman_reingold.hpp173250644editdlrm
geodesic_distance.hpp80150644editdlrm
graphml.hpp134600644editdlrm
graphviz.hpp335030644editdlrm
graph_archetypes.hpp110080644editdlrm
graph_as_tree.hpp45320644editdlrm
graph_concepts.hpp197850644editdlrm
graph_mutability_traits.hpp49950644editdlrm
graph_selectors.hpp12740644editdlrm
graph_stats.hpp43940644editdlrm
graph_traits.hpp130650644editdlrm
graph_utility.hpp161820644editdlrm
grid_graph.hpp338300644editdlrm
gursoy_atun_layout.hpp132480644editdlrm
hawick_circuits.hpp145930644editdlrm
howard_cycle_ratio.hpp231070644editdlrm
incremental_components.hpp82240644editdlrm
isomorphism.hpp263080644editdlrm
is_kuratowski_subgraph.hpp102600644editdlrm
is_straight_line_drawing.hpp72300644editdlrm
iteration_macros.hpp116590644editdlrm
iteration_macros_undef.hpp6730644editdlrm
johnson_all_pairs_shortest.hpp76460644editdlrm
kamada_kawai_spring_layout.hpp280480644editdlrm
king_ordering.hpp121010644editdlrm
kruskal_min_spanning_tree.hpp57430644editdlrm
labeled_graph.hpp309140644editdlrm
leda_graph.hpp287890644editdlrm
lookup_edge.hpp18940644editdlrm
loop_erased_random_walk.hpp44360644editdlrm
make_biconnected_planar.hpp35130644editdlrm
make_connected.hpp26450644editdlrm
make_maximal_planar.hpp75780644editdlrm
matrix_as_graph.hpp72270644editdlrm
maximum_adjacency_search.hpp151250644editdlrm
maximum_weighted_matching.hpp497220644editdlrm
max_cardinality_matching.hpp310000644editdlrm
mcgregor_common_subgraphs.hpp434700644editdlrm
mesh_graph_generator.hpp56160644editdlrm
metis.hpp109820644editdlrm
metric_tsp_approx.hpp108090644editdlrm
minimum_degree_ordering.hpp270870644editdlrm
named_function_params.hpp396390644editdlrm
named_graph.hpp206140644editdlrm
neighbor_bfs.hpp117630644editdlrm
numeric_values.hpp18140644editdlrm
one_bit_color_map.hpp32770644editdlrm
overloading.hpp15840644editdlrm
page_rank.hpp61640644editdlrm
planar_canonical_ordering.hpp72030644editdlrm
planar_face_traversal.hpp60200644editdlrm
plod_generator.hpp77080644editdlrm
point_traits.hpp7820644editdlrm
prim_minimum_spanning_tree.hpp29600644editdlrm
profile.hpp13270644editdlrm
properties.hpp124170644editdlrm
property_iter_range.hpp43450644editdlrm
push_relabel_max_flow.hpp347370644editdlrm
random.hpp96720644editdlrm
random_layout.hpp9880644editdlrm
random_spanning_tree.hpp57750644editdlrm
read_dimacs.hpp120800644editdlrm
relax.hpp44000644editdlrm
reverse_graph.hpp224020644editdlrm
rmat_graph_generator.hpp192910644editdlrm
r_c_shortest_paths.hpp306730644editdlrm
sequential_vertex_coloring.hpp45620644editdlrm
simple_point.hpp6280644editdlrm
sloan_ordering.hpp155400644editdlrm
smallest_last_ordering.hpp54580644editdlrm
small_world_generator.hpp36700644editdlrm
ssca_graph_generator.hpp65640644editdlrm
stanford_graph.hpp201260644editdlrm
stoer_wagner_min_cut.hpp124150644editdlrm
strong_components.hpp130090644editdlrm
st_connected.hpp28520644editdlrm
subgraph.hpp399960644editdlrm
successive_shortest_path_nonnegative_weights.hpp104130644editdlrm
tiernan_all_cycles.hpp125470644editdlrm
topological_sort.hpp26110644editdlrm
topology.hpp203890644editdlrm
transitive_closure.hpp142600644editdlrm
transitive_reduction.hpp53260644editdlrm
transpose_graph.hpp11980644editdlrm
tree_traits.hpp13380644editdlrm
two_bit_color_map.hpp35100644editdlrm
two_graphs_common_spanning_trees.hpp349960644editdlrm
undirected_dfs.hpp106720644editdlrm
undirected_graph.hpp252760644editdlrm
use_mpi.hpp4370644editdlrm
vector_as_graph.hpp104740644editdlrm
vertex_and_edge_range.hpp55280644editdlrm
vf2_sub_graph_iso.hpp485850644editdlrm
visitors.hpp113180644editdlrm
wavefront.hpp39320644editdlrm
write_dimacs.hpp28890644editdlrm
Edit: /usr/include/boost/graph/adjacency_list_io.hpp (11849B)
//======================================================================= // Copyright 2001 Universite Joseph Fourier, Grenoble. // Author: Francois Faure // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) //======================================================================= #ifndef BOOST_GRAPH_ADJACENCY_LIST_IO_HPP #define BOOST_GRAPH_ADJACENCY_LIST_IO_HPP #include #include #include #include #include // Method read to parse an adjacency list from an input stream. Examples: // cin >> read( G ); // cin >> read( G, NodePropertySubset(), EdgepropertySubset() ); // // Method write to print an adjacency list to an output stream. Examples: // cout << write( G ); // cout << write( G, NodePropertySubset(), EdgepropertySubset() ); namespace boost { /* outline - basic property input - get property subset - graph parser - property printer - graph printer - user methods */ //=========================================================================== // basic property input template < class Tag, class Value, class Next > std::istream& operator>>(std::istream& in, property< Tag, Value, Next >& p) { in >> p.m_value >> p.m_base; // houpla !! return in; } template < class Tag, class Value > std::istream& operator>>( std::istream& in, property< Tag, Value, no_property >& p) { in >> p.m_value; return in; } inline std::istream& operator>>(std::istream& in, no_property&) { return in; } // basic property input //=========================================================================== // get property subsets // get a single property tagged Stag template < class Tag, class Value, class Next, class V, class Stag > void get(property< Tag, Value, Next >& p, const V& v, Stag s) { get(p.m_base, v, s); } template < class Value, class Next, class V, class Stag > void get(property< Stag, Value, Next >& p, const V& v, Stag) { p.m_value = v; } // get a subset of properties tagged Stag template < class Tag, class Value, class Next, class Stag, class Svalue, class Snext > void getSubset( property< Tag, Value, Next >& p, const property< Stag, Svalue, Snext >& s) { get(p, s.m_value, Stag()); getSubset(p, s.m_base); } template < class Tag, class Value, class Next, class Stag, class Svalue > void getSubset(property< Tag, Value, Next >& p, const property< Stag, Svalue, no_property >& s) { get(p, s.m_value, Stag()); } inline void getSubset(no_property&, const no_property&) {} #if !defined(BOOST_GRAPH_NO_BUNDLED_PROPERTIES) template < typename T, typename U > void getSubset(T& p, const U& s) { p = s; } template < typename T > void getSubset(T&, const no_property&) {} #endif // get property subset //=========================================================================== // graph parser typedef enum { PARSE_NUM_NODES, PARSE_VERTEX, PARSE_EDGE } GraphParserState; template < class Graph_t, class VertexProperty, class EdgeProperty, class VertexPropertySubset, class EdgePropertySubset > struct GraphParser { typedef Graph_t Graph; GraphParser(Graph* g) : graph(g) {} GraphParser& operator()(std::istream& in) { typedef typename graph_traits< Graph >::vertex_descriptor Vertex; std::vector< Vertex > nodes; GraphParserState state = PARSE_VERTEX; unsigned int numLine = 1; char c; while (in.get(c)) { if (c == '#') skip(in); else if (c == 'n') state = PARSE_NUM_NODES; else if (c == 'v') state = PARSE_VERTEX; else if (c == 'e') state = PARSE_EDGE; else if (c == '\n') numLine++; else if (!std::isspace(c)) { in.putback(c); if (state == PARSE_VERTEX) { VertexPropertySubset readProp; if (in >> readProp) { VertexProperty vp; getSubset(vp, readProp); nodes.push_back(add_vertex(vp, *graph)); } else std::cerr << "read vertex, parse error at line" << numLine << std::endl; } else if (state == PARSE_EDGE) { int source, target; EdgePropertySubset readProp; in >> source >> target; if (in >> readProp) { EdgeProperty ep; getSubset(ep, readProp); add_edge(nodes[source], nodes[target], ep, *graph); } else std::cerr << "read edge, parse error at line" << numLine << std::endl; } else { // state == PARSE_NUM_NODES int n; if (in >> n) { for (int i = 0; i < n; ++i) nodes.push_back(add_vertex(*graph)); } else std::cerr << "read num_nodes, parse error at line " << numLine << std::endl; } } } return (*this); } protected: Graph* graph; void skip(std::istream& in) { char c = 0; while (c != '\n' && !in.eof()) in.get(c); in.putback(c); } }; // parser //======================================================================= // property printer #if defined(BOOST_GRAPH_NO_BUNDLED_PROPERTIES) template < class Graph, class Property > struct PropertyPrinter { typedef typename Property::value_type Value; typedef typename Property::tag_type Tag; typedef typename Property::next_type Next; PropertyPrinter(const Graph& g) : graph(&g) {} template < class Val > PropertyPrinter& operator()(std::ostream& out, const Val& v) { typename property_map< Graph, Tag >::const_type ps = get(Tag(), *graph); out << ps[v] << " "; PropertyPrinter< Graph, Next > print(*graph); print(out, v); return (*this); } private: const Graph* graph; }; #else template < class Graph, typename Property > struct PropertyPrinter { PropertyPrinter(const Graph& g) : graph(&g) {} template < class Val > PropertyPrinter& operator()(std::ostream& out, const Val& v) { out << (*graph)[v] << " "; return (*this); } private: const Graph* graph; }; template < class Graph, typename Tag, typename Value, typename Next > struct PropertyPrinter< Graph, property< Tag, Value, Next > > { PropertyPrinter(const Graph& g) : graph(&g) {} template < class Val > PropertyPrinter& operator()(std::ostream& out, const Val& v) { typename property_map< Graph, Tag >::const_type ps = get(Tag(), *graph); out << ps[v] << " "; PropertyPrinter< Graph, Next > print(*graph); print(out, v); return (*this); } private: const Graph* graph; }; #endif template < class Graph > struct PropertyPrinter< Graph, no_property > { PropertyPrinter(const Graph&) {} template < class Val > PropertyPrinter& operator()(std::ostream&, const Val&) { return *this; } }; // property printer //========================================================================= // graph printer template < class Graph_t, class EdgeProperty > struct EdgePrinter { typedef Graph_t Graph; typedef typename graph_traits< Graph >::vertex_descriptor Vertex; EdgePrinter(const Graph& g) : graph(g) {} const EdgePrinter& operator()(std::ostream& out) const { // assign indices to vertices std::map< Vertex, int > indices; int num = 0; BGL_FORALL_VERTICES_T(v, graph, Graph) { indices[v] = num++; } // write edges PropertyPrinter< Graph, EdgeProperty > print_Edge(graph); out << "e" << std::endl; BGL_FORALL_EDGES_T(e, graph, Graph) { out << indices[source(e, graph)] << " " << indices[target(e, graph)] << " "; print_Edge(out, e); out << std::endl; } out << std::endl; return (*this); } protected: const Graph& graph; }; template < class Graph, class V, class E > struct GraphPrinter : public EdgePrinter< Graph, E > { GraphPrinter(const Graph& g) : EdgePrinter< Graph, E >(g) {} const GraphPrinter& operator()(std::ostream& out) const { PropertyPrinter< Graph, V > printNode(this->graph); out << "v" << std::endl; BGL_FORALL_VERTICES_T(v, this->graph, Graph) { printNode(out, v); out << std::endl; } EdgePrinter< Graph, E >::operator()(out); return (*this); } }; template < class Graph, class E > struct GraphPrinter< Graph, no_property, E > : public EdgePrinter< Graph, E > { GraphPrinter(const Graph& g) : EdgePrinter< Graph, E >(g) {} const GraphPrinter& operator()(std::ostream& out) const { out << "n " << num_vertices(this->graph) << std::endl; EdgePrinter< Graph, E >::operator()(out); return (*this); } }; // graph printer //========================================================================= // user methods /// input stream for reading a graph template < class Graph, class VP, class EP, class VPS, class EPS > std::istream& operator>>( std::istream& in, GraphParser< Graph, VP, EP, VPS, EPS > gp) { gp(in); return in; } /// graph parser for given subsets of internal vertex and edge properties template < class EL, class VL, class D, class VP, class EP, class GP, class VPS, class EPS > GraphParser< adjacency_list< EL, VL, D, VP, EP, GP >, VP, EP, VPS, EPS > read( adjacency_list< EL, VL, D, VP, EP, GP >& g, VPS vps, EPS eps) { return GraphParser< adjacency_list< EL, VL, D, VP, EP, GP >, VP, EP, VPS, EPS >(&g); } /// graph parser for all internal vertex and edge properties template < class EL, class VL, class D, class VP, class EP, class GP > GraphParser< adjacency_list< EL, VL, D, VP, EP, GP >, VP, EP, VP, EP > read( adjacency_list< EL, VL, D, VP, EP, GP >& g) { return GraphParser< adjacency_list< EL, VL, D, VP, EP, GP >, VP, EP, VP, EP >(&g); } /// output stream for writing a graph template < class Graph, class VP, class EP > std::ostream& operator<<( std::ostream& out, const GraphPrinter< Graph, VP, EP >& gp) { gp(out); return out; } /// write the graph with given property subsets template < class EL, class VL, class D, class VP, class EP, class GP, class VPS, class EPS > GraphPrinter< adjacency_list< EL, VL, D, VP, EP, GP >, VPS, EPS > write( const adjacency_list< EL, VL, D, VP, EP, GP >& g, VPS, EPS) { return GraphPrinter< adjacency_list< EL, VL, D, VP, EP, GP >, VPS, EPS >(g); } /// write the graph with all internal vertex and edge properties template < class EL, class VL, class D, class VP, class EP, class GP > GraphPrinter< adjacency_list< EL, VL, D, VP, EP, GP >, VP, EP > write( const adjacency_list< EL, VL, D, VP, EP, GP >& g) { return GraphPrinter< adjacency_list< EL, VL, D, VP, EP, GP >, VP, EP >(g); } // user methods //========================================================================= } // boost #endif