source: GTP/trunk/Lib/Geom/shared/GTGeometry/include/Container.h @ 1014

Revision 1014, 1.2 KB checked in by gumbau, 19 years ago (diff)
Line 
1#ifndef __CONTAINER_H__
2#define __CONTAINER_H__
3
4template <class T>
5class ObjList
6{
7public:
8        ObjList(void){ clear(); }
9
10        ~ObjList(void){
11                if (data)
12                        free(data);
13                data_size=0;
14                capacity=0;
15        }
16
17        ObjList(const ObjList &l){
18                this->operator =(l);   
19        }
20
21        void push_back(T i){
22                if (data_size>=capacity)
23                {
24                        capacity *= 2;
25                        data = (T*)realloc(data,capacity*sizeof(T));
26                }
27                data[data_size] = i;
28                data_size++;
29        }
30
31        T & operator[](unsigned int i){ assert(i<data_size); return data[i]; }
32        const T & operator[](unsigned int i) const { assert(i<data_size); return data[i]; }
33
34        const ObjList & operator=(const ObjList &l){
35/*              capacity=l.capacity;
36                data_size=l.data_size;
37                data=(T*)malloc(capacity*sizeof(T));
38                memcpy(data,l.data,data_size*sizeof(T));*/
39                clear();
40                for (unsigned int i=0; i<l.size(); i++)
41                        push_back(l[i]);
42                return l;
43        }
44
45        unsigned int size(void) const { return data_size; }
46
47        void clear(void){
48                capacity=16;
49                data=(T*)malloc(capacity*sizeof(T));
50                data_size=0;
51        }
52
53        void eraseAtPos(unsigned int i){
54                if (i!=data_size-1)
55                        memmove(data+i,data+i+1,(data_size-i-1)*sizeof(T));
56                data_size--;
57        }
58
59private:
60        T *data;
61        unsigned int data_size;
62        unsigned int capacity;
63};
64
65#endif
Note: See TracBrowser for help on using the repository browser.