summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib/pstring.cpp
diff options
context:
space:
mode:
author couriersud <couriersud@arcor.de>2016-03-05 17:11:04 +0100
committer couriersud <couriersud@arcor.de>2016-03-14 20:24:29 +0100
commit41c8a9f6fa49b10c021196463adc654ecce25790 (patch)
tree2e59db2aa4d0730711e7e0a9541905b2f6380479 /src/lib/netlist/plib/pstring.cpp
parent0e48eb2a4392df8dd020f42432d90f614d73c6b3 (diff)
netlist updates:
- First steps to move towards c++11. - Base plist on std::vector - Replace pstack with std::stack - Remove pnamed_list - use c++ "for each" in a number of places - Fixed two "time bombs" [couriersud]
Diffstat (limited to 'src/lib/netlist/plib/pstring.cpp')
-rw-r--r--src/lib/netlist/plib/pstring.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/lib/netlist/plib/pstring.cpp b/src/lib/netlist/plib/pstring.cpp
index 8ad86f41f3d..2acf1d789b1 100644
--- a/src/lib/netlist/plib/pstring.cpp
+++ b/src/lib/netlist/plib/pstring.cpp
@@ -314,7 +314,7 @@ long pstring_t<F>::as_long(bool *error) const
#if 1
-static pstack_t<pstr_t *> *stk = NULL;
+static std::stack<pstr_t *> *stk = NULL;
static inline unsigned countleadbits(unsigned x)
{
@@ -373,7 +373,7 @@ template<typename F>
pstr_t *pstring_t<F>::salloc(int n)
{
if (stk == NULL)
- stk = palloc_array(pstack_t<pstr_t *>, 17);
+ stk = palloc_array(std::stack<pstr_t *>, 17);
pstr_t *p;
unsigned sn= ((32 - countleadbits(n)) + 1) / 2;
unsigned size = sizeof(pstr_t) + ((UINT64) 1<<(sn * 2)) + 1;
@@ -381,7 +381,8 @@ pstr_t *pstring_t<F>::salloc(int n)
p = (pstr_t *) palloc_array(char, size);
else
{
- p = stk[sn].pop();
+ p = stk[sn].top();
+ stk[sn].pop();
}
// str_t *p = (str_t *) _mm_malloc(size, 8);
@@ -395,8 +396,11 @@ void pstring_t<F>::resetmem()
{
for (unsigned i=0; i<=16; i++)
{
- for (; stk[i].count() > 0; )
- pfree_array(stk[i].pop());
+ for (; stk[i].size() > 0; )
+ {
+ pfree_array(stk[i].top());
+ stk[i].pop();
+ }
}
pfree_array(stk);
stk = NULL;