BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
atomContainer.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_ATOMCONTAINER_H
6 #define BALL_KERNEL_ATOMCONTAINER_H
7 
8 #ifndef BALL_KERNEL_ATOMITERATOR_H
10 #endif
11 
12 #ifndef BALL_KERNEL_ATOMCONTAINERITERATOR_H
14 #endif
15 
16 
17 #define BALL_ATOMCONTAINER_DEFAULT_NAME ""
18 
19 namespace BALL
20 {
21  class Molecule;
22 
31  : public Composite,
32  public PropertyManager
33  {
34  public:
35 
37 
38 
41 
43  enum Property
44  {
46  NUMBER_OF_PROPERTIES = 0
47  };
48 
50 
53 
56  AtomContainer();
57 
62  AtomContainer(const AtomContainer& atom_container, bool deep = true);
63 
67  AtomContainer(const String& name);
68 
71  virtual ~AtomContainer();
72 
77  virtual void clear();
78 
83  virtual void destroy();
84 
86 
89 
93  virtual void persistentWrite(PersistenceManager& pm, const char* name = 0) const;
94 
98  virtual void persistentRead(PersistenceManager& pm);
99 
101 
104 
111  void set(const AtomContainer& atom_container, bool deep = true);
112 
119  AtomContainer& operator = (const AtomContainer& atom_container);
120 
126  void get(AtomContainer& atom_container, bool deep = true) const;
127 
131  void swap(AtomContainer& atom_container);
132 
134 
137 
141  bool operator == (const AtomContainer& atom_container) const;
142 
146  bool operator != (const AtomContainer& atom_container) const;
147 
149 
152 
156  void setName(const String& name);
157 
161  const String& getName() const;
162 
167  AtomContainer* getSuperAtomContainer();
168 
173  const AtomContainer* getSuperAtomContainer() const;
174 
181  AtomContainer* getAtomContainer(Position position);
182 
189  const AtomContainer* getAtomContainer(Position position) const;
190 
197  Atom* getAtom(Position position);
198 
205  const Atom* getAtom(Position position) const;
206 
213  Atom* getAtom(const String& name);
214 
221  const Atom* getAtom(const String& name) const;
222 
226  Size countAtomContainers() const;
227 
231  Size countAtoms() const;
232 
236  Size countBonds() const;
237 
241  Size countInterBonds() const;
242 
246  Size countIntraBonds() const;
247 
251  void prepend(Atom& atom);
252 
256  void append(Atom& atom);
257 
261  void insert(Atom& atom);
262 
267  void insertBefore(Atom& atom, Composite& before);
268 
273  void insertAfter(Atom& atom, Composite& after);
274 
278  bool remove(Atom& atom);
279 
280  Size removeHavingProperty(BALL::Property p);
281  Size removeNotHavingProperty(BALL::Property p);
282  Size removeHavingProperty(const string& name);
283  Size removeNotHavingProperty(const string& name);
284 
288  void prepend(AtomContainer& atom_container);
289 
293  void append(AtomContainer& atom_container);
294 
298  void insert(AtomContainer& atom_container);
299 
304  void insertBefore(AtomContainer& atom_container, Composite& before);
305 
310  void insertAfter(AtomContainer& atom_container, Composite& after);
311 
316  void spliceBefore(AtomContainer& atom_container);
317 
322  void spliceAfter(AtomContainer& atom_container);
323 
329  void splice(AtomContainer& atom_container);
330 
335  bool remove(AtomContainer& atom_container);
336 
338 
341 
344  void destroyBonds();
345 
347 
350 
354  bool isSubAtomContainerOf(const AtomContainer& atom_container) const;
355 
359  bool isSuperAtomContainerOf(const AtomContainer& atom_container) const;
360 
362 
365 
371  virtual bool isValid() const;
372 
379  virtual void dump(std::ostream& s = std::cout, Size depth = 0) const;
380 
382 
385 
387  bool applyIntraBond(UnaryProcessor<Bond>& processor);
388 
390  bool applyInterBond(UnaryProcessor<Bond>& processor);
391 
393 
394  // --- EXTERNAL ITERATORS
395 
398 
399 
400  private:
401 
402  /*_ The name of this container
403  */
404  String name_;
405 
406  };
407 } // namespace BALL
408 
409 #endif // BALL_KERNEL_ATOMCONTAINER_H