BALL 1.5.0
Loading...
Searching...
No Matches
molecularGraph.h
Go to the documentation of this file.
1#ifndef BALL_DATATYPE_MOLECULARGRAPH_H
2#define BALL_DATATYPE_MOLECULARGRAPH_H
3
4#include <boost/graph/properties.hpp>
5#include <boost/graph/graph_traits.hpp>
6#include <boost/graph/adjacency_list.hpp>
7#include <boost/graph/copy.hpp>
8
9#include <list>
10
11#ifndef BALL_COMMON_GLOBAL_H
12# include <BALL/COMMON/global.h>
13#endif
14
15#ifndef BALL_DATATYPE_GRAPH_GRAPHALGORITHMS_H
17#endif
18
19namespace BALL
20{
21 //Forward declarations
22 class Atom;
23 class Bond;
24 class AtomContainer;
25
26 //Define a properly adjusted boost graph type
27 typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS,
28 boost::property<boost::vertex_atom_ptr_t, const Atom*>,
29 boost::property<boost::edge_bond_ptr_t, const Bond*>
31
47 : public MolecularGraphBase
48 {
49 public:
52
53 typedef boost::graph_traits<MolecularGraph>::vertex_descriptor Vertex;
54 typedef boost::graph_traits<MolecularGraph>::edge_descriptor Edge;
55
56 typedef boost::graph_traits<MolecularGraph>::vertex_iterator VertexIterator;
57 typedef boost::graph_traits<MolecularGraph>::edge_iterator EdgeIterator;
58 typedef boost::property_map<MolecularGraphBase, boost::vertex_atom_ptr_t>::type AtomPtrMap;
59 typedef boost::property_map<MolecularGraphBase, boost::edge_bond_ptr_t>::type BondPtrMap;
60 typedef boost::property_map<MolecularGraphBase, boost::vertex_atom_ptr_t>::const_type ConstAtomPtrMap;
61 typedef boost::property_map<MolecularGraphBase, boost::edge_bond_ptr_t>::const_type ConstBondPtrMap;
62
64
66
67 const Edge& getEdge (const Bond* bond) const;
68 const Vertex& getVertex(const Atom* atom) const;
69
71
72 private:
73 std::map<const Bond*, Edge> bond_to_edge_;
74 std::map<const Atom*, Vertex> atom_to_vertex_;
75 };
76
79}
80
81#endif //BALL_DATATYPE_MOLECULARGRAPH_H
MolecularGraph::EditableGraph EditableMolecularGraph
GRAPH::GraphTraits< MolecularGraph > MolecularGraphTraits
boost::adjacency_list< boost::vecS, boost::vecS, boost::undirectedS, boost::property< boost::vertex_atom_ptr_t, const Atom * >, boost::property< boost::edge_bond_ptr_t, const Bond * > > MolecularGraphBase
char Atom[5]
Definition PDBdefs.h:257
boost::adjacency_list< boost::listS, boost::listS, boost::undirectedS, boost::property< boost::vertex_orig_ptr_t, VertexType, boost::property< boost::vertex_index_t, int > >, boost::property< boost::edge_orig_ptr_t, EdgeType > > EditableGraph
GRAPH::GraphTraits< MolecularGraph >::EditableGraph EditableGraph
boost::graph_traits< MolecularGraph >::vertex_iterator VertexIterator
const Edge & getEdge(const Bond *bond) const
boost::property_map< MolecularGraphBase, boost::vertex_atom_ptr_t >::const_type ConstAtomPtrMap
boost::property_map< MolecularGraphBase, boost::edge_bond_ptr_t >::type BondPtrMap
MolecularGraph(AtomContainer &ac, ExportOptions opt=INCLUDE_ALL)
void editableCopy(EditableGraph &eg)
boost::graph_traits< MolecularGraph >::edge_iterator EdgeIterator
boost::property_map< MolecularGraphBase, boost::edge_bond_ptr_t >::const_type ConstBondPtrMap
boost::property_map< MolecularGraphBase, boost::vertex_atom_ptr_t >::type AtomPtrMap
boost::graph_traits< MolecularGraph >::vertex_descriptor Vertex
const Vertex & getVertex(const Atom *atom) const
boost::graph_traits< MolecularGraph >::edge_descriptor Edge
ExportOptions
@TODO do something useful with this