diff --git a/Jupiter/Reference_String.h b/Jupiter/Reference_String.h index 0dafa3f..9a1bd4e 100644 --- a/Jupiter/Reference_String.h +++ b/Jupiter/Reference_String.h @@ -61,6 +61,14 @@ namespace Jupiter */ const T *ptr() const; + /** + * @brief Truncates the string by a specified number of elements. + * + * @param n Number of elements to remove from the tail. + * @return New size of the String. + */ + virtual size_t truncate(size_t n); + /** * @brief Sets the reference to point to an input string. * diff --git a/Jupiter/Reference_String_Imp.h b/Jupiter/Reference_String_Imp.h index fcb04e1..df33adc 100644 --- a/Jupiter/Reference_String_Imp.h +++ b/Jupiter/Reference_String_Imp.h @@ -80,6 +80,16 @@ template const T *Jupiter::Reference_String::ptr() const return Jupiter::Reference_String::str; } +// truncate + +template size_t Jupiter::Reference_String::truncate(size_t n) +{ + if (n >= Jupiter::Reference_String::length) return (Jupiter::Reference_String::length = 0); + return (Jupiter::Reference_String::length -= n); +} + +// set + template size_t Jupiter::Reference_String::set(const Jupiter::Readable_String &in) { return this->set(in.ptr(), in.size());