00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _FL_STRING_LIST_H_
00023 #define _FL_STRING_LIST_H_
00024
00025 #include "Fl_Ptr_List.h"
00026 #include "Fl_String.h"
00027 #include <stdio.h>
00028
00030 class FL_API Fl_String_List {
00031 public:
00032 Fl_String_List();
00033 Fl_String_List(const Fl_String_List& sl);
00034 Fl_String_List(const char *str, const char *separator);
00035 ~Fl_String_List() { clear(); }
00036
00037 void clear();
00038
00039 void resize(unsigned newsize);
00040
00041
00042 void blocksize(int s) { blocksize_ = s; }
00043 int blocksize() { return blocksize_; }
00044
00045 bool empty() const { return size_==0; }
00046 unsigned count() const { return size_; }
00047 unsigned size() const { return size_; }
00048
00049 void sort(int (*fcmp)(const void *, const void *));
00050 void sort();
00051
00052 void append(const Fl_String_List &items);
00053 void append(const Fl_String &item);
00054 void append(const char *item);
00055
00056 void prepend(const Fl_String &item) { insert(0, item); }
00057 void prepend(const char *item) { insert(0, item); }
00058 void prepend(const Fl_String_List &list) { insert(0, list); }
00059
00060 void insert(unsigned pos, const Fl_String &item);
00061 void insert(unsigned pos, const Fl_String_List &list);
00062
00063
00064 int remove(Fl_String item);
00065 void remove(unsigned pos);
00066
00067
00068 int index_of(const Fl_String &str) const;
00069 int index_of(const char *str) const;
00070
00071
00072 char *to_cstring(const char *separator) const;
00073 Fl_String to_string(const char *separator) const;
00074 void from_string(const char *str, const char *separator);
00075
00076 Fl_String &item(unsigned index) { return items[index]; }
00077 const Fl_String &item(unsigned index) const { return items[index]; }
00078
00079 Fl_String &operator [](unsigned ind) { return items[ind]; }
00080 const Fl_String &operator [](unsigned ind) const { return items[ind]; }
00081
00082 Fl_String_List& operator = (const Fl_String_List& sl) { clear(); append(sl); return *this; }
00083
00084 void print(FILE *fp=stdout) const;
00085
00086 private:
00087 Fl_String *items;
00088
00089 unsigned blocksize_;
00090 unsigned capacity_;
00091 unsigned size_;
00092 };
00093
00094
00095 class FL_API Fl_CString_List : public Fl_Ptr_List {
00096 public:
00097 Fl_CString_List() : Fl_Ptr_List() { }
00098
00099 void sort();
00100
00101 void append(const char *item) { Fl_Ptr_List::append((void *)item); }
00102 void prepend(const char *item) { Fl_Ptr_List::prepend((void *)item); }
00103
00104 void insert(unsigned pos, const char *item) { Fl_Ptr_List::insert(pos, (void *)item); }
00105
00106 void remove(unsigned pos) { Fl_Ptr_List::remove(pos); }
00107 bool remove(const char *item) { return Fl_Ptr_List::remove((void *)item); }
00108
00109 int index_of(const char *w) const { return Fl_Ptr_List::index_of((void*)w); }
00110
00111 const char *item(unsigned index) const { return (const char *)Fl_Ptr_List::item(index); }
00112 const char *operator [](unsigned ind) const { return (const char *)items[ind]; }
00113
00114 void print(FILE *fp=stdout) const;
00115 };
00116
00117 #endif