// Distributed under the MIT license. Copyright (c) 2010, Ivan Vashchaev #ifndef BLOCK_ALLOCATOR_H #define BLOCK_ALLOCATOR_H namespace mc_json{ class block_allocator { private: struct block { size_t size; size_t used; char *buffer; block *next; }; block *m_head; size_t m_blocksize; block_allocator(const block_allocator &); block_allocator &operator=(block_allocator &); public: block_allocator(size_t blocksize); ~block_allocator(); // exchange contents with rhs void swap(block_allocator &rhs); // allocate memory void *malloc(size_t size); // free all allocated blocks void free(); }; } #endif