00001
00007 #ifndef StringVector_seen
00008 #define StringVector_seen
00009 namespace jcpp {
00010
00011
00012
00013
00014
00015
00019 class StringIterated {
00020 public:
00021 virtual ~StringIterated(){}
00022 virtual void doIt(char *) = 0;
00023 };
00024
00026 class StringIteratedFree : public virtual StringIterated {
00027 public:
00028 StringIteratedFree() {}
00029 virtual ~StringIteratedFree() {}
00030 virtual void doIt(char *);
00031 };
00032
00034 class StringIteratedDelete : public virtual StringIterated {
00035 public:
00036 StringIteratedDelete() {}
00037 virtual ~StringIteratedDelete() {}
00038 virtual void doIt(char *);
00039 };
00040
00045 class StringVector : public virtual Object {
00046
00047 protected:
00048
00050 int capacityIncrement;
00052 int elementCount;
00053
00054 CFREE char **elementData;
00056 int elementData_length;
00057
00058 private:
00059
00060 static const int DEFAULTCAP;
00061
00062 void increaseCapacity();
00063
00064 public:
00065
00066 CDELETE StringVector();
00067
00068 CDELETE StringVector ( int initialCapacity );
00069
00071 CDELETE StringVector(int initialCapacity, int increment);
00072
00073 ~StringVector();
00074
00075 void add(char * str);
00076 void addElement(char * str);
00077
00078 int capacity();
00079
00080 CDELETE Object *clone ();
00081
00082 boolean contains(char * elem);
00083
00084 char * elementAt ( int index );
00085
00086 CDELETE StringEnumeration *elements ();
00087
00088 void ensureCapacity(int newCapacity);
00089
00090 char * firstElement ();
00091
00092 char * get(int idx);
00093
00094 int indexOf(char * elem);
00095
00098 int indexOf(char * elem, int index);
00099
00100 void insertElementAt ( char * str, int index );
00101
00102 boolean isEmpty ();
00103
00104 char * lastElement ();
00105
00106 int lastIndexOf(char * elem);
00107
00108 int lastIndexOf(char * elem, int index);
00109
00113 CFREE char * remove(int idx) ;
00114
00117 void removeAllElements () ;
00118
00121 boolean removeElement(char * str) ;
00122
00125 void removeElementAt ( int index ) ;
00126
00129 void setElementAt(char * str, int index);
00130
00131 void setSize(int newSize) ;
00132
00133 int size() ;
00134
00135 char *toString();
00136
00137 void trimToSize();
00138
00142 void doAll(StringIterated &);
00143
00150 CFREE char **toArgv(int &argc);
00151
00156 void copyOut(char **array, int length);
00157
00159 void sort();
00160 };
00161
00162 } ENDSEMI
00163
00164 #endif //StringVector_seen