Add ToStdString and ToStdStringView to ZeekString

This commit is contained in:
Tim Wojtulewicz 2025-05-29 13:50:15 -07:00
parent f96ce6727f
commit d570486f36
3 changed files with 17 additions and 4 deletions

View file

@ -782,11 +782,9 @@ const char* StringVal::CheckString() const { return string_val->CheckString(); }
std::pair<const char*, size_t> StringVal::CheckStringWithSize() const { return string_val->CheckStringWithSize(); } std::pair<const char*, size_t> StringVal::CheckStringWithSize() const { return string_val->CheckStringWithSize(); }
string StringVal::ToStdString() const { return {(char*)string_val->Bytes(), static_cast<size_t>(string_val->Len())}; } string StringVal::ToStdString() const { return string_val->ToStdString(); }
string_view StringVal::ToStdStringView() const { string_view StringVal::ToStdStringView() const { return string_val->ToStdStringView(); }
return {(char*)string_val->Bytes(), static_cast<size_t>(string_val->Len())};
}
StringVal* StringVal::ToUpper() { StringVal* StringVal::ToUpper() {
string_val->ToUpper(); string_val->ToUpper();

View file

@ -177,6 +177,10 @@ std::pair<const char*, size_t> String::CheckStringWithSize() const {
const char* String::CheckString() const { return CheckStringWithSize().first; } const char* String::CheckString() const { return CheckStringWithSize().first; }
std::string String::ToStdString() const { return {(char*)Bytes(), static_cast<size_t>(Len())}; }
std::string_view String::ToStdStringView() const { return {(char*)Bytes(), static_cast<size_t>(Len())}; }
char* String::Render(int format, int* len) const { char* String::Render(int format, int* len) const {
// Maximum character expansion is as \xHH, so a factor of 4. // Maximum character expansion is as \xHH, so a factor of 4.
char* s = new char[n * 4 + 1]; // +1 is for final '\0' char* s = new char[n * 4 + 1]; // +1 is for final '\0'

View file

@ -91,6 +91,17 @@ public:
*/ */
std::pair<const char*, size_t> CheckStringWithSize() const; std::pair<const char*, size_t> 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 { enum render_style {
ESC_NONE = 0, ESC_NONE = 0,
ESC_ESC = (1 << 1), // '\' -> "\\" ESC_ESC = (1 << 1), // '\' -> "\\"