bool pstring_t<F>::endsWith(const pstring_t &arg) const { if (arg.blen() > blen()) return false; else return std::equal(arg.c_str(), arg.c_str() + arg.blen(), c_str()+this->blen()-arg.blen()); }
void pstring_t<F>::pcat(const pstring_t &s) { std::size_t slen = s.blen(); pstr_t *n = salloc(m_ptr->len() + slen); if (m_ptr->len() > 0) n->copy_from(m_ptr->str(), m_ptr->len()); if (slen > 0) std::copy(s.c_str(), s.c_str() + slen, n->str() + m_ptr->len()); *(n->str() + n->len()) = 0; sfree(m_ptr); m_ptr = n; }