00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef GLIST_H
00010 #define GLIST_H
00011
00012 #ifdef __GNUC__
00013 #pragma interface
00014 #endif
00015
00016 #include "gtypes.h"
00017
00018
00019
00020
00021
00022 class GList {
00023 public:
00024
00025
00026 GList();
00027
00028
00029 GList(int sizeA);
00030
00031
00032 ~GList();
00033
00034
00035
00036
00037 int getLength() { return length; }
00038
00039
00040
00041
00042
00043 void *get(int i) { return data[i]; }
00044
00045
00046 void append(void *p);
00047
00048
00049 void append(GList *list);
00050
00051
00052
00053 void insert(int i, void *p);
00054
00055
00056
00057 void *del(int i);
00058
00059
00060
00061
00062
00063
00064 void setAllocIncr(int incA) { inc = incA; }
00065
00066 private:
00067
00068 void expand();
00069 void shrink();
00070
00071 void **data;
00072 int size;
00073 int length;
00074 int inc;
00075 };
00076
00077 #define deleteGList(list, T) \
00078 do { \
00079 GList *_list = (list); \
00080 { \
00081 int _i; \
00082 for (_i = 0; _i < _list->getLength(); ++_i) { \
00083 delete (T*)_list->get(_i); \
00084 } \
00085 delete _list; \
00086 } \
00087 } while (0)
00088
00089 #endif