00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: secondaryStructureIterator.h,v 1.15 2005/10/23 12:02:20 oliver Exp $ 00005 // 00006 00007 #ifndef BALL_KERNEL_SECONDARYSTRUCTUREITERATOR_H 00008 #define BALL_KERNEL_SECONDARYSTRUCTUREITERATOR_H 00009 00010 #ifndef BALL_COMMON_H 00011 # include <BALL/common.h> 00012 #endif 00013 00014 #ifndef BALL_KERNEL_SECONDARY_STRUCTURE_H 00015 # include <BALL/KERNEL/secondaryStructure.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 { 00032 class BALL_EXPORT SecondaryStructureIteratorTraits 00033 : public CompositeIteratorTraits 00034 { 00035 public: 00036 00037 SecondaryStructureIteratorTraits() 00038 : CompositeIteratorTraits() 00039 { 00040 predicate_ = &RTTI::getDefault<KernelPredicate<SecondaryStructure> >(); 00041 } 00042 00043 SecondaryStructureIteratorTraits(const Composite& composite) 00044 : CompositeIteratorTraits(composite) 00045 { 00046 predicate_ = &RTTI::getDefault<KernelPredicate<SecondaryStructure> >(); 00047 } 00048 00049 SecondaryStructureIteratorTraits(const SecondaryStructureIteratorTraits& traits, bool /* deep */ = true) 00050 : CompositeIteratorTraits(traits) 00051 { 00052 } 00053 00054 SecondaryStructureIteratorTraits &operator = (const SecondaryStructureIteratorTraits& traits) 00055 { 00056 CompositeIteratorTraits::operator = (traits); 00057 return *this; 00058 } 00059 00060 void resetPredicate() 00061 { 00062 predicate_ = &RTTI::getDefault<KernelPredicate<SecondaryStructure> >(); 00063 } 00064 }; 00065 00066 00068 typedef BidirectionalIterator 00069 <Composite, SecondaryStructure, Composite::CompositeIterator, SecondaryStructureIteratorTraits> 00070 SecondaryStructureIterator; 00071 00073 typedef ConstBidirectionalIterator 00074 <Composite, SecondaryStructure, Composite::CompositeIterator, SecondaryStructureIteratorTraits> 00075 SecondaryStructureConstIterator; 00076 00078 typedef std::reverse_iterator<SecondaryStructureIterator> SecondaryStructureReverseIterator; 00079 00081 typedef std::reverse_iterator<SecondaryStructureConstIterator> SecondaryStructureConstReverseIterator; 00082 00083 } // namespace BALL 00084 00085 #endif // BALL_KERNEL_SECONDARYSTRUCTUREITERATOR_H