summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib/palloc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/plib/palloc.h')
-rw-r--r--src/lib/netlist/plib/palloc.h35
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_ */