00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: fragmentIterator.h,v 1.20 2005/10/23 12:02:18 oliver Exp $ 00005 // 00006 00007 #ifndef BALL_KERNEL_FRAGMENTITERATOR_H 00008 #define BALL_KERNEL_FRAGMENTITERATOR_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 { 00025 class BALL_EXPORT FragmentIteratorTraits 00026 : public CompositeIteratorTraits 00027 { 00028 public: 00029 00030 inline FragmentIteratorTraits(); 00031 00032 FragmentIteratorTraits(const Composite& composite); 00033 00034 inline FragmentIteratorTraits(const FragmentIteratorTraits& traits); 00035 00036 FragmentIteratorTraits& operator = (const FragmentIteratorTraits& traits); 00037 00038 void resetPredicate(); 00039 }; 00040 00041 inline FragmentIteratorTraits::FragmentIteratorTraits() 00042 : CompositeIteratorTraits() 00043 { 00044 predicate_ = &RTTI::getDefault<KernelPredicate<Fragment> >(); 00045 } 00046 00047 inline FragmentIteratorTraits::FragmentIteratorTraits(const Composite& composite) 00048 : CompositeIteratorTraits(composite) 00049 { 00050 predicate_ = &RTTI::getDefault<KernelPredicate<Fragment> >(); 00051 } 00052 00053 inline FragmentIteratorTraits::FragmentIteratorTraits(const FragmentIteratorTraits& traits) 00054 : CompositeIteratorTraits(traits) 00055 { 00056 } 00057 00058 inline FragmentIteratorTraits& FragmentIteratorTraits::operator = (const FragmentIteratorTraits& traits) 00059 { 00060 CompositeIteratorTraits::operator=(traits); 00061 return *this; 00062 } 00063 00064 inline void FragmentIteratorTraits::resetPredicate() 00065 { 00066 predicate_ = &RTTI::getDefault<KernelPredicate<Fragment> >(); 00067 } 00068 00070 typedef BidirectionalIterator 00071 <Composite, Fragment, Composite::CompositeIterator, FragmentIteratorTraits> 00072 FragmentIterator; 00073 00075 typedef ConstBidirectionalIterator 00076 <Composite, Fragment, Composite::CompositeIterator, FragmentIteratorTraits> 00077 FragmentConstIterator; 00078 00080 typedef std::reverse_iterator<FragmentIterator> FragmentReverseIterator; 00081 00083 typedef std::reverse_iterator<FragmentConstIterator> FragmentConstReverseIterator; 00084 00085 } // namespace BALL 00086 #endif // BALL_KERNEL_FRAGMENTITERATOR_H