blob: 90ae77527b2fa586bd06ccc47941dc4af0f6f317 [file] [log] [blame]
Greg Clayton73844aa2012-08-22 17:17:09 +00001//===-- OptionValueArch.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/OptionValueArch.h"
11
12// C Includes
13// C++ Includes
14// Other libraries and framework includes
15// Project includes
16#include "lldb/Core/FormatManager.h"
17#include "lldb/Core/State.h"
18#include "lldb/Interpreter/Args.h"
19#include "lldb/Interpreter/CommandCompletions.h"
20
21using namespace lldb;
22using namespace lldb_private;
23
24void
25OptionValueArch::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
26{
27 if (dump_mask & eDumpOptionType)
28 strm.Printf ("(%s)", GetTypeAsCString ());
29 if (dump_mask & eDumpOptionValue)
30 {
31 if (dump_mask & eDumpOptionType)
32 strm.PutCString (" = ");
33
34 if (m_current_value.IsValid())
35 {
36 const char *arch_name = m_current_value.GetArchitectureName();
37 if (arch_name)
38 strm.PutCString (arch_name);
39 }
40 }
41}
42
43Error
44OptionValueArch::SetValueFromCString (const char *value_cstr, VarSetOperationType op)
45{
46 Error error;
47 switch (op)
48 {
49 case eVarSetOperationClear:
50 Clear();
51 break;
52
53 case eVarSetOperationReplace:
54 case eVarSetOperationAssign:
55 if (value_cstr && value_cstr[0])
56 {
57 if (m_current_value.SetTriple (value_cstr))
58 m_value_was_set = true;
59 else
60 error.SetErrorStringWithFormat("unsupported architecture '%s'", value_cstr);
61 }
62 else
63 {
64 error.SetErrorString("invalid value string");
65 }
66 break;
67
68 case eVarSetOperationInsertBefore:
69 case eVarSetOperationInsertAfter:
70 case eVarSetOperationRemove:
71 case eVarSetOperationAppend:
72 case eVarSetOperationInvalid:
73 error = OptionValue::SetValueFromCString (value_cstr, op);
74 break;
75 }
76 return error;
77}
78
79lldb::OptionValueSP
80OptionValueArch::DeepCopy () const
81{
82 return OptionValueSP(new OptionValueArch(*this));
83}
84
85
86size_t
87OptionValueArch::AutoComplete (CommandInterpreter &interpreter,
88 const char *s,
89 int match_start_point,
90 int max_return_elements,
91 bool &word_complete,
92 StringList &matches)
93{
94 word_complete = false;
95 matches.Clear();
96 CommandCompletions::InvokeCommonCompletionCallbacks (interpreter,
97 CommandCompletions::eArchitectureCompletion,
98 s,
99 match_start_point,
100 max_return_elements,
101 NULL,
102 word_complete,
103 matches);
104 return matches.GetSize();
105}
106
107
108
109