00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef FALCON_RANGESEQ_H
00018 #define FALCON_RANGESEQ_H
00019
00020 #include <falcon/setup.h>
00021 #include <falcon/sequence.h>
00022 #include <falcon/item.h>
00023
00024 namespace Falcon {
00025
00026 class FALCON_DYN_CLASS RangeSeq: public Sequence
00027 {
00028 int64 m_start;
00029 int64 m_end;
00030 int64 m_step;
00031
00032 mutable Item m_number;
00033
00034 public:
00035 RangeSeq( const CoreRange &rng );
00036 RangeSeq( int64 s, int64 e, int64 step );
00037 RangeSeq( const RangeSeq& other ):
00038 m_start( other.m_start ),
00039 m_end( other.m_end ),
00040 m_step( other.m_step )
00041 {}
00042
00043 virtual ~RangeSeq();
00044
00045 virtual const Item &front() const;
00046 virtual const Item &back() const;
00047 virtual void clear();
00048 virtual bool empty() const;
00049 virtual void append( const Item &data );
00050 virtual void prepend( const Item &data );
00051 virtual FalconData* clone() const;
00052
00053
00054
00055
00056
00057 protected:
00058 virtual void getIterator( Iterator& tgt, bool tail = false ) const;
00059 virtual void copyIterator( Iterator& tgt, const Iterator& source ) const;
00060 virtual void insert( Iterator &iter, const Item &data );
00061 virtual void erase( Iterator &iter );
00062 virtual bool hasNext( const Iterator &iter ) const;
00063 virtual bool hasPrev( const Iterator &iter ) const;
00064 virtual bool hasCurrent( const Iterator &iter ) const;
00065
00066 virtual bool next( Iterator &iter ) const;
00067 virtual bool prev( Iterator &iter ) const;
00068
00069 virtual Item& getCurrent( const Iterator &iter );
00070 virtual Item& getCurrentKey( const Iterator &iter );
00071
00072 virtual bool equalIterator( const Iterator &first, const Iterator &second ) const;
00073 };
00074
00075 }
00076
00077 #endif
00078
00079