8 #ifndef IMPATOM_BOND_GRAPH_H
9 #define IMPATOM_BOND_GRAPH_H
13 #include "internal/bond_graph_functors.h"
15 #include <IMP/internal/NestedIterator.h>
16 #include <boost/graph/graph_traits.hpp>
17 #include <boost/graph/properties.hpp>
18 #include <boost/iterator/transform_iterator.hpp>
22 IMPATOM_BEGIN_NAMESPACE
78 typedef internal::AttributeVertexPropertyMap<FloatKey, Float>
79 VertexFloatPropertyMap;
80 typedef internal::AttributeVertexPropertyMap<IntKey, Int>
82 typedef internal::AttributeVertexPropertyMap<ParticleIndexKey, Bonded>
83 VertexVertexPropertyMap;
87 typedef internal::AttributeEdgePropertyMap<FloatKey, Float>
89 typedef internal::AttributeEdgePropertyMap<IntKey, Int> EdgeIntPropertyMap;
91 VertexIntPropertyMap get_vertex_index_map()
const;
116 VertexIntPropertyMap get_vertex_index_map()
const;
131 struct traversal_category:
public virtual boost::adjacency_graph_tag,
132 public virtual boost::vertex_list_graph_tag,
133 public virtual boost::edge_list_graph_tag,
135 public virtual boost::bidirectional_graph_tag
137 typedef Bonded vertex_descriptor;
139 typedef int vertices_size_type;
140 typedef int edges_size_type;
141 typedef int degree_size_type;
143 typedef boost::transform_iterator<internal::MakeOutEdgeDescriptor,
144 vertex_descriptor::BondIterator> out_edge_iterator;
145 typedef vertex_descriptor::BondedIterator adjacency_iterator;
146 typedef boost::transform_iterator<internal::MakeBonded,
147 IMP::Particles::iterator>
149 typedef boost::disallow_parallel_edge_tag edge_parallel_category;
150 typedef boost::undirected_tag directed_category;
152 typedef boost::transform_iterator<internal::MakeInEdgeDescriptor,
153 vertex_descriptor::BondIterator> in_edge_iterator;
159 typedef IMP::internal::NestedIterator<internal::NestedTraits> edge_iterator;
162 typedef Int vertex_property_type;
170 IMPATOM_END_NAMESPACE
172 #include "internal/bond_graph_boost_functions.h"