Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

Fl_String_List.h

00001 /*
00002  * $Id: Fl_String_List.h,v 1.12 2003/07/03 20:36:35 laza2000 Exp $
00003  *
00004  * Extended Fast Light Toolkit (EFLTK)
00005  * Copyright (C) 2002-2003 by EDE-Team
00006  * WWW: http://www.sourceforge.net/projects/ede
00007  *
00008  * Fast Light Toolkit (FLTK)
00009  * Copyright (C) 1998-2003 by Bill Spitzak and others.
00010  * WWW: http://www.fltk.org
00011  *
00012  * This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE
00013  * version 2. See COPYING for details.
00014  *
00015  * Author : Mikko Lahteenmaki
00016  * Email  : mikko@fltk.net
00017  *
00018  * Please report all bugs and problems to "efltk-bugs@fltk.net"
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     //Default is 0, means auto-calculated
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     //Returns number of removed items
00064     int remove(Fl_String item);
00065     void remove(unsigned pos);
00066 
00067     //Return first index of found string. -1 if none
00068     int index_of(const Fl_String &str) const;
00069     int index_of(const char *str) const;
00070 
00071     // Returns allocated char* string of list
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 // Char pointer based string list
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

Generated on Thu Jul 31 15:33:45 2003 for eFLTK by doxygen1.2.15