Added quantiling UDAFs
[com/gs-lite.git] / src / lib / gscpaux / block_allocator.h
1 // Distributed under the MIT license. Copyright (c) 2010, Ivan Vashchaev\r
2 \r
3 #ifndef BLOCK_ALLOCATOR_H\r
4 #define BLOCK_ALLOCATOR_H\r
5 \r
6 class block_allocator\r
7 {\r
8 private:\r
9         struct block\r
10         {\r
11                 size_t size;\r
12                 size_t used;\r
13                 char *buffer;\r
14                 block *next;\r
15         };\r
16 \r
17         block *m_head;\r
18         size_t m_blocksize;\r
19 \r
20         block_allocator(const block_allocator &);\r
21         block_allocator &operator=(block_allocator &);\r
22 \r
23 public:\r
24         block_allocator(size_t blocksize);\r
25         ~block_allocator();\r
26 \r
27         // exchange contents with rhs\r
28         void swap(block_allocator &rhs);\r
29 \r
30         // allocate memory\r
31         void *malloc(size_t size);\r
32 \r
33         // free all allocated blocks\r
34         void free();\r
35 };\r
36 \r
37 #endif\r