nucleicAcidIterator.h

Go to the documentation of this file.
00001 // -*- Mode: C++; tab-width: 2; -*-
00002 // vi: set ts=2:
00003 //
00004 // $Id: nucleicAcidIterator.h,v 1.11 2005/10/23 12:02:19 oliver Exp $
00005 //
00006 
00007 #ifndef BALL_KERNEL_NUCLEICACIDITERATOR_H
00008 #define BALL_KERNEL_NUCLEICACIDITERATOR_H
00009 
00010 #ifndef BALL_COMMON_H
00011 # include <BALL/common.h>
00012 #endif
00013 
00014 #ifndef BALL_KERNEL_NUCLEOTIDE_H
00015 # include <BALL/KERNEL/nucleicAcid.h>
00016 #endif
00017 
00018 #ifndef BALL_KERNEL_ITERATOR_H
00019 # include <BALL/KERNEL/iterator.h>
00020 #endif
00021 
00022 #ifndef BALL_KERNEL_PREDICATE_H
00023 # include <BALL/KERNEL/predicate.h>
00024 #endif
00025 
00026 namespace BALL 
00027 {
00028   class NucleicAcid;
00029 
00034   class BALL_EXPORT NucleicAcidIteratorTraits
00035     : public CompositeIteratorTraits
00036   {
00037     public:
00038 
00039     NucleicAcidIteratorTraits()
00040       : CompositeIteratorTraits()
00041     {
00042       predicate_ = &RTTI::getDefault<KernelPredicate<NucleicAcid> >();
00043     }
00044       
00045     NucleicAcidIteratorTraits(const Composite& composite)
00046       : CompositeIteratorTraits(composite)
00047     {
00048       predicate_ = &RTTI::getDefault<KernelPredicate<NucleicAcid> >();
00049     }
00050       
00051     NucleicAcidIteratorTraits(const NucleicAcidIteratorTraits& traits, bool /* deep */ = true)
00052       : CompositeIteratorTraits(traits)
00053     {
00054     }
00055       
00056     NucleicAcidIteratorTraits& operator =(const NucleicAcidIteratorTraits& traits)
00057     {
00058       CompositeIteratorTraits::operator=(traits);
00059       return *this;
00060     }
00061 
00062     void resetPredicate()
00063     {
00064       predicate_ = &RTTI::getDefault<KernelPredicate<NucleicAcid> >();
00065     }
00066   };
00067 
00068 
00069 
00070   typedef BidirectionalIterator
00071     <Composite, NucleicAcid, Composite::CompositeIterator, NucleicAcidIteratorTraits>
00072     NucleicAcidIterator;
00073 
00074   typedef ConstBidirectionalIterator
00075     <Composite, NucleicAcid, Composite::CompositeIterator, NucleicAcidIteratorTraits>
00076     NucleicAcidConstIterator;
00077 
00078   typedef std::reverse_iterator<NucleicAcidIterator> NucleicAcidReverseIterator;
00079 
00080   typedef std::reverse_iterator<NucleicAcidConstIterator> NucleicAcidConstReverseIterator;
00081 
00082 } // namespace BALL
00083 
00084 #endif // BALL_KERNEL_NUCLEICACIDITERATOR_H