moleculeIterator.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: moleculeIterator.h,v 1.16 2005/10/23 12:02:19 oliver Exp $
00005 //
00006 
00007 #ifndef BALL_KERNEL_MOLECULEITERATOR_H
00008 #define BALL_KERNEL_MOLECULEITERATOR_H
00009 
00010 #ifndef BALL_KERNEL_ITERATOR_H
00011 # include <BALL/KERNEL/iterator.h>
00012 #endif
00013 
00014 #ifndef BALL_KERNEL_PREDICATE_H
00015 # include <BALL/KERNEL/predicate.h>
00016 #endif
00017 
00018 namespace BALL 
00019 {
00023   class BALL_EXPORT MoleculeIteratorTraits
00024     : public CompositeIteratorTraits
00025   {
00026     public:
00027     
00028     MoleculeIteratorTraits()
00029       : CompositeIteratorTraits()
00030     {
00031       predicate_ = &RTTI::getDefault<KernelPredicate<Molecule> >();
00032     }
00033       
00034     MoleculeIteratorTraits(const Composite& composite)
00035       : CompositeIteratorTraits(composite)
00036     {
00037       predicate_ = &RTTI::getDefault<KernelPredicate<Molecule> >();
00038     }
00039       
00040     MoleculeIteratorTraits(const MoleculeIteratorTraits& traits, bool /* deep */ = true)
00041       : CompositeIteratorTraits(traits)
00042     {
00043     }
00044       
00045     MoleculeIteratorTraits &operator = (const MoleculeIteratorTraits& traits)
00046     {
00047       CompositeIteratorTraits::operator=(traits);
00048       return *this;
00049     }
00050 
00051     void resetPredicate()
00052     {
00053       predicate_ = &RTTI::getDefault<KernelPredicate<Molecule> >();
00054     }
00055   };
00056 
00057 
00059   typedef BidirectionalIterator
00060     <Composite, Molecule, Composite::CompositeIterator, MoleculeIteratorTraits>
00061     MoleculeIterator;
00062 
00064   typedef ConstBidirectionalIterator
00065     <Composite, Molecule, Composite::CompositeIterator, MoleculeIteratorTraits>
00066     MoleculeConstIterator;
00067 
00069   typedef std::reverse_iterator<MoleculeIterator> MoleculeReverseIterator;
00070   
00072   typedef std::reverse_iterator<MoleculeConstIterator> MoleculeConstReverseIterator;
00073 
00074 } // namespace BALL
00075 
00076 #endif // BALL_KERNEL_MOLECULEITERATOR_H