secondaryStructureIterator.h

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