From d570486f3610a2c00f2377ce4e37a5e6d6b0c396 Mon Sep 17 00:00:00 2001 From: Tim Wojtulewicz Date: Thu, 29 May 2025 13:50:15 -0700 Subject: [PATCH] Add ToStdString and ToStdStringView to ZeekString --- src/Val.cc | 6 ++---- src/ZeekString.cc | 4 ++++ src/ZeekString.h | 11 +++++++++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/Val.cc b/src/Val.cc index f98e6e708b..d2543ed375 100644 --- a/src/Val.cc +++ b/src/Val.cc @@ -782,11 +782,9 @@ const char* StringVal::CheckString() const { return string_val->CheckString(); } std::pair StringVal::CheckStringWithSize() const { return string_val->CheckStringWithSize(); } -string StringVal::ToStdString() const { return {(char*)string_val->Bytes(), static_cast(string_val->Len())}; } +string StringVal::ToStdString() const { return string_val->ToStdString(); } -string_view StringVal::ToStdStringView() const { - return {(char*)string_val->Bytes(), static_cast(string_val->Len())}; -} +string_view StringVal::ToStdStringView() const { return string_val->ToStdStringView(); } StringVal* StringVal::ToUpper() { string_val->ToUpper(); diff --git a/src/ZeekString.cc b/src/ZeekString.cc index 6ebd7c70aa..f720e57977 100644 --- a/src/ZeekString.cc +++ b/src/ZeekString.cc @@ -177,6 +177,10 @@ std::pair String::CheckStringWithSize() const { const char* String::CheckString() const { return CheckStringWithSize().first; } +std::string String::ToStdString() const { return {(char*)Bytes(), static_cast(Len())}; } + +std::string_view String::ToStdStringView() const { return {(char*)Bytes(), static_cast(Len())}; } + char* String::Render(int format, int* len) const { // Maximum character expansion is as \xHH, so a factor of 4. char* s = new char[n * 4 + 1]; // +1 is for final '\0' diff --git a/src/ZeekString.h b/src/ZeekString.h index a861977837..7458a85427 100644 --- a/src/ZeekString.h +++ b/src/ZeekString.h @@ -91,6 +91,17 @@ public: */ std::pair CheckStringWithSize() const; + /** + * Returns the string data as a std::string. This makes a copy of the + * string data. + */ + std::string ToStdString() const; + + /** + * Returns the string data as a std::string_view. + */ + std::string_view ToStdStringView() const; + enum render_style { ESC_NONE = 0, ESC_ESC = (1 << 1), // '\' -> "\\"