X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Flib%2Fgscpaux%2Fblock_allocator.h;fp=src%2Flib%2Fgscpaux%2Fblock_allocator.h;h=ae9fc4fc3813d64000186dc73783fa336a94396f;hb=c9783d8ea8b85d810483559e50dbf2297109e349;hp=0000000000000000000000000000000000000000;hpb=2f2369dfc58997659b3007b1cea68ad6bfc49a90;p=com%2Fgs-lite.git diff --git a/src/lib/gscpaux/block_allocator.h b/src/lib/gscpaux/block_allocator.h new file mode 100644 index 0000000..ae9fc4f --- /dev/null +++ b/src/lib/gscpaux/block_allocator.h @@ -0,0 +1,37 @@ +// Distributed under the MIT license. Copyright (c) 2010, Ivan Vashchaev + +#ifndef BLOCK_ALLOCATOR_H +#define BLOCK_ALLOCATOR_H + +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