summaryrefslogtreecommitdiffstats
path: root/source/Core/UserSettingsController.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Core/UserSettingsController.cpp')
-rw-r--r--source/Core/UserSettingsController.cpp111
1 files changed, 111 insertions, 0 deletions
diff --git a/source/Core/UserSettingsController.cpp b/source/Core/UserSettingsController.cpp
new file mode 100644
index 0000000..63a5dd9
--- /dev/null
+++ b/source/Core/UserSettingsController.cpp
@@ -0,0 +1,111 @@
+//====-- UserSettingsController.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/lldb-python.h"
+
+#include <string.h>
+#include <algorithm>
+
+#include "lldb/Core/UserSettingsController.h"
+#include "lldb/Core/Error.h"
+#include "lldb/Core/RegularExpression.h"
+#include "lldb/Core/Stream.h"
+#include "lldb/Core/StreamString.h"
+#include "lldb/Interpreter/CommandInterpreter.h"
+#include "lldb/Interpreter/OptionValueString.h"
+
+using namespace lldb;
+using namespace lldb_private;
+
+
+lldb::OptionValueSP
+Properties::GetPropertyValue (const ExecutionContext *exe_ctx,
+ const char *path,
+ bool will_modify,
+ Error &error) const
+{
+ OptionValuePropertiesSP properties_sp (GetValueProperties ());
+ if (properties_sp)
+ return properties_sp->GetSubValue(exe_ctx, path, will_modify, error);
+ return lldb::OptionValueSP();
+}
+
+Error
+Properties::SetPropertyValue (const ExecutionContext *exe_ctx,
+ VarSetOperationType op,
+ const char *path,
+ const char *value)
+{
+ OptionValuePropertiesSP properties_sp (GetValueProperties ());
+ if (properties_sp)
+ return properties_sp->SetSubValue(exe_ctx, op, path, value);
+ Error error;
+ error.SetErrorString ("no properties");
+ return error;
+}
+
+void
+Properties::DumpAllPropertyValues (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
+{
+ OptionValuePropertiesSP properties_sp (GetValueProperties ());
+ if (properties_sp)
+ return properties_sp->DumpValue (exe_ctx, strm, dump_mask);
+}
+
+void
+Properties::DumpAllDescriptions (CommandInterpreter &interpreter,
+ Stream &strm) const
+{
+ strm.PutCString("Top level variables:\n\n");
+
+ OptionValuePropertiesSP properties_sp (GetValueProperties ());
+ if (properties_sp)
+ return properties_sp->DumpAllDescriptions (interpreter, strm);
+}
+
+
+
+Error
+Properties::DumpPropertyValue (const ExecutionContext *exe_ctx, Stream &strm, const char *property_path, uint32_t dump_mask)
+{
+ OptionValuePropertiesSP properties_sp (GetValueProperties ());
+ if (properties_sp)
+ {
+ return properties_sp->DumpPropertyValue (exe_ctx,
+ strm,
+ property_path,
+ dump_mask);
+ }
+ Error error;
+ error.SetErrorString("empty property list");
+ return error;
+}
+
+size_t
+Properties::Apropos (const char *keyword, std::vector<const Property *> &matching_properties) const
+{
+ OptionValuePropertiesSP properties_sp (GetValueProperties ());
+ if (properties_sp)
+ {
+ properties_sp->Apropos (keyword, matching_properties);
+ }
+ return matching_properties.size();
+}
+
+
+lldb::OptionValuePropertiesSP
+Properties::GetSubProperty (const ExecutionContext *exe_ctx,
+ const ConstString &name)
+{
+ OptionValuePropertiesSP properties_sp (GetValueProperties ());
+ if (properties_sp)
+ return properties_sp->GetSubProperty (exe_ctx, name);
+ return lldb::OptionValuePropertiesSP();
+}
+
OpenPOWER on IntegriCloud