blob: 78b7d1de81d9c14b6d2ccdac1d1e23a8cd068a90 [file] [log] [blame]
Enrico Granata8fdf7852015-02-20 19:46:30 +00001//===-- OptionValueFormat.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/OptionValueLanguage.h"
11
12// C Includes
13// C++ Includes
14// Other libraries and framework includes
15// Project includes
16#include "lldb/Core/Stream.h"
17#include "lldb/DataFormatters/FormatManager.h"
18#include "lldb/Interpreter/Args.h"
Jim Ingham0e0984e2015-09-02 01:06:46 +000019#include "lldb/Target/Language.h"
Enrico Granata8fdf7852015-02-20 19:46:30 +000020
21using namespace lldb;
22using namespace lldb_private;
23
24void
25OptionValueLanguage::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 (" = ");
Jim Ingham0e0984e2015-09-02 01:06:46 +000033 strm.PutCString (Language::GetNameForLanguageType(m_current_value));
Enrico Granata8fdf7852015-02-20 19:46:30 +000034 }
35}
36
37Error
38OptionValueLanguage::SetValueFromString (llvm::StringRef value, VarSetOperationType op)
39{
40 Error error;
41 switch (op)
42 {
43 case eVarSetOperationClear:
44 Clear();
45 break;
46
47 case eVarSetOperationReplace:
48 case eVarSetOperationAssign:
49 {
Dawn Perchik23b1dec2015-07-21 22:05:07 +000050 ConstString lang_name(value.trim());
Jim Ingham0e0984e2015-09-02 01:06:46 +000051 LanguageType new_type = Language::GetLanguageTypeFromString(lang_name.GetCString());
Dawn Perchik23b1dec2015-07-21 22:05:07 +000052 if (new_type)
53 {
54 m_value_was_set = true;
55 m_current_value = new_type;
56 }
57 else
58 {
59 StreamString error_strm;
60 error_strm.Printf("invalid language type '%s', ", value.str().c_str());
61 error_strm.Printf("valid values are:\n");
Jim Ingham0e0984e2015-09-02 01:06:46 +000062 Language::PrintAllLanguages(error_strm, " ", "\n");
Dawn Perchik23b1dec2015-07-21 22:05:07 +000063 error.SetErrorString(error_strm.GetData());
64 }
Enrico Granata8fdf7852015-02-20 19:46:30 +000065 }
66 break;
67
68 case eVarSetOperationInsertBefore:
69 case eVarSetOperationInsertAfter:
70 case eVarSetOperationRemove:
71 case eVarSetOperationAppend:
72 case eVarSetOperationInvalid:
73 error = OptionValue::SetValueFromString(value, op);
74 break;
75 }
76 return error;
77}
78
79
80lldb::OptionValueSP
81OptionValueLanguage::DeepCopy () const
82{
83 return OptionValueSP(new OptionValueLanguage(*this));
84}
85