BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
molecule.h
Go to the documentation of this file.
1 // -*- Mode: C++; tab-width: 2; -*-
2 // vi: set ts=2:
3 //
4 
5 #ifndef BALL_KERNEL_MOLECULE_H
6 #define BALL_KERNEL_MOLECULE_H
7 
8 #ifndef BALL_KERNEL_ATOMCONTAINER_H
10 #endif
11 
12 #ifndef BALL_KERNEL_FRAGMENT_H
13 # include <BALL/KERNEL/fragment.h>
14 #endif
15 
16 #ifndef BALL_KERNEL_FRAGMENTITERATOR_H
18 #endif
19 
20 namespace BALL
21 {
22  class System;
23 
30  : public AtomContainer
31  {
32  public:
33 
35 
36 
39 
42  enum Property
43  {
45  NUMBER_OF_PROPERTIES
46  };
47 
49 
52 
55  Molecule();
56 
59  Molecule(const Molecule& molecule, bool deep = true);
60 
63  Molecule(const String& name);
64 
67  virtual ~Molecule();
68 
70 
73 
77  void persistentWrite(PersistenceManager& pm, const char* name = 0) const;
78 
82  void persistentRead(PersistenceManager& pm);
83 
85 
88 
93  void set(const Molecule& molecule, bool deep = true);
94 
98  Molecule& operator = (const Molecule& molecule);
99 
104  void get(Molecule& molecule, bool deep = true) const;
105 
109  void swap(Molecule& molecule);
110 
112 
115 
119  System* getSystem();
120 
124  const System* getSystem() const;
125 
129  void prepend(Atom& atom);
130 
134  void append(Atom& atom);
135 
139  void insert(Atom& atom);
140 
145  void insertBefore(Atom& atom, Composite& before);
146 
151  void insertAfter(Atom& atom, Composite& after);
152 
156  bool remove(Atom& atom);
157 
161  void prepend(AtomContainer& atom_container);
162 
166  void append(AtomContainer& atom_container);
167 
171  void insert(AtomContainer& atom_container);
172 
177  void insertBefore(AtomContainer& atom_container, Composite& before);
178 
183  void insertAfter(AtomContainer& atom_container, Composite& after);
184 
188  void spliceBefore(AtomContainer& atom_container);
189 
193  void spliceAfter(AtomContainer& atom_container);
194 
200  void splice(AtomContainer& atom_container);
201 
205  bool remove(AtomContainer& atom_container);
206 
208 
211 
218  virtual void dump(std::ostream& s = std::cout, Size depth = 0) const;
219 
221 
226  bool operator == (const Molecule& molecule) const;
227 
231  bool operator != (const Molecule& molecule) const;
232 
233 
235 
236 
237  protected:
238 
239  Molecule* getMolecule();
240 
241  const Molecule* getMolecule() const;
242 
243  AtomContainer* getSuperAtomContainer();
244 
245  const AtomContainer* getSuperAtomContainer() const;
246 
247  void prepend(Molecule& molecule);
248 
249  void append(Molecule& molecule);
250 
251  void insert(Molecule& molecule);
252 
253  void insertBefore(Molecule& molecule, Composite& composite);
254 
255  void insertAfter(Molecule& molecule, Composite& composite);
256 
257  bool remove(Molecule& molecule);
258 
259  bool isSubAtomContainerOf(const AtomContainer& atom_container) const;
260  };
261 } // namespace BALL
262 
263 #endif // BALL_KERNEL_MOLECULE_H