From 72a1b6c7585d9bbc49eedefc71ae2ba1284792b4 Mon Sep 17 00:00:00 2001 From: JAJames Date: Tue, 8 Mar 2016 22:30:54 -0500 Subject: [PATCH] Added 'capture' virtual function to 'String_Type'; implemented 'capture' function in 'Shift_String'. --- Jupiter/Shift_String.h | 9 +++++++++ Jupiter/Shift_String_Imp.h | 10 ++++++++++ Jupiter/String_Type.h | 9 +++++++++ Release/Jupiter.lib | Bin 302102 -> 302102 bytes 4 files changed, 28 insertions(+) diff --git a/Jupiter/Shift_String.h b/Jupiter/Shift_String.h index 632c216..c277643 100644 --- a/Jupiter/Shift_String.h +++ b/Jupiter/Shift_String.h @@ -82,6 +82,15 @@ namespace Jupiter */ virtual void erase(); + /** + * @brief Captures an input string of elements and uses it as the internal string. + * Note: Do NOT externally delete[] or free() 'in'. + * + * @param in Pointer to the start of the string to capture + * @param in_length Number of elements in the string + */ + virtual void capture(T *in, size_t in_length); + /** * @brief Sets the internal buffer to be at least large enough to old a specified number of elements. * Note: This does nothing if len is less than the string's current length. diff --git a/Jupiter/Shift_String_Imp.h b/Jupiter/Shift_String_Imp.h index bb8e4c6..f87a387 100644 --- a/Jupiter/Shift_String_Imp.h +++ b/Jupiter/Shift_String_Imp.h @@ -79,6 +79,16 @@ template void Jupiter::Shift_String_Type::erase() Jupiter::String_Type::str = Jupiter::Shift_String_Type::base; } +// capture + +template void Jupiter::Shift_String_Type::capture(T *in, size_t in_size) +{ + delete[] Jupiter::Shift_String_Type::base; + + Jupiter::Shift_String_Type::base = in; + Jupiter::String_Type::length = in_size; +} + template bool Jupiter::Shift_String_Type::setBufferSize(size_t len) { if (len > Jupiter::String_Type::length) diff --git a/Jupiter/String_Type.h b/Jupiter/String_Type.h index 4b176e1..79257bb 100644 --- a/Jupiter/String_Type.h +++ b/Jupiter/String_Type.h @@ -137,6 +137,15 @@ namespace Jupiter */ virtual void processEscapeSequences(); + /** + * @brief Captures an input string of elements and uses it as the internal string. + * Note: Do NOT externally delete[] or free() 'in'. + * + * @param in Pointer to the start of the string to capture + * @param in_length Number of elements in the string + */ + virtual void capture(T *in, size_t in_length) = 0; + /** * @brief Sets the value of an element at the specified index. * Note: If the index is not in the string, it will be added. diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index 216219b16154d0df0424408cd7745b6870a7369f..7aad1ee74653682117a39083bcf606ba2aebb4dc 100644 GIT binary patch delta 19918 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