00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_KERNEL_PDBATOMITERATOR_H
00008 #define BALL_KERNEL_PDBATOMITERATOR_H
00009
00010 #ifndef BALL_COMMON_H
00011 # include <BALL/common.h>
00012 #endif
00013
00014 #ifndef BALL_KERNEL_PDBATOM_H
00015 # include <BALL/KERNEL/PDBAtom.h>
00016 #endif
00017
00018 #ifndef BALL_KERNEL_ITERATOR_H
00019 # include <BALL/KERNEL/iterator.h>
00020 #endif
00021
00022 #ifndef BALL_KERNEL_PREDICATE_H
00023 # include <BALL/KERNEL/predicate.h>
00024 #endif
00025
00026 namespace BALL
00027 {
00032 class BALL_EXPORT PDBAtomIteratorTraits
00033 : public CompositeIteratorTraits
00034 {
00035 public:
00036
00037 inline PDBAtomIteratorTraits();
00038
00039 PDBAtomIteratorTraits(const Composite& composite);
00040
00041 inline PDBAtomIteratorTraits(const PDBAtomIteratorTraits& traits);
00042
00043 PDBAtomIteratorTraits& operator = (const PDBAtomIteratorTraits& traits);
00044
00045 void resetPredicate();
00046 };
00047
00048 inline PDBAtomIteratorTraits::PDBAtomIteratorTraits()
00049 : CompositeIteratorTraits()
00050 {
00051 predicate_ = &RTTI::getDefault<KernelPredicate<PDBAtom> >();
00052 }
00053
00054 inline PDBAtomIteratorTraits::PDBAtomIteratorTraits(const PDBAtomIteratorTraits& traits)
00055 : CompositeIteratorTraits(traits)
00056 {
00057 }
00058
00059 inline PDBAtomIteratorTraits::PDBAtomIteratorTraits(const Composite& composite)
00060 : CompositeIteratorTraits(composite)
00061 {
00062 predicate_ = &RTTI::getDefault<KernelPredicate<PDBAtom> >();
00063 }
00064
00065 inline PDBAtomIteratorTraits& PDBAtomIteratorTraits::operator = (const PDBAtomIteratorTraits& traits)
00066 {
00067 CompositeIteratorTraits::operator=(traits);
00068 return *this;
00069 }
00070
00071 inline void PDBAtomIteratorTraits::resetPredicate()
00072 {
00073 predicate_ = &RTTI::getDefault<KernelPredicate<PDBAtom> >();
00074 }
00075
00076
00081
00083 typedef BidirectionalIterator<Composite, PDBAtom, Composite::CompositeIterator, PDBAtomIteratorTraits>
00084 PDBAtomIterator;
00085
00087 typedef ConstBidirectionalIterator<Composite, PDBAtom, Composite::CompositeIterator, PDBAtomIteratorTraits>
00088 PDBAtomConstIterator;
00089
00091 typedef std::reverse_iterator<PDBAtomIterator> PDBAtomReverseIterator;
00092
00094 typedef std::reverse_iterator<PDBAtomConstIterator> PDBAtomConstReverseIterator;
00096 }
00097
00098 #endif // BALL_KERNEL_PDBATOMITERATOR_H