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