1 //===-- OptionValueString.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/OptionValueString.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
22 OptionValueString::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_current_value.empty() || m_value_was_set)
31         {
32             if (dump_mask & eDumpOptionRaw)
33                 strm.Printf ("%s", m_current_value.c_str());
34             else
35                 strm.Printf ("\"%s\"", m_current_value.c_str());
36         }
37     }
38 }
39 
40 Error
41 OptionValueString::SetValueFromCString (const char *value_cstr,
42                                         VarSetOperationType op)
43 {
44     Error error;
45     switch (op)
46     {
47     case eVarSetOperationInvalid:
48     case eVarSetOperationInsertBefore:
49     case eVarSetOperationInsertAfter:
50     case eVarSetOperationRemove:
51         error = OptionValue::SetValueFromCString (value_cstr, op);
52         break;
53 
54     case eVarSetOperationAppend:
55         if (value_cstr && value_cstr[0])
56             m_current_value += value_cstr;
57         break;
58 
59     case eVarSetOperationClear:
60         Clear ();
61         break;
62 
63     case eVarSetOperationReplace:
64     case eVarSetOperationAssign:
65         m_value_was_set = true;
66         SetCurrentValue (value_cstr);
67         break;
68     }
69     return error;
70 }
71 
72 
73 lldb::OptionValueSP
74 OptionValueString::DeepCopy () const
75 {
76     return OptionValueSP(new OptionValueString(*this));
77 }
78