summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/plib/pstring.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/plib/pstring.cpp')
-rw-r--r--src/lib/netlist/plib/pstring.cpp57
1 files changed, 19 insertions, 38 deletions
diff --git a/src/lib/netlist/plib/pstring.cpp b/src/lib/netlist/plib/pstring.cpp
index 2506357c9a5..2325e8b08c2 100644
--- a/src/lib/netlist/plib/pstring.cpp
+++ b/src/lib/netlist/plib/pstring.cpp
@@ -97,14 +97,15 @@ const pstring_t<F> pstring_t<F>::substr(const iterator start, const iterator end
return ret;
}
-
template<typename F>
const pstring_t<F> pstring_t<F>::ucase() const
{
- pstring_t ret = *this;
- ret.pcopy(c_str(), blen());
- for (std::size_t i=0; i<ret.len(); i++)
- ret.m_ptr->str()[i] = static_cast<char>(toupper(static_cast<int>(ret.m_ptr->str()[i])));
+ pstring_t ret = "";
+ for (auto c : *this)
+ if (c >= 'a' && c <= 'z')
+ ret += (c - 'a' + 'A');
+ else
+ ret += c;
return ret;
}
@@ -151,7 +152,7 @@ typename pstring_t<F>::iterator pstring_t<F>::find_last_not_of(const pstring_t &
}
template<typename F>
-typename pstring_t<F>::iterator pstring_t<F>::find(const pstring_t &search, iterator start) const
+typename pstring_t<F>::iterator pstring_t<F>::find(const pstring_t search, iterator start) const
{
for (; start != end(); ++start)
{
@@ -169,6 +170,15 @@ typename pstring_t<F>::iterator pstring_t<F>::find(const pstring_t &search, iter
}
template<typename F>
+typename pstring_t<F>::iterator pstring_t<F>::find(const code_t search, iterator start) const
+{
+ mem_t buf[traits::MAXCODELEN+1] = { 0 };
+ traits::encode(search, buf);
+ return find(pstring_t(&buf[0], UTF8), start);
+}
+
+
+template<typename F>
pstring_t<F> pstring_t<F>::replace(const pstring_t &search, const pstring_t &replace) const
{
pstring_t ret("");
@@ -188,13 +198,13 @@ pstring_t<F> pstring_t<F>::replace(const pstring_t &search, const pstring_t &rep
}
template<typename F>
-const pstring_t<F> pstring_t<F>::ltrim(const pstring_t &ws) const
+const pstring_t<F> pstring_t<F>::ltrim(const pstring_t ws) const
{
return substr(find_first_not_of(ws), end());
}
template<typename F>
-const pstring_t<F> pstring_t<F>::rtrim(const pstring_t &ws) const
+const pstring_t<F> pstring_t<F>::rtrim(const pstring_t ws) const
{
auto f = find_last_not_of(ws);
if (f==end())
@@ -256,24 +266,6 @@ long pstring_t<F>::as_long(bool *error) const
}
template<typename F>
-typename pstring_t<F>::iterator pstring_t<F>::find(const mem_t *search, iterator start) const
-{
- for (; start != end(); ++start)
- {
- iterator itc(start);
- iterator cmp(search);
- while (itc != end() && *cmp != 0 && *itc == *cmp)
- {
- ++itc;
- ++cmp;
- }
- if (*cmp == 0)
- return start;
- }
- return end();
-}
-
-template<typename F>
bool pstring_t<F>::startsWith(const pstring_t &arg) const
{
if (arg.blen() > blen())
@@ -291,17 +283,6 @@ bool pstring_t<F>::endsWith(const pstring_t &arg) const
return (memcmp(c_str()+this->blen()-arg.blen(), arg.c_str(), arg.blen()) == 0);
}
-
-template<typename F>
-bool pstring_t<F>::startsWith(const mem_t *arg) const
-{
- std::size_t alen = strlen(arg);
- if (alen > blen())
- return false;
- else
- return (memcmp(arg, c_str(), alen) == 0);
-}
-
template<typename F>
int pstring_t<F>::pcmp(const mem_t *right) const
{
@@ -501,7 +482,7 @@ void pstring_t<F>::sfree(pstr_t *s)
}
template<typename F>
-pstr_t *pstring_t<F>::salloc(int n)
+pstr_t *pstring_t<F>::salloc(std::size_t n)
{
int size = sizeof(pstr_t) + n + 1;
pstr_t *p = (pstr_t *) plib::palloc_array<char>(size);