[Lldb-commits] [lldb] Reapply "[lldb-dap] Validate utf8 protocol messages." (#181930) (PR #182056)
Sergei Druzhkov via lldb-commits
lldb-commits at lists.llvm.org
Wed Feb 18 23:52:11 PST 2026
================
@@ -37,10 +40,93 @@ using Id = uint64_t;
/// the current session.
static constexpr Id kCalculateSeq = UINT64_MAX;
+/// A wrapper around a 'std::string' to ensure the contents are valid utf8
+/// during serialization.
+class String {
+public:
+ String() = default;
+ String(const std::string &str) : m_str(str) {}
+ String(llvm::StringRef str) : m_str(str.str()) {}
+ String(const char *str) : m_str(str) {}
+ String(const llvm::formatv_object_base &payload) : m_str(payload.str()) {}
+ String(const String &) = default;
+ String(String &&str) : m_str(std::move(str.m_str)) {}
+ String(std::string &&str) : m_str(std::move(str)) {}
+
+ ~String() = default;
+
+ String &operator=(const String &) = default;
+ String &operator=(String &&Other) {
+ m_str = std::move(Other.m_str);
+ return *this;
+ }
+
+ /// Conversion Operators
+ /// @{
+ operator llvm::Twine() const { return m_str; }
+ operator std::string() const { return m_str; }
+ operator llvm::StringRef() const { return {m_str}; }
+ /// @}
+
+ void clear() { m_str.clear(); }
+ bool empty() const { return m_str.empty(); }
+ const char *c_str() const { return m_str.c_str(); }
+ const char *data() const { return m_str.data(); }
+ std::string str() const { return m_str; }
----------------
DrSergei wrote:
I think we can mark these methods `nodiscard`, but it's not necessary
https://github.com/llvm/llvm-project/pull/182056
More information about the lldb-commits
mailing list