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