69 #ifndef vtkBoostGraphAdapter_h
70 #define vtkBoostGraphAdapter_h
88 #include <boost/version.hpp>
100 struct read_write_property_map_tag;
102 #define vtkPropertyMapMacro(T, V) \
104 struct property_traits<T*> \
106 typedef V value_type; \
107 typedef V reference; \
108 typedef vtkIdType key_type; \
109 typedef read_write_property_map_tag category; \
112 inline property_traits<T*>::reference get(T* const& arr, property_traits<T*>::key_type key) \
114 return arr->GetValue(key); \
118 T* arr, property_traits<T*>::key_type key, const property_traits<T*>::value_type& value) \
120 arr->InsertValue(key, value); \
168 #if defined(_MSC_VER)
179 #include <boost/config.hpp>
180 #include <boost/version.hpp>
182 #if BOOST_VERSION > 107300 && BOOST_VERSION < 107600
183 #define BOOST_ALLOW_DEPRECATED_HEADERS
184 #define BOOST_BIND_GLOBAL_PLACEHOLDERS
187 #include <boost/graph/adjacency_iterator.hpp>
188 #include <boost/graph/graph_traits.hpp>
189 #include <boost/graph/properties.hpp>
190 #include <boost/iterator/iterator_facade.hpp>
200 :
public iterator_facade<vtk_vertex_iterator, vtkIdType, bidirectional_traversal_tag,
201 const vtkIdType&, vtkIdType>
210 const vtkIdType& dereference()
const {
return index; }
214 void increment() { index++; }
215 void decrement() { index--; }
223 :
public iterator_facade<vtk_edge_iterator, vtkEdgeType, forward_traversal_tag,
224 const vtkEdgeType&, vtkIdType>
252 while (vertex < lastVertex && this->graph->
GetOutDegree(vertex) == 0)
257 if (vertex < lastVertex)
298 return vertex == other.vertex && iter == other.iter;
334 while (vertex < lastVertex && this->graph->
GetOutDegree(vertex) == 0)
339 if (vertex < lastVertex)
352 void RecalculateEdge()
372 :
public iterator_facade<vtk_out_edge_pointer_iterator, vtkEdgeType, bidirectional_traversal_tag,
373 const vtkEdgeType&, ptrdiff_t>
383 g->GetOutEdges(vertex, iter, nedges);
413 void RecalculateEdge()
429 :
public iterator_facade<vtk_in_edge_pointer_iterator, vtkEdgeType, bidirectional_traversal_tag,
430 const vtkEdgeType&, ptrdiff_t>
440 g->GetInEdges(vertex, iter, nedges);
470 void RecalculateEdge()
490 VTK_ABI_NAMESPACE_BEGIN
493 :
public virtual bidirectional_graph_tag
494 ,
public virtual edge_list_graph_tag
495 ,
public virtual vertex_list_graph_tag
496 ,
public virtual adjacency_graph_tag
500 VTK_ABI_NAMESPACE_END
525 #if BOOST_VERSION >= 104500
527 struct graph_property_type<
vtkGraph*>
529 typedef no_property
type;
545 #if BOOST_VERSION >= 104500
549 typedef no_property
type;
603 #if BOOST_VERSION >= 104500
606 struct graph_property_type<
vtkDirectedGraph*> : graph_property_type<vtkGraph*>
612 struct graph_property_type<
vtkDirectedGraph*
const> : graph_property_type<vtkGraph*>
641 #if BOOST_VERSION >= 104500
650 struct graph_bundle_type<
vtkDirectedGraph*
const> : graph_bundle_type<vtkGraph*>
719 #if BOOST_VERSION >= 104500
728 struct graph_property_type<
vtkUndirectedGraph*
const> : graph_property_type<vtkGraph*>
757 #if BOOST_VERSION >= 104500
815 #if BOOST_VERSION >= 104500
854 #if BOOST_VERSION >= 104500
912 #if BOOST_VERSION >= 104500
922 : graph_property_type<vtkUndirectedGraph*>
953 #if BOOST_VERSION >= 104500
1021 inline std::pair<boost::graph_traits<vtkGraph*>::vertex_iterator,
1036 inline std::pair<boost::graph_traits<vtkGraph*>::edge_iterator,
1044 inline std::pair<boost::graph_traits<vtkGraph*>::out_edge_iterator,
1049 std::pair<Iter, Iter> p = std::make_pair(Iter(g, u), Iter(g, u,
true));
1053 inline std::pair<boost::graph_traits<vtkGraph*>::in_edge_iterator,
1058 std::pair<Iter, Iter> p = std::make_pair(Iter(g, u), Iter(g, u,
true));
1062 inline std::pair<boost::graph_traits<vtkGraph*>::adjacency_iterator,
1068 std::pair<OutEdgeIter, OutEdgeIter> out =
out_edges(u, g);
1069 return std::make_pair(Iter(out.first, &g), Iter(out.second, &g));
1106 inline std::pair<boost::graph_traits<vtkMutableDirectedGraph*>::edge_descriptor,
bool>
add_edge(
1111 return std::make_pair(e,
true);
1120 inline std::pair<boost::graph_traits<vtkMutableUndirectedGraph*>::edge_descriptor,
bool>
add_edge(
1126 return std::make_pair(e,
true);
1131 VTK_ABI_NAMESPACE_BEGIN
1140 VTK_ABI_NAMESPACE_END
1161 VTK_ABI_NAMESPACE_BEGIN
1162 template <
typename PMap>
1178 VTK_ABI_NAMESPACE_END
1180 template <
typename PMap>
1187 template <
typename PMap>
1198 VTK_ABI_NAMESPACE_BEGIN
1199 template <
typename PMap>
1215 VTK_ABI_NAMESPACE_END
1217 template <
typename PMap>
1224 template <
typename PMap>
1235 VTK_ABI_NAMESPACE_BEGIN
1239 VTK_ABI_NAMESPACE_END
1259 VTK_ABI_NAMESPACE_BEGIN
1260 template <
typename PMap>
1276 VTK_ABI_NAMESPACE_END
1278 template <
typename PMap>
1285 template <
typename PMap>
1365 #if BOOST_VERSION > 104000
1366 #include <boost/property_map/vector_property_map.hpp>
1368 #include <boost/vector_property_map.hpp>
property_traits< PMap >::reference reference
property_traits< PMap >::category category
property_traits< PMap >::value_type value_type
vtkGraphEdgePropertyMapHelper(PMap m)
reference operator[](const key_type &key) const
vtkGraphPropertyMapMultiplier(PMap m, float multi=1)
property_traits< PMap >::value_type value_type
property_traits< PMap >::reference reference
property_traits< PMap >::key_type key_type
property_traits< PMap >::category category
property_traits< PMap >::reference reference
property_traits< PMap >::value_type value_type
vtkGraphVertexPropertyMapHelper(PMap m)
reference operator[](const key_type &key) const
property_traits< PMap >::category category
friend class iterator_core_access
vtk_edge_iterator(vtkGraph *g=0, vtkIdType v=0)
friend class iterator_core_access
vtk_in_edge_pointer_iterator(vtkGraph *g=0, vtkIdType v=0, bool end=false)
vtk_out_edge_pointer_iterator(vtkGraph *g=0, vtkIdType v=0, bool end=false)
friend class iterator_core_access
friend class iterator_core_access
vtk_vertex_iterator(vtkIdType i=0)
Abstract superclass for all arrays.
virtual vtkVariant GetVariantValue(vtkIdType valueIdx)
Retrieve value from the array as a variant.
virtual void InsertVariantValue(vtkIdType valueIdx, vtkVariant value)=0
Insert a value into the array from a variant.
abstract superclass for arrays of numeric data
void SetTuple1(vtkIdType tupleIdx, double value)
These methods are included as convenience for the wrappers.
double GetTuple1(vtkIdType tupleIdx)
These methods are included as convenience for the wrappers.
static vtkInformationIntegerKey * DATA_PIECE_NUMBER()
virtual vtkInformation * GetInformation()
Set/Get the information object associated with this data object.
static vtkDirectedGraph * SafeDownCast(vtkObjectBase *o)
helper for the vtkGraph class that allows the graph to be distributed across multiple memory spaces.
vtkIdType GetEdgeOwner(vtkIdType e_id) const
Returns owner of edge with ID e_id, by extracting top ceil(log2 P) bits of e_id.
vtkIdType MakeDistributedId(int owner, vtkIdType local)
Builds a distributed ID consisting of the given owner and the local ID.
vtkIdType GetVertexOwner(vtkIdType v) const
Returns owner of vertex v, by extracting top ceil(log2 P) bits of v.
dynamic, self-adjusting array of double
dynamic, self-adjusting array of float
Base class for graph data types.
virtual vtkIdType GetOutDegree(vtkIdType v)
The number of outgoing edges from vertex v.
vtkDistributedGraphHelper * GetDistributedGraphHelper()
Retrieves the distributed graph helper for this graph.
virtual vtkIdType GetNumberOfVertices()
The number of vertices in the graph.
virtual void GetOutEdges(vtkIdType v, vtkOutEdgeIterator *it)
Initializes the out edge iterator to iterate over all outgoing edges of vertex v.
virtual vtkIdType GetNumberOfEdges()
The number of edges in the graph.
virtual vtkIdType GetInDegree(vtkIdType v)
The number of incoming edges to vertex v.
virtual vtkIdType GetDegree(vtkIdType v)
The total of all incoming and outgoing vertices for vertex v.
dynamic, self-adjusting array of vtkIdType
dynamic, self-adjusting array of int
An editable directed graph.
void RemoveEdge(vtkIdType e)
Removes the edge from the graph.
vtkIdType AddVertex()
Adds a vertex to the graph and returns the index of the new vertex.
static vtkMutableDirectedGraph * SafeDownCast(vtkObjectBase *o)
vtkEdgeType AddEdge(vtkIdType u, vtkIdType v)
Adds a directed edge from u to v, where u and v are vertex indices, and returns a vtkEdgeType structu...
An editable undirected graph.
static vtkMutableUndirectedGraph * SafeDownCast(vtkObjectBase *o)
void RemoveEdge(vtkIdType e)
Removes the edge from the graph.
vtkIdType AddVertex()
Adds a vertex to the graph and returns the index of the new vertex.
vtkEdgeType AddEdge(vtkIdType u, vtkIdType v)
Adds an undirected edge from u to v, where u and v are vertex indices, and returns a vtkEdgeType stru...
A rooted tree data structure.
A atomic type representing the union of many types.
Forward declaration required for Boost serialization.
bool has_no_edges(vtkGraph *g)
vtkPropertyMapMacro(vtkIntArray, int)
void remove_edge(graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *g)
vtkGraphIndexMap get(edge_index_t, vtkGraph *)
void put(vtkGraphPropertyMapMultiplier< PMap > multi, const typename property_traits< PMap >::key_type &key, const typename property_traits< PMap >::value_type &value)
double get(vtkDataArray *const &arr, vtkIdType key)
void put(vtkDataArray *arr, vtkIdType key, const double &value)
directed_tag directed_category
vtk_in_edge_pointer_iterator in_edge_iterator
vtkIdType edges_size_type
allow_parallel_edge_tag edge_parallel_category
vtkIdType vertex_descriptor
vtk_vertex_iterator vertex_iterator
vtk_out_edge_pointer_iterator out_edge_iterator
static vertex_descriptor null_vertex()
adjacency_iterator_generator< vtkGraph *, vertex_descriptor, out_edge_iterator >::type adjacency_iterator
vtkIdType vertices_size_type
vtkGraph_traversal_category traversal_category
vtkEdgeType edge_descriptor
vtkIdType degree_size_type
vtk_edge_iterator edge_iterator
static edge_descriptor null_edge()
undirected_tag directed_category
vtkGraphIndexMap const_type
vtkGraphIndexMap const_type
read_write_property_map_tag category
read_write_property_map_tag category
readable_property_map_tag category
readable_property_map_tag category
std::pair< boost::graph_traits< vtkMutableDirectedGraph * >::edge_descriptor, bool > add_edge(boost::graph_traits< vtkMutableDirectedGraph * >::vertex_descriptor u, boost::graph_traits< vtkMutableDirectedGraph * >::vertex_descriptor v, vtkMutableDirectedGraph *g)
boost::graph_traits< vtkDirectedGraph * >::degree_size_type in_degree(boost::graph_traits< vtkDirectedGraph * >::vertex_descriptor u, vtkDirectedGraph *g)
boost::graph_traits< vtkGraph * >::degree_size_type degree(boost::graph_traits< vtkGraph * >::vertex_descriptor u, vtkGraph *g)
std::pair< boost::graph_traits< vtkGraph * >::adjacency_iterator, boost::graph_traits< vtkGraph * >::adjacency_iterator > adjacent_vertices(boost::graph_traits< vtkGraph * >::vertex_descriptor u, vtkGraph *g)
boost::graph_traits< vtkGraph * >::vertices_size_type num_vertices(vtkGraph *g)
boost::graph_traits< vtkGraph * >::degree_size_type out_degree(boost::graph_traits< vtkGraph * >::vertex_descriptor u, vtkGraph *g)
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
std::pair< boost::graph_traits< vtkGraph * >::edge_iterator, boost::graph_traits< vtkGraph * >::edge_iterator > edges(vtkGraph *g)
std::pair< boost::graph_traits< vtkGraph * >::out_edge_iterator, boost::graph_traits< vtkGraph * >::out_edge_iterator > out_edges(boost::graph_traits< vtkGraph * >::vertex_descriptor u, vtkGraph *g)
boost::graph_traits< vtkMutableDirectedGraph * >::vertex_descriptor add_vertex(vtkMutableDirectedGraph *g)
std::pair< boost::graph_traits< vtkGraph * >::in_edge_iterator, boost::graph_traits< vtkGraph * >::in_edge_iterator > in_edges(boost::graph_traits< vtkGraph * >::vertex_descriptor u, vtkGraph *g)
std::pair< boost::graph_traits< vtkGraph * >::vertex_iterator, boost::graph_traits< vtkGraph * >::vertex_iterator > vertices(vtkGraph *g)
boost::graph_traits< vtkGraph * >::edges_size_type num_edges(vtkGraph *g)
boost::graph_traits< vtkGraph * >::vertex_descriptor target(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)