BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
chain.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_CHAIN_H
6 #define BALL_KERNEL_CHAIN_H
7 
8 #ifndef BALL_KERNEL_RESIDUE_H
9 # include <BALL/KERNEL/residue.h>
10 #endif
11 
12 #ifndef BALL_KERNEL_SECONDARYSTRUCTUREITERATOR_H
14 #endif
15 
16 
17 #define BALL_CHAIN_DEFAULT_NAME ' '
18 
19 namespace BALL
20 {
21  class Protein;
22 
31  : public AtomContainer
32  {
33  public:
34 
36 
37 
40 
43  enum Property
44  {
45  NUMBER_OF_PROPERTIES = AtomContainer::NUMBER_OF_PROPERTIES
46  };
47 
49 
52 
54  Chain();
55 
57  Chain(const Chain& chain, bool deep = true);
58 
60  Chain(const String& name);
61 
63  virtual ~Chain();
64 
66 
69 
73  void persistentWrite(PersistenceManager& pm, const char* name = 0) const;
74 
78  void persistentRead(PersistenceManager& pm);
79 
81 
84 
90  void set(const Chain& chain, bool deep = true);
91 
98  Chain& operator = (const Chain& chain);
99 
105  void get(Chain& chain, bool deep = true) const;
106 
110  void swap(Chain& chain);
111 
113 
118  bool operator == (const Chain& chain) const;
119 
123  bool operator != (const Chain& chain) const;
124 
125 
129 
134  Protein* getProtein();
135 
140  const Protein* getProtein() const;
141 
148  SecondaryStructure* getSecondaryStructure(Position position);
149 
156  const SecondaryStructure* getSecondaryStructure(Position position) const;
157 
163  Residue* getResidue(Position position);
164 
170  const Residue* getResidue(Position position) const;
171 
178 
184  const Residue* getNTerminal() const;
185 
192 
198  const Residue* getCTerminal() const;
199 
205  PDBAtom* getPDBAtom(Position position);
206 
212  const PDBAtom* getPDBAtom(Position position) const;
213 
217  Size countSecondaryStructures() const;
218 
222  Size countResidues() const;
223 
227  Size countPDBAtoms() const;
228 
232  void prepend(SecondaryStructure& secondary_structure);
233 
237  void append(SecondaryStructure& secondary_structure);
238 
242  void insert(SecondaryStructure& secondary_structure);
243 
248  void insertBefore(SecondaryStructure& secondary_structure, Composite& before);
249 
254  void insertAfter(SecondaryStructure& secondary_structure, Composite& after);
255 
259  bool remove(SecondaryStructure& secondary_structure);
260 
264  void prepend(Residue& residue);
265 
269  void append(Residue& residue);
270 
274  void insert(Residue& residue);
275 
280  void insertBefore(Residue& residue, Composite& before);
281 
286  void insertAfter(Residue& residue, Composite& after);
287 
291  bool remove(Residue& residue);
292 
296  void spliceBefore(Chain& chain);
297 
301  void spliceAfter(Chain &chain);
302 
306  void splice(Chain &chain);
307 
309 
312 
319  virtual void dump(std::ostream& s = std::cout, Size depth = 0) const
320 ;
321 
323 
324  // --- EXTERNAL ITERATORS
325 
329 
330  protected:
331 
332  private:
333  AtomContainer* getAtomContainer(Position position);
334 
335  const AtomContainer* getAtomContainer(Position position) const;
336 
337  Atom* getAtom(Position position);
338 
339  const Atom* getAtom(Position position) const;
340 
341  void prepend(Atom& atom);
342 
343  void append(Atom& atom);
344 
345  void insert(Atom& atom);
346 
347  void insertBefore(Atom& atom, Composite& before);
348 
349  void insertAfter(Atom& atom, Composite& after);
350 
351  bool remove(Atom& atom);
352 
353  void prepend(AtomContainer& atom_container);
354 
355  void append(AtomContainer& atom_container);
356 
357  void insert(AtomContainer& atom_container);
358 
359  void insertBefore(AtomContainer& atom_container, Composite& before);
360 
361  void insertAfter(AtomContainer& atom_container, Composite& after);
362 
363  void spliceBefore(AtomContainer& atom_container);
364 
365  void spliceAfter(AtomContainer& atom_container);
366 
367  void splice(AtomContainer& atom_container);
368 
369  bool remove(AtomContainer& atom_container);
370 
372  };
373 } // namespace BALL
374 
375 #endif // BALL_KERNEL_CHAIN_H