diff options
author | 2017-03-30 20:20:00 +0200 | |
---|---|---|
committer | 2017-03-30 22:06:03 +0200 | |
commit | ac13946ffbec538f5fc193843fae7dd513b9c58e (patch) | |
tree | 44ee3cdb306b6cbd214c12bd8cb46dc1e6e6fb19 /src/lib/netlist/plib/putil.cpp | |
parent | ac856bc4d1d22a4be0cd8c86ec7da66761becc96 (diff) |
Change pstring to use std::string as storage container.
This removes all allocation code from pstring. const_iterator is
consequently now based on pstring::const_iterator.
Removed pstring_buffer. This was class wasn't a good idea.
Vas was right: This change did not impact runtime performance. Startup
performance (string intensive) increased. (nw)
Diffstat (limited to 'src/lib/netlist/plib/putil.cpp')
-rw-r--r-- | src/lib/netlist/plib/putil.cpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/lib/netlist/plib/putil.cpp b/src/lib/netlist/plib/putil.cpp index 234b4e6cbaa..ddb300958ea 100644 --- a/src/lib/netlist/plib/putil.cpp +++ b/src/lib/netlist/plib/putil.cpp @@ -44,20 +44,20 @@ namespace plib { std::vector<pstring> ret; - pstring::iterator p = str.begin(); - pstring::iterator pn = str.find(onstr, p); + pstring::size_type p = 0; + pstring::size_type pn = str.find(onstr, p); - while (pn != str.end()) + while (pn != pstring::npos) { - pstring t = str.substr(p, pn); + pstring t = str.substr(p, pn - p); if (!ignore_empty || t.len() != 0) ret.push_back(t); - p = std::next(pn, onstr.len()); + p = pn + onstr.len(); pn = str.find(onstr, p); } - if (p != str.end()) + if (p < str.len()) { - pstring t = str.substr(p, str.end()); + pstring t = str.substr(p); if (!ignore_empty || t.len() != 0) ret.push_back(t); } @@ -69,13 +69,13 @@ namespace plib pstring col = ""; std::vector<pstring> ret; - unsigned i = 0; - while (i<str.blen()) + auto i = str.begin(); + while (i != str.end()) { std::size_t p = static_cast<std::size_t>(-1); for (std::size_t j=0; j < onstrl.size(); j++) { - if (std::equal(onstrl[j].c_str(), onstrl[j].c_str() + onstrl[j].blen(), &(str.c_str()[i]))) + if (std::equal(onstrl[j].c_str(), onstrl[j].c_str() + onstrl[j].size(), i)) { p = j; break; @@ -88,13 +88,13 @@ namespace plib col = ""; ret.push_back(onstrl[p]); - i += onstrl[p].blen(); + i = std::next(i, static_cast<pstring::difference_type>(onstrl[p].len())); } else { - pstring::traits::code_t c = pstring::traits::code(str.c_str() + i); + pstring::code_t c = *i; col += c; - i+=pstring::traits::codelen(c); + i++; } } if (col != "") |