BALL  1.4.79
 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 AtomContainer& atomContainer, bool deep = true);
64 
67  Molecule(const String& name);
68 
71  virtual ~Molecule();
72 
74 
77 
81  void persistentWrite(PersistenceManager& pm, const char* name = 0) const;
82 
86  void persistentRead(PersistenceManager& pm);
87 
89 
92 
97  void set(const Molecule& molecule, bool deep = true);
98 
102  Molecule& operator = (const Molecule& molecule);
103 
108  void get(Molecule& molecule, bool deep = true) const;
109 
113  void swap(Molecule& molecule);
114 
116 
119 
123  System* getSystem();
124 
128  const System* getSystem() const;
129 
133  void prepend(Atom& atom);
134 
138  void append(Atom& atom);
139 
143  void insert(Atom& atom);
144 
149  void insertBefore(Atom& atom, Composite& before);
150 
155  void insertAfter(Atom& atom, Composite& after);
156 
160  bool remove(Atom& atom);
161 
165  void prepend(AtomContainer& atom_container);
166 
170  void append(AtomContainer& atom_container);
171 
175  void insert(AtomContainer& atom_container);
176 
181  void insertBefore(AtomContainer& atom_container, Composite& before);
182 
187  void insertAfter(AtomContainer& atom_container, Composite& after);
188 
192  void spliceBefore(AtomContainer& atom_container);
193 
197  void spliceAfter(AtomContainer& atom_container);
198 
204  void splice(AtomContainer& atom_container);
205 
209  bool remove(AtomContainer& atom_container);
210 
212 
215  virtual bool isMolecule() const { return true; }
218 
222 
229  virtual void dump(std::ostream& s = std::cout, Size depth = 0) const;
230 
232 
237  bool operator == (const Molecule& molecule) const;
238 
242  bool operator != (const Molecule& molecule) const;
243 
244 
246  BALL_DECLARE_STD_ITERATOR_WRAPPER(Molecule, Fragment, fragments)
247 
248 
249  protected:
250 
251  Molecule* getMolecule();
252 
253  const Molecule* getMolecule() const;
254 
255  AtomContainer* getSuperAtomContainer();
256 
257  const AtomContainer* getSuperAtomContainer() const;
258 
259  void prepend(Molecule& molecule);
260 
261  void append(Molecule& molecule);
262 
263  void insert(Molecule& molecule);
264 
265  void insertBefore(Molecule& molecule, Composite& composite);
266 
267  void insertAfter(Molecule& molecule, Composite& composite);
268 
269  bool remove(Molecule& molecule);
270 
271  bool isSubAtomContainerOf(const AtomContainer& atom_container) const;
272  };
273 } // namespace BALL
274 
275 #endif // BALL_KERNEL_MOLECULE_H
#define BALL_KERNEL_DEFINE_ITERATOR_CREATORS(Type)
Definition: iterator.h:25
Property
The number of predefined properties for AtomContainer.
Definition: atomContainer.h:42
BALL_EXPORT FragmentList fragments(const AtomContainer &fragment, bool selected_only=false)
BALL_EXPORT bool operator!=(const String &s1, const String &s2)
#define BALL_CREATE_DEEP(name)
Definition: create.h:26
#define BALL_DECLARE_STD_ITERATOR_WRAPPER(container, type, method_name)
BALL_SIZE_TYPE Size
BALL_EXPORT bool operator==(const String &s1, const String &s2)
#define BALL_EXPORT
Definition: COMMON/global.h:50