From 231c7cd89b2b346e1ab4580f18ee4564cd3ddcf6 Mon Sep 17 00:00:00 2001 From: Tristan Cormier Date: Sat, 11 Mar 2023 00:42:33 -0500 Subject: [PATCH] feat(string): add operator const char* method to RCString class --- common/string/RCString.cpp | 4 ++++ common/string/RCString.hpp | 1 + test/String.cpp | 9 +++++++++ 3 files changed, 14 insertions(+) diff --git a/common/string/RCString.cpp b/common/string/RCString.cpp index 2f13ffc..1643b3b 100644 --- a/common/string/RCString.cpp +++ b/common/string/RCString.cpp @@ -36,3 +36,7 @@ const char* RCString::GetString() const { return nullptr; } } + +RCString::operator const char*() const { + return this->GetString(); +} diff --git a/common/string/RCString.hpp b/common/string/RCString.hpp index d41e2a9..b867345 100644 --- a/common/string/RCString.hpp +++ b/common/string/RCString.hpp @@ -15,6 +15,7 @@ class RCString : public TRefCnt { void Copy(const RCString& source); void Get(char* buf, size_t bufSize) const; const char* GetString() const; + operator const char*() const; }; #endif diff --git a/test/String.cpp b/test/String.cpp index 807b612..944a7d0 100644 --- a/test/String.cpp +++ b/test/String.cpp @@ -40,3 +40,12 @@ TEST_CASE("RCString::GetString", "[string]") { REQUIRE(rcStr1.GetString() != rcStr2.GetString()); } } + +TEST_CASE("RCString::operator const char*", "[string]") { + SECTION("casts a RCString object to a const char*") { + auto str = "foo"; + RCString rcStr; + rcStr.Copy(str); + REQUIRE(!SStrCmp(str, (const char*)rcStr, STORM_MAX_STR)); + } +}