Removed all STL template code from load balancer. Too bad STL doesn't work
[charm.git] / src / ck-ldb / CkLists.h
1 #ifndef _CKLISTS_H_
2 #define _CKLISTS_H_
3
4 #include <unistd.h>
5
6 class CkVector {
7 public:
8   CkVector() { items = new void*[blk_sz]; in_use = 0; cur_sz = blk_sz; };
9   CkVector(size_t n) { items = new void*[n]; in_use = 0; cur_sz = n;  };
10   ~CkVector() { if (items) delete [] items; }
11
12   void*& operator[](size_t n) { return items[n]; };
13
14   void push_back(void* item) {
15     if (cur_sz == in_use) grow_list();
16     items[in_use] = item;
17     in_use++;
18   };
19
20   size_t size() { return in_use; };
21
22 private:
23   void grow_list() {
24     void** old_items = items;
25     cur_sz *= 2;
26     items = new void*[cur_sz];
27     for(int i=0; i < in_use; i++)
28       items[i] = old_items[i];
29     delete [] old_items;
30   };
31     
32   enum { blk_sz = 1000 };                
33   void** items;
34   int in_use;
35   int cur_sz;
36 };
37
38 #endif