00001
00002
00003
00004
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 }
00086 #endif // BALL_KERNEL_FRAGMENTITERATOR_H