1//====-- UserSettingsController.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/lldb-python.h" 11 12#include <string.h> 13#include <algorithm> 14 15#include "lldb/Core/UserSettingsController.h" 16#include "lldb/Core/Error.h" 17#include "lldb/Core/RegularExpression.h" 18#include "lldb/Core/Stream.h" 19#include "lldb/Core/StreamString.h" 20#include "lldb/Interpreter/CommandInterpreter.h" 21#include "lldb/Interpreter/OptionValueString.h" 22 23using namespace lldb; 24using namespace lldb_private; 25 26 27lldb::OptionValueSP 28Properties::GetPropertyValue (const ExecutionContext *exe_ctx, 29 const char *path, 30 bool will_modify, 31 Error &error) const 32{ 33 OptionValuePropertiesSP properties_sp (GetValueProperties ()); 34 if (properties_sp) 35 return properties_sp->GetSubValue(exe_ctx, path, will_modify, error); 36 return lldb::OptionValueSP(); 37} 38 39Error 40Properties::SetPropertyValue (const ExecutionContext *exe_ctx, 41 VarSetOperationType op, 42 const char *path, 43 const char *value) 44{ 45 OptionValuePropertiesSP properties_sp (GetValueProperties ()); 46 if (properties_sp) 47 return properties_sp->SetSubValue(exe_ctx, op, path, value); 48 Error error; 49 error.SetErrorString ("no properties"); 50 return error; 51} 52 53void 54Properties::DumpAllPropertyValues (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) 55{ 56 OptionValuePropertiesSP properties_sp (GetValueProperties ()); 57 if (properties_sp) 58 return properties_sp->DumpValue (exe_ctx, strm, dump_mask); 59} 60 61void 62Properties::DumpAllDescriptions (CommandInterpreter &interpreter, 63 Stream &strm) const 64{ 65 strm.PutCString("Top level variables:\n\n"); 66 67 OptionValuePropertiesSP properties_sp (GetValueProperties ()); 68 if (properties_sp) 69 return properties_sp->DumpAllDescriptions (interpreter, strm); 70} 71 72 73 74Error 75Properties::DumpPropertyValue (const ExecutionContext *exe_ctx, Stream &strm, const char *property_path, uint32_t dump_mask) 76{ 77 OptionValuePropertiesSP properties_sp (GetValueProperties ()); 78 if (properties_sp) 79 { 80 return properties_sp->DumpPropertyValue (exe_ctx, 81 strm, 82 property_path, 83 dump_mask); 84 } 85 Error error; 86 error.SetErrorString("empty property list"); 87 return error; 88} 89 90size_t 91Properties::Apropos (const char *keyword, std::vector<const Property *> &matching_properties) const 92{ 93 OptionValuePropertiesSP properties_sp (GetValueProperties ()); 94 if (properties_sp) 95 { 96 properties_sp->Apropos (keyword, matching_properties); 97 } 98 return matching_properties.size(); 99} 100 101 102lldb::OptionValuePropertiesSP 103Properties::GetSubProperty (const ExecutionContext *exe_ctx, 104 const ConstString &name) 105{ 106 OptionValuePropertiesSP properties_sp (GetValueProperties ()); 107 if (properties_sp) 108 return properties_sp->GetSubProperty (exe_ctx, name); 109 return lldb::OptionValuePropertiesSP(); 110} 111 112