diff options
Diffstat (limited to 'src/lib/netlist/plib/palloc.h')
-rw-r--r-- | src/lib/netlist/plib/palloc.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/lib/netlist/plib/palloc.h b/src/lib/netlist/plib/palloc.h index 01193998392..7b4be017c33 100644 --- a/src/lib/netlist/plib/palloc.h +++ b/src/lib/netlist/plib/palloc.h @@ -9,6 +9,7 @@ #define PALLOC_H_ #include <exception> +#include <vector> #include "pconfig.h" #include "pstring.h" @@ -117,4 +118,38 @@ inline void pfree_array_t(T *p) #endif +class pmempool +{ +private: + struct block + { + block() : m_num_alloc(0), m_free(0), cur_ptr(nullptr), data(nullptr) { } + int m_num_alloc; + int m_free; + char *cur_ptr; + char *data; + }; + + int new_block(); + + struct info + { + info() : m_block(0) { } + size_t m_block; + }; + +public: + pmempool(int min_alloc, int min_align); + ~pmempool(); + + void *alloc(size_t size); + void free(void *ptr); + + int m_min_alloc; + int m_min_align; + + std::vector<block> m_blocks; +}; + + #endif /* NLCONFIG_H_ */ |