atomContainerIterator.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: atomContainerIterator.h,v 1.21 2005/10/23 12:02:17 oliver Exp $ 
00005 //
00006 
00007 #ifndef BALL_KERNEL_ATOMCONTAINERITERATOR_H
00008 #define BALL_KERNEL_ATOMCONTAINERITERATOR_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 {
00020   class AtomContainer;
00021 
00026   class BALL_EXPORT AtomContainerIteratorTraits
00027     : public CompositeIteratorTraits
00028   {
00029     public:
00030 
00031     inline AtomContainerIteratorTraits();
00032 
00033     AtomContainerIteratorTraits(const Composite& composite);
00034 
00035     inline AtomContainerIteratorTraits(const AtomContainerIteratorTraits& traits);
00036 
00037     AtomContainerIteratorTraits& operator = (const AtomContainerIteratorTraits& traits);
00038 
00039     void resetPredicate();
00040   };
00041 
00042 
00043   inline AtomContainerIteratorTraits::AtomContainerIteratorTraits()
00044     : CompositeIteratorTraits()
00045   {
00046     predicate_ = &RTTI::getDefault<KernelPredicate<AtomContainer> >();
00047   }
00048 
00049   inline AtomContainerIteratorTraits::AtomContainerIteratorTraits(const Composite& composite)
00050     : CompositeIteratorTraits(composite)
00051   {
00052     predicate_ = &RTTI::getDefault<KernelPredicate<AtomContainer> >();
00053   }
00054 
00055   inline AtomContainerIteratorTraits::AtomContainerIteratorTraits(const AtomContainerIteratorTraits& traits)
00056     : CompositeIteratorTraits(traits)
00057   {
00058   }
00059 
00060   inline
00061   AtomContainerIteratorTraits& AtomContainerIteratorTraits::operator =
00062     (const AtomContainerIteratorTraits& traits)
00063   {
00064     CompositeIteratorTraits::operator=(traits);
00065     return *this;
00066   }
00067 
00068   inline
00069   void AtomContainerIteratorTraits::resetPredicate()
00070   {
00071     predicate_ = &RTTI::getDefault<KernelPredicate<AtomContainer> >();
00072   }
00073 
00074 
00079 
00082   typedef BidirectionalIterator
00083     <Composite, AtomContainer, Composite::CompositeIterator, AtomContainerIteratorTraits>
00084     AtomContainerIterator;
00085 
00088   typedef ConstBidirectionalIterator
00089     <Composite, AtomContainer, Composite::CompositeIterator, AtomContainerIteratorTraits>
00090     AtomContainerConstIterator;
00091 
00093   typedef std::reverse_iterator<AtomContainerIterator> AtomContainerReverseIterator;
00094 
00096   typedef std::reverse_iterator<AtomContainerConstIterator> AtomContainerConstReverseIterator;
00097 
00099 } // namespace BALL
00100 
00101 #endif // BALL_KERNEL_ATOMCONTAINERITERATOR_H