BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
secondaryStructure.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_SECONDARYSTRUCTURE_H
6 #define BALL_KERNEL_SECONDARYSTRUCTURE_H
7 
8 #ifndef BALL_KERNEL_RESIDUE_H
9 # include <BALL/KERNEL/residue.h>
10 #endif
11 
12 #ifndef BALL_KERNEL_RESIDUEITERATOR_H
14 #endif
15 
16 #ifndef BALL_KERNEL_ATOMCONTAINER_H
18 #endif
19 
20 namespace BALL
21 {
30  : public AtomContainer
31  {
32  public:
33 
35 
36 
39 
42  enum Type
43  {
55  NUMBER_OF_TYPES
56  };
57 
59 
60 
64 
67 
69  SecondaryStructure(const SecondaryStructure& secondary_structure, bool deep = true);
70 
72  SecondaryStructure(const String& name);
73 
75  virtual ~SecondaryStructure();
76 
78  virtual void clear();
79 
81  virtual void destroy();
83 
91  bool operator == (const SecondaryStructure& secondary_structure) const;
92 
96  bool operator != (const SecondaryStructure& secondary_structure) const;
98 
102 
106  void persistentWrite(PersistenceManager& pm, const char* name = 0) const;
107 
111  void persistentRead(PersistenceManager& pm);
113 
117 
123  void set(const SecondaryStructure& secondary_structure, bool deep = true);
124 
130  SecondaryStructure& operator = (const SecondaryStructure& secondary_structure);
131 
137  void get(SecondaryStructure& secondary_structure, bool deep = true) const;
138 
142  void swap(SecondaryStructure& secondary_structure);
144 
148 
150  Type getType() const { return type_; }
151 
153  void setType(Type type) { type_ = type; }
154 
159  Protein* getProtein();
160 
165  const Protein* getProtein() const;
166 
171  Chain* getChain();
172 
177  const Chain* getChain() const;
178 
184  Residue* getResidue(Position position);
185 
191  const Residue* getResidue(Position position) const;
192 
199 
205  const Residue* getNTerminal() const;
206 
213 
219  const Residue* getCTerminal() const;
220 
226  PDBAtom* getPDBAtom(Position position);
227 
233  const PDBAtom* getPDBAtom(Position position) const;
234 
238  Size countResidues() const;
239 
243  Size countPDBAtoms() const;
244 
248  void prepend(Residue& residue);
249 
253  void append(Residue& residue);
254 
258  void insert(Residue& residue);
259 
264  void insertBefore(Residue& residue, Composite& before);
265 
270  void insertAfter(Residue& residue, Composite& after);
271 
275  bool remove(Residue& residue);
276 
281  void spliceBefore(SecondaryStructure& secondary_structure);
282 
287  void spliceAfter(SecondaryStructure& secondary_structure);
288 
292  void splice(SecondaryStructure& secondary_structure);
294 
298 
303  virtual bool isValid() const;
304 
311  virtual void dump(std::ostream& s = std::cout, Size depth = 0) const;
312 
314 
315  // --- EXTERNAL ITERATORS
316 
319 
320  protected:
321 
323  Type type_;
324 
325  private:
326 
327  Fragment* getFragment(Position position);
328 
329  const Fragment* getFragment(Position position) const;
330 
331  Atom* getAtom(Position position);
332 
333  const Atom* getAtom(Position position) const;
334 
335  void prepend(Atom& atom);
336 
337  void append(Atom& atom);
338 
339  void insert(Atom& atom);
340 
341  void insertBefore(Atom& atom, Composite& before);
342 
343  void insertAfter(Atom& atom, Composite& after);
344 
345  bool remove(Atom& atom);
346 
347  void prepend(AtomContainer& atom_container);
348 
349  void append(AtomContainer& atom_container);
350 
351  void insert(AtomContainer& atom_container);
352 
353  void insertBefore(AtomContainer& atom_container, Composite& before);
354 
355  void insertAfter(AtomContainer& atom_container, Composite& after);
356 
357  void spliceBefore(AtomContainer& atom_container);
358 
359  void spliceAfter(AtomContainer& atom_container);
360 
361  void splice(AtomContainer& atom_container);
362 
363  bool remove(AtomContainer& atom_container);
364 
366 
367  };
368 
369 } // namespace BALL
370 
371 #endif // BALL_KERNEL_SECONDARYSTRUCTURE_H