1 //===-- OptionValueRegex.cpp ------------------------------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #include "lldb/Interpreter/OptionValueRegex.h"
11
12 // C Includes
13 // C++ Includes
14 // Other libraries and framework includes
15 // Project includes
16 #include "lldb/Core/Stream.h"
17
18 using namespace lldb;
19 using namespace lldb_private;
20
21 void
DumpValue(const ExecutionContext * exe_ctx,Stream & strm,uint32_t dump_mask)22 OptionValueRegex::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
23 {
24 if (dump_mask & eDumpOptionType)
25 strm.Printf ("(%s)", GetTypeAsCString ());
26 if (dump_mask & eDumpOptionValue)
27 {
28 if (dump_mask & eDumpOptionType)
29 strm.PutCString (" = ");
30 if (m_regex.IsValid())
31 {
32 const char *regex_text = m_regex.GetText();
33 if (regex_text && regex_text[0])
34 strm.Printf ("%s", regex_text);
35 }
36 else
37 {
38
39 }
40 }
41 }
42
43 Error
SetValueFromCString(const char * value_cstr,VarSetOperationType op)44 OptionValueRegex::SetValueFromCString (const char *value_cstr,
45 VarSetOperationType op)
46 {
47 Error error;
48 switch (op)
49 {
50 case eVarSetOperationInvalid:
51 case eVarSetOperationInsertBefore:
52 case eVarSetOperationInsertAfter:
53 case eVarSetOperationRemove:
54 case eVarSetOperationAppend:
55 error = OptionValue::SetValueFromCString (value_cstr, op);
56 break;
57
58 case eVarSetOperationClear:
59 Clear();
60 break;
61
62 case eVarSetOperationReplace:
63 case eVarSetOperationAssign:
64 if (m_regex.Compile (value_cstr, m_regex.GetCompileFlags()))
65 {
66 m_value_was_set = true;
67 }
68 else
69 {
70 char regex_error[1024];
71 if (m_regex.GetErrorAsCString(regex_error, sizeof(regex_error)))
72 error.SetErrorString (regex_error);
73 else
74 error.SetErrorStringWithFormat ("regex error %u", m_regex.GetErrorCode());
75 }
76 break;
77 }
78 return error;
79 }
80
81
82 lldb::OptionValueSP
DeepCopy() const83 OptionValueRegex::DeepCopy () const
84 {
85 return OptionValueSP(new OptionValueRegex(m_regex.GetText(), m_regex.GetCompileFlags()));
86 }
87