From ac13946ffbec538f5fc193843fae7dd513b9c58e Mon Sep 17 00:00:00 2001 From: couriersud Date: Thu, 30 Mar 2017 20:20:00 +0200 Subject: 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) --- src/lib/netlist/plib/putil.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src/lib/netlist/plib/putil.cpp') 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 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 ret; - unsigned i = 0; - while (i(-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(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 != "") -- cgit v1.2.3-70-g09d2