diff options
author | 2016-03-05 17:11:04 +0100 | |
---|---|---|
committer | 2016-03-14 20:24:29 +0100 | |
commit | 41c8a9f6fa49b10c021196463adc654ecce25790 (patch) | |
tree | 2e59db2aa4d0730711e7e0a9541905b2f6380479 /src/lib/netlist/plib/pstring.cpp | |
parent | 0e48eb2a4392df8dd020f42432d90f614d73c6b3 (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.cpp | 14 |
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; |