00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __SEQUENCEABLECOLLECTION_H
00025 #define __SEQUENCEABLECOLLECTION_H
00026
00027 #include <stlib/Collection.h>
00028
00029 namespace Core {
00030
00031 class Array;
00032 class ByteArray;
00033 class CollectionIterator;
00034 class String;
00035 class ReadStream;
00036 class ReadAppendStream;
00037 class WriteStream;
00038
00039 class SequenceableCollection : public Collection
00040 {
00041 public:
00042
00043 virtual Object *any(void);
00044 virtual Object *at(int index) const abstract;
00045 virtual void put(int index, Object *obj) abstract;
00046 virtual long size(void) const abstract;
00047 virtual Object *first(void);
00048 virtual Object *last(void);
00049 virtual void replace(long start, long stop,
00050 const SequenceableCollection *collection);
00051 virtual void replace(long start, long stop,
00052 const SequenceableCollection *collection, long startIndex);
00053 virtual void replaceAll(Object *element, Object *replacement);
00054 virtual void replaceAll(Object *element, Object *replacement,
00055 long startIndex, long stopIndex);
00056
00060 virtual long indexOf(Object *element) const;
00064 virtual long lastIndexOf(Object *element) const;
00065 virtual long nextIndexOf(Object *element, long startIndex, long stopIndex) const;
00066 virtual long prevIndexOf(Object *element, long startIndex, long stopIndex) const;
00067
00068 virtual long indexOfSubCollection(SequenceableCollection *coll) const;
00069 virtual long indexOfSubCollection(SequenceableCollection *coll,
00070 long startIndex) const;
00071
00072
00073 virtual void changeSize(long newSize) abstract;
00074 virtual void grow(void);
00075 virtual void growToAtLeast(long items);
00076
00077
00078 virtual Array *asArray(void);
00079 virtual ByteArray *asByteArray(void);
00080 virtual String *asString(void);
00081 virtual ReadStream *readStream(void);
00082 virtual ReadAppendStream *readAppendStream(void);
00083 virtual WriteStream *writeStream(void);
00084
00085
00086 virtual Object *copy(void) abstract;
00087 virtual Object *copy(long from, long to);
00088 virtual SequenceableCollection *copyReplace(long from, long to,
00089 SequenceableCollection *replacement);
00090 virtual SequenceableCollection &operator+(SequenceableCollection &collection);
00091
00092
00093 virtual Object *remove(Object *);
00094
00095
00096 virtual bool includesSubcollection(SequenceableCollection *coll) const;
00097 virtual bool isSequenceable(void) const;
00098 virtual bool startsWith(SequenceableCollection *coll) const;
00099 virtual bool endsWith(SequenceableCollection *coll) const;
00100
00101 protected:
00102
00103 virtual Object *privNextForIterator(CollectionIterator *iter) const;
00104 };
00105
00106 };
00107
00108 #endif