From 19422ced3e4adcb9d577a35ef5aa9762c0dac5ac Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Tue, 7 Apr 2020 22:03:19 -0500 Subject: [PATCH] [ox/std] Add move constructor and set null terminator for String --- deps/ox/src/ox/std/string.cpp | 17 +++++++++++++++-- deps/ox/src/ox/std/string.hpp | 2 ++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/deps/ox/src/ox/std/string.cpp b/deps/ox/src/ox/std/string.cpp index 98431db6..f1b25c3e 100644 --- a/deps/ox/src/ox/std/string.cpp +++ b/deps/ox/src/ox/std/string.cpp @@ -12,15 +12,24 @@ namespace ox { String::String() noexcept { - m_buff.push_back(0); + if (m_buff.size()) { + m_buff[0] = 0;; + } else { + m_buff.push_back(0); + } } String::String(std::size_t cap) noexcept { m_buff.resize(cap + 1); + m_buff[0] = 0;; } String::String(const char *str) noexcept { - m_buff.push_back(0); + if (m_buff.size()) { + m_buff[0] = 0;; + } else { + m_buff.push_back(0); + } *this = str; } @@ -28,6 +37,10 @@ String::String(String &other) noexcept { m_buff = other.m_buff; } +String::String(String &&other) noexcept { + m_buff = ox::move(other.m_buff); +} + const String &String::operator=(const char *str) noexcept { std::size_t strLen = ox_strlen(str) + 1; m_buff.resize(strLen + 1); diff --git a/deps/ox/src/ox/std/string.hpp b/deps/ox/src/ox/std/string.hpp index b106fa90..740a885b 100644 --- a/deps/ox/src/ox/std/string.hpp +++ b/deps/ox/src/ox/std/string.hpp @@ -29,6 +29,8 @@ class String { String(String&) noexcept; + String(String&&) noexcept; + const String &operator=(const char *str) noexcept; const String &operator=(char *str) noexcept;