fragmentIterator.h

Go to the documentation of this file.
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