summaryrefslogtreecommitdiffstats
path: root/lldb/source/Interpreter/OptionValueLanguage.cpp
diff options
context:
space:
mode:
authorEnrico Granata <egranata@apple.com>2015-02-20 19:46:30 +0000
committerEnrico Granata <egranata@apple.com>2015-02-20 19:46:30 +0000
commit8fdf78594eaa453de9b6c92f24ba297f482312d9 (patch)
treeb62f77d6ae993c39b3199b20f9fdfa5f17d9c0b3 /lldb/source/Interpreter/OptionValueLanguage.cpp
parenta070ee5ef52f519772e02be64c307857994d6daf (diff)
downloadbcm5719-llvm-8fdf78594eaa453de9b6c92f24ba297f482312d9.tar.gz
bcm5719-llvm-8fdf78594eaa453de9b6c92f24ba297f482312d9.zip
Add an OptionValueLanguage class
llvm-svn: 230046
Diffstat (limited to 'lldb/source/Interpreter/OptionValueLanguage.cpp')
-rw-r--r--lldb/source/Interpreter/OptionValueLanguage.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/lldb/source/Interpreter/OptionValueLanguage.cpp b/lldb/source/Interpreter/OptionValueLanguage.cpp
new file mode 100644
index 00000000000..fd46553dabd
--- /dev/null
+++ b/lldb/source/Interpreter/OptionValueLanguage.cpp
@@ -0,0 +1,73 @@
+//===-- OptionValueFormat.cpp -----------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Interpreter/OptionValueLanguage.h"
+
+// C Includes
+// C++ Includes
+// Other libraries and framework includes
+// Project includes
+#include "lldb/Core/Stream.h"
+#include "lldb/DataFormatters/FormatManager.h"
+#include "lldb/Interpreter/Args.h"
+#include "lldb/Target/LanguageRuntime.h"
+
+using namespace lldb;
+using namespace lldb_private;
+
+void
+OptionValueLanguage::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
+{
+ if (dump_mask & eDumpOptionType)
+ strm.Printf ("(%s)", GetTypeAsCString ());
+ if (dump_mask & eDumpOptionValue)
+ {
+ if (dump_mask & eDumpOptionType)
+ strm.PutCString (" = ");
+ strm.PutCString (LanguageRuntime::GetNameForLanguageType(m_current_value));
+ }
+}
+
+Error
+OptionValueLanguage::SetValueFromString (llvm::StringRef value, VarSetOperationType op)
+{
+ Error error;
+ switch (op)
+ {
+ case eVarSetOperationClear:
+ Clear();
+ break;
+
+ case eVarSetOperationReplace:
+ case eVarSetOperationAssign:
+ {
+ LanguageType new_type = LanguageRuntime::GetLanguageTypeFromString(value.data());
+ m_value_was_set = true;
+ m_current_value = new_type;
+ }
+ break;
+
+ case eVarSetOperationInsertBefore:
+ case eVarSetOperationInsertAfter:
+ case eVarSetOperationRemove:
+ case eVarSetOperationAppend:
+ case eVarSetOperationInvalid:
+ error = OptionValue::SetValueFromString(value, op);
+ break;
+ }
+ return error;
+}
+
+
+lldb::OptionValueSP
+OptionValueLanguage::DeepCopy () const
+{
+ return OptionValueSP(new OptionValueLanguage(*this));
+}
+
OpenPOWER on IntegriCloud