00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: residueIterator.h,v 1.15 2005/10/23 12:02:20 oliver Exp $ 00005 // 00006 00007 #ifndef BALL_KERNEL_RESIDUEITERATOR_H 00008 #define BALL_KERNEL_RESIDUEITERATOR_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 { 00024 class BALL_EXPORT ResidueIteratorTraits 00025 : public CompositeIteratorTraits 00026 { 00027 public: 00028 00029 ResidueIteratorTraits() 00030 : CompositeIteratorTraits() 00031 { 00032 predicate_ = &RTTI::getDefault<KernelPredicate<Residue> >(); 00033 } 00034 00035 ResidueIteratorTraits(const Composite& composite) 00036 : CompositeIteratorTraits(composite) 00037 { 00038 predicate_ = &RTTI::getDefault<KernelPredicate<Residue> >(); 00039 } 00040 00041 ResidueIteratorTraits(const ResidueIteratorTraits& traits, bool /* deep */ = true) 00042 : CompositeIteratorTraits(traits) 00043 { 00044 } 00045 00046 ResidueIteratorTraits& operator =(const ResidueIteratorTraits& traits) 00047 { 00048 CompositeIteratorTraits::operator=(traits); 00049 return *this; 00050 } 00051 00052 void resetPredicate() 00053 { 00054 predicate_ = &RTTI::getDefault<KernelPredicate<Residue> >(); 00055 } 00056 }; 00057 00058 00060 typedef BidirectionalIterator 00061 <Composite, Residue, Composite::CompositeIterator, ResidueIteratorTraits> 00062 ResidueIterator; 00063 00065 typedef ConstBidirectionalIterator 00066 <Composite, Residue, Composite::CompositeIterator, ResidueIteratorTraits> 00067 ResidueConstIterator; 00068 00070 typedef std::reverse_iterator<ResidueIterator> ResidueReverseIterator; 00071 00073 typedef std::reverse_iterator<ResidueConstIterator> ResidueConstReverseIterator; 00074 00075 } // namespace BALL 00076 00077 #endif // BALL_KERNEL_RESIDUEITERATOR_H