Program Listing for File directed_graph_spec.hpp
↰ Return to documentation for file (rcppsw/ds/graph/directed_graph_spec.hpp
)
#pragma once
/*******************************************************************************
* Includes
******************************************************************************/
#include <boost/graph/adjacency_list.hpp>
#include "rcppsw/rcppsw.hpp"
#include "rcppsw/ds/graph/base_vertex_property.hpp"
/*******************************************************************************
* Namespaces/Decls
******************************************************************************/
namespace rcppsw::ds::graph {
/*******************************************************************************
* Class Definitions
******************************************************************************/
template<typename TVertexPropertyType, typename TEdgePropertyType>
struct directed_graph_spec {
static_assert(std::is_base_of<base_vertex_property,
TVertexPropertyType>::value,
"TVertexPropertyType is not derived from base_vertex_property");
/* Container type for the edge-list for each vertex */
using vertex_edge_list_type = boost::vecS;
/* Container type for the vertex-list of the graph*/
using vertex_list_type = boost::listS;
/* The directedness of the graph */
using directedness_type = boost::directedS;
/* Vertex properties type */
using vertex_property_type = TVertexPropertyType;
/* Edge properties type */
using edge_property_type = TEdgePropertyType;
/* Graph-level properties type */
using graph_property_type = boost::no_property;
/* Container type the edge-list for the graph */
using graph_edge_list_type = boost::listS;
using bgl_impl_type = boost::adjacency_list<
vertex_edge_list_type,
vertex_list_type,
directedness_type,
vertex_property_type,
edge_property_type,
graph_property_type,
graph_edge_list_type
>;
};
} /* namespace rcppsw::ds::graph */