1 //===-- OptionValueRegex.cpp ------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "lldb/Interpreter/OptionValueRegex.h"
12 #include "lldb/Utility/Stream.h"
15 using namespace lldb_private;
17 void OptionValueRegex::DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
19 if (dump_mask & eDumpOptionType)
20 strm.Printf("(%s)", GetTypeAsCString());
21 if (dump_mask & eDumpOptionValue) {
22 if (dump_mask & eDumpOptionType)
23 strm.PutCString(" = ");
24 if (m_regex.IsValid()) {
25 llvm::StringRef regex_text = m_regex.GetText();
26 strm.Printf("%s", regex_text.str().c_str());
31 Status OptionValueRegex::SetValueFromString(llvm::StringRef value,
32 VarSetOperationType op) {
35 case eVarSetOperationInvalid:
36 case eVarSetOperationInsertBefore:
37 case eVarSetOperationInsertAfter:
38 case eVarSetOperationRemove:
39 case eVarSetOperationAppend:
40 error = OptionValue::SetValueFromString(value, op);
43 case eVarSetOperationClear:
48 case eVarSetOperationReplace:
49 case eVarSetOperationAssign:
50 if (m_regex.Compile(value)) {
51 m_value_was_set = true;
54 char regex_error[1024];
55 if (m_regex.GetErrorAsCString(regex_error, sizeof(regex_error)))
56 error.SetErrorString(regex_error);
58 error.SetErrorStringWithFormat("regex error %u",
59 m_regex.GetErrorCode());
66 lldb::OptionValueSP OptionValueRegex::DeepCopy() const {
67 return OptionValueSP(new OptionValueRegex(m_regex.GetText().str().c_str()));