1#ifndef RAIIGRAPH_GRAPH_HPP  
    2#define RAIIGRAPH_GRAPH_HPP 
   26    void setup(igraph_int_t num_vertices, igraph_bool_t directed) {
 
   27        check_code(igraph_empty(&my_graph, num_vertices, directed));
 
   37    Graph(igraph_int_t num_vertices = 0, igraph_bool_t directed = 
false) {
 
   38        setup(num_vertices, directed);
 
 
   49    Graph(
const IntVector& edges, igraph_int_t num_vertices, igraph_bool_t directed) : 
Graph(edges.
get(), num_vertices, directed) {} 
 
   58    Graph(
const igraph_vector_int_t* edges, igraph_int_t num_vertices, igraph_bool_t directed) { 
 
   59        check_code(igraph_create(&my_graph, edges, num_vertices, directed));
 
 
   65    Graph(igraph_t&& graph) : my_graph(std::move(graph)) {}
 
   72        check_code(igraph_copy(&my_graph, &(other.my_graph)));
 
 
   80            check_code(igraph_copy(&my_graph, &(other.my_graph)));
 
 
   91        std::swap(my_graph, other.my_graph);
 
 
  100            std::swap(my_graph, other.my_graph);
 
 
  109        igraph_destroy(&my_graph);
 
 
  117        return igraph_vcount(&my_graph);
 
 
  124        return igraph_ecount(&my_graph);
 
 
  135        check_code(igraph_get_edgelist(&my_graph, out.
get(), by_col));
 
 
  144        return igraph_is_directed(&my_graph);
 
 
  153    igraph_bool_t 
is_connected(igraph_connectedness_t mode = IGRAPH_WEAK)
 const {
 
  155        check_code(igraph_is_connected(&my_graph, &res, mode));
 
 
  167        check_code(igraph_is_simple(&my_graph, &res, directed));
 
 
  185        check_code(igraph_has_multiple(&my_graph, &res));
 
 
  193    igraph_bool_t 
has_mutual(igraph_bool_t loops = 
false)
 const {
 
  195        check_code(igraph_has_mutual(&my_graph, &res, loops));
 
 
  205    bool is_tree(igraph_neimode_t mode = IGRAPH_ALL)
 const {
 
  207        check_code(igraph_is_tree(&my_graph, &res, NULL, mode));
 
 
  215    bool is_forest(igraph_neimode_t mode = IGRAPH_ALL)
 const {
 
  217        check_code(igraph_is_forest(&my_graph, &res, NULL, mode));
 
 
  235        check_code(igraph_is_acyclic(&my_graph, &res));
 
 
  244    operator igraph_t*() {
 
 
  252    operator const igraph_t*() 
const {
 
 
  268    const igraph_t* 
get()
 const {
 
 
 
Wrapper around igraph_vector_*_t objects with RAII behavior.
 
Wrapper around igraph_t objects with RAII behavior.
Definition Graph.hpp:24
 
Graph & operator=(const Graph &other)
Definition Graph.hpp:78
 
IntVector get_edgelist(igraph_bool_t by_col=false) const
Definition Graph.hpp:133
 
Graph(const Graph &other)
Definition Graph.hpp:71
 
igraph_t * get()
Definition Graph.hpp:260
 
Graph(igraph_t &&graph)
Definition Graph.hpp:65
 
Graph(const igraph_vector_int_t *edges, igraph_int_t num_vertices, igraph_bool_t directed)
Definition Graph.hpp:58
 
Graph & operator=(Graph &&other)
Definition Graph.hpp:98
 
Graph(const IntVector &edges, igraph_int_t num_vertices, igraph_bool_t directed)
Definition Graph.hpp:49
 
igraph_bool_t has_loop() const
Definition Graph.hpp:174
 
igraph_bool_t is_directed() const
Definition Graph.hpp:143
 
const igraph_t * get() const
Definition Graph.hpp:268
 
bool is_dag() const
Definition Graph.hpp:224
 
igraph_bool_t is_simple(igraph_bool_t directed) const
Definition Graph.hpp:165
 
~Graph()
Definition Graph.hpp:108
 
igraph_int_t ecount() const
Definition Graph.hpp:123
 
igraph_bool_t has_mutual(igraph_bool_t loops=false) const
Definition Graph.hpp:193
 
igraph_int_t vcount() const
Definition Graph.hpp:116
 
bool is_acyclic() const
Definition Graph.hpp:233
 
bool is_forest(igraph_neimode_t mode=IGRAPH_ALL) const
Definition Graph.hpp:215
 
igraph_bool_t has_multiple() const
Definition Graph.hpp:183
 
bool is_tree(igraph_neimode_t mode=IGRAPH_ALL) const
Definition Graph.hpp:205
 
Graph(Graph &&other)
Definition Graph.hpp:89
 
Graph(igraph_int_t num_vertices=0, igraph_bool_t directed=false)
Definition Graph.hpp:37
 
igraph_bool_t is_connected(igraph_connectedness_t mode=IGRAPH_WEAK) const
Definition Graph.hpp:153
 
Wrapper around igraph_vector_*_t objects with RAII behavior.
Definition Vector.hpp:29
 
igraph_type * get()
Definition Vector.hpp:499
 
Error handling for raiigraph.
 
Utilities for manipulating igraph data structures in C++.
Definition error.hpp:11
 
void check_code(igraph_error_t code)
Definition error.hpp:39