BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 
19 namespace BALL
20 {
21  //Forward declarations
22  class Atom;
23  class Bond;
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:
51  enum ExportOptions { INCLUDE_ALL = -1 };
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 
70  void editableCopy(EditableGraph& eg);
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