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) 20 : m_regex(value), m_default_regex_str(value) {} 21 22 ~OptionValueRegex() override = default; 23 24 // Virtual subclass pure virtual overrides 25 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 31 Status 32 SetValueFromString(llvm::StringRef value, 33 VarSetOperationType op = eVarSetOperationAssign) override; 34 35 void Clear() override { 36 m_regex = RegularExpression(m_default_regex_str); 37 m_value_was_set = false; 38 } 39 40 // Subclass specific functions 41 const RegularExpression *GetCurrentValue() const { 42 return (m_regex.IsValid() ? &m_regex : nullptr); 43 } 44 45 void SetCurrentValue(const char *value) { 46 if (value && value[0]) 47 m_regex = RegularExpression(llvm::StringRef(value)); 48 else 49 m_regex = RegularExpression(); 50 } 51 52 bool IsValid() const { return m_regex.IsValid(); } 53 54 protected: 55 RegularExpression m_regex; 56 std::string m_default_regex_str; 57 }; 58 59 } // namespace lldb_private 60 61 #endif // LLDB_INTERPRETER_OPTIONVALUEREGEX_H 62