|
Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
|
Graph serialization and deserialization class. More...
#include <io_graph.H>
Public Member Functions | |
| void | set_verbose (bool v) noexcept |
| Enable or disable verbose mode. | |
| bool | is_verbose () const noexcept |
| Check if verbose mode is enabled. | |
| void | set_load_node (const Load_Node &ln) |
| Set the node loading functor. | |
| void | set_store_node (const Store_Node &sn) |
| Set the node storage functor. | |
| void | set_load_arc (const Load_Arc &la) |
| Set the arc loading functor. | |
| void | set_store_arc (const Store_Arc &sa) |
| Set the arc storage functor. | |
| void | set_node_filter (const NF &nf) |
| Set the node filter for save operations. | |
| void | set_arc_filter (const AF &af) |
| Set the arc filter for save operations. | |
| IO_Graph (GT &__g) noexcept | |
| Construct from graph reference. | |
| IO_Graph (GT *gptr) noexcept | |
| Construct from graph pointer. | |
| void | save (std::ofstream &output) |
| Save graph to binary stream. | |
| void | load (std::ifstream &input) |
| Load graph from binary stream. | |
| void | save_in_text_mode (std::ostream &output) |
| Save graph to text stream. | |
| void | load_in_text_mode (std::istream &input) |
| Load graph from text stream. | |
Private Attributes | |
| GT & | g |
| Load_Node | load_node = Load_Node() |
| Store_Node | store_node = Store_Node() |
| Load_Arc | load_arc = Load_Arc() |
| Store_Arc | store_arc = Store_Arc() |
| NF | node_filter = NF() |
| AF | arc_filter = AF() |
| bool | verbose_mode = false |
Graph serialization and deserialization class.
IO_Graph provides methods for saving and loading graphs to/from binary and text streams. The serialization format is customizable through template parameters for node/arc load and store functors.
| GT | Graph type (List_Graph, List_Digraph, etc.) |
| Load_Node | Functor for loading node data. Must provide:
|
| Store_Node | Functor for storing node data. Must provide:
|
| Load_Arc | Functor for loading arc data. Must provide:
|
| Store_Arc | Functor for storing arc data. Must provide:
|
| NF | Node filter functor (only nodes passing filter are saved) |
| AF | Arc filter functor (only arcs passing filter are saved) |
Definition at line 318 of file io_graph.H.
|
inlineexplicitnoexcept |
Construct from graph reference.
| __g | Reference to the graph to save/load |
Definition at line 381 of file io_graph.H.
|
inlineexplicitnoexcept |
Construct from graph pointer.
| gptr | Pointer to the graph to save/load |
Definition at line 386 of file io_graph.H.
|
inlinenoexcept |
Check if verbose mode is enabled.
Definition at line 346 of file io_graph.H.
References Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::verbose_mode.
|
inline |
Load graph from binary stream.
Reads a graph from binary format. The graph is cleared and rebuilt with the loaded nodes and arcs.
| input | Binary input stream (must be opened with std::ios::binary) |
| std::runtime_error | If read operations fail or stream is corrupted |
Definition at line 469 of file io_graph.H.
References ah_runtime_error_if, Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::g, Aleph::List_Graph< _Graph_Node, _Graph_Arc >::insert_arc(), Aleph::List_Graph< _Graph_Node, _Graph_Arc >::insert_node(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load_arc, Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load_node, Aleph::maps(), num_nodes, and Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::verbose_mode.
|
inline |
Load graph from text stream.
Reads a graph from text format. The graph is cleared and rebuilt with the loaded nodes and arcs.
| input | Text input stream |
| std::runtime_error | If read operations fail or stream is corrupted |
Definition at line 623 of file io_graph.H.
References ah_runtime_error_if, Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::g, Aleph::List_Graph< _Graph_Node, _Graph_Arc >::insert_arc(), Aleph::List_Graph< _Graph_Node, _Graph_Arc >::insert_node(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load_arc, Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load_node, Aleph::maps(), num_nodes, and Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::verbose_mode.
|
inline |
Save graph to binary stream.
Writes the graph in binary format:
| output | Binary output stream (must be opened with std::ios::binary) |
| std::runtime_error | If write operations fail |
Definition at line 401 of file io_graph.H.
References Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::arc_filter, Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::g, GraphCommon< GT, Node, Arc >::get_num_arcs(), GraphCommon< GT, Node, Arc >::get_num_nodes(), GraphCommon< GT, Node, Arc >::get_src_node(), GraphCommon< GT, Node, Arc >::get_tgt_node(), Aleph::DynList< T >::insert(), Aleph::maps(), Aleph::Filter_Iterator< Container, It, Show_Item >::next_ne(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::node_filter, num_nodes, output, Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::store_arc, Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::store_node, and Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::verbose_mode.
|
inline |
Save graph to text stream.
Writes the graph in human-readable text format:
| output | Text output stream |
| std::runtime_error | If write operations fail |
Definition at line 558 of file io_graph.H.
References Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::arc_filter, Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::g, GraphCommon< GT, Node, Arc >::get_num_arcs(), GraphCommon< GT, Node, Arc >::get_num_nodes(), GraphCommon< GT, Node, Arc >::get_src_node(), GraphCommon< GT, Node, Arc >::get_tgt_node(), Aleph::DynList< T >::insert(), Aleph::maps(), Aleph::Filter_Iterator< Container, It, Show_Item >::next_ne(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::node_filter, num_nodes, output, Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::store_arc, Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::store_node, and Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::verbose_mode.
|
inline |
Set the arc filter for save operations.
| af | Arc filter functor (arcs passing filter are saved) |
Definition at line 376 of file io_graph.H.
References Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::arc_filter, and Aleph::maps().
|
inline |
Set the arc loading functor.
| la | Arc loading functor to use |
Definition at line 361 of file io_graph.H.
References Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load_arc, and Aleph::maps().
|
inline |
Set the node loading functor.
| ln | Node loading functor to use |
Definition at line 351 of file io_graph.H.
References Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load_node, and Aleph::maps().
|
inline |
Set the node filter for save operations.
| nf | Node filter functor (nodes passing filter are saved) |
Definition at line 371 of file io_graph.H.
References Aleph::maps(), and Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::node_filter.
|
inline |
Set the arc storage functor.
| sa | Arc storage functor to use |
Definition at line 366 of file io_graph.H.
References Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::store_arc.
|
inline |
Set the node storage functor.
| sn | Node storage functor to use |
Definition at line 356 of file io_graph.H.
References Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::store_node.
|
inlinenoexcept |
Enable or disable verbose mode.
When enabled, progress information is printed to std::cout during save and load operations.
| v | True to enable verbose output, false to disable |
Definition at line 341 of file io_graph.H.
References Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::verbose_mode.
|
private |
Definition at line 328 of file io_graph.H.
Referenced by Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::save(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::save_in_text_mode(), and Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::set_arc_filter().
|
private |
Definition at line 320 of file io_graph.H.
Referenced by Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load_in_text_mode(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::save(), and Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::save_in_text_mode().
|
private |
Definition at line 324 of file io_graph.H.
Referenced by Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load_in_text_mode(), and Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::set_load_arc().
|
private |
Definition at line 322 of file io_graph.H.
Referenced by Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load_in_text_mode(), and Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::set_load_node().
|
private |
Definition at line 327 of file io_graph.H.
Referenced by Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::save(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::save_in_text_mode(), and Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::set_node_filter().
|
private |
Definition at line 325 of file io_graph.H.
Referenced by Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::save(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::save_in_text_mode(), and Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::set_store_arc().
|
private |
Definition at line 323 of file io_graph.H.
Referenced by Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::save(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::save_in_text_mode(), and Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::set_store_node().
|
private |
Definition at line 330 of file io_graph.H.
Referenced by Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::is_verbose(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::load_in_text_mode(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::save(), Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::save_in_text_mode(), and Aleph::IO_Graph< GT, Load_Node, Store_Node, Load_Arc, Store_Arc, NF, AF >::set_verbose().