1 //===-- OptionValueRegex.h --------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_INTERPRETER_OPTIONVALUEREGEX_H 10 #define LLDB_INTERPRETER_OPTIONVALUEREGEX_H 11 12 #include "lldb/Interpreter/OptionValue.h" 13 #include "lldb/Utility/RegularExpression.h" 14 15 namespace lldb_private { 16 17 class OptionValueRegex : public Cloneable<OptionValueRegex, OptionValue> { 18 public: 19 OptionValueRegex(const char *value = nullptr) m_regex(value)20 : m_regex(value), m_default_regex_str(value) {} 21 22 ~OptionValueRegex() override = default; 23 24 // Virtual subclass pure virtual overrides 25 GetType()26 OptionValue::Type GetType() const override { return eTypeRegex; } 27 28 void DumpValue(const ExecutionContext *exe_ctx, Stream &strm, 29 uint32_t dump_mask) override; 30 ToJSON(const ExecutionContext * exe_ctx)31 llvm::json::Value ToJSON(const ExecutionContext *exe_ctx) override { 32 return m_regex.GetText(); 33 } 34 35 Status 36 SetValueFromString(llvm::StringRef value, 37 VarSetOperationType op = eVarSetOperationAssign) override; 38 Clear()39 void Clear() override { 40 m_regex = RegularExpression(m_default_regex_str); 41 m_value_was_set = false; 42 } 43 44 // Subclass specific functions GetCurrentValue()45 const RegularExpression *GetCurrentValue() const { 46 return (m_regex.IsValid() ? &m_regex : nullptr); 47 } 48 SetCurrentValue(const char * value)49 void SetCurrentValue(const char *value) { 50 if (value && value[0]) 51 m_regex = RegularExpression(llvm::StringRef(value)); 52 else 53 m_regex = RegularExpression(); 54 } 55 IsValid()56 bool IsValid() const { return m_regex.IsValid(); } 57 58 protected: 59 RegularExpression m_regex; 60 std::string m_default_regex_str; 61 }; 62 63 } // namespace lldb_private 64 65 #endif // LLDB_INTERPRETER_OPTIONVALUEREGEX_H 66