================ @@ -0,0 +1,271 @@ +//===-- SymbolLocatorScripted.cpp +//------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "SymbolLocatorScripted.h" + +#include "lldb/Core/Debugger.h" +#include "lldb/Core/Module.h" +#include "lldb/Core/PluginManager.h" +#include "lldb/Interpreter/OptionValueString.h" +#include "lldb/Interpreter/ScriptInterpreter.h" +#include "lldb/Utility/LLDBLog.h" +#include "lldb/Utility/Log.h" + +#include <unordered_map> + +using namespace lldb; +using namespace lldb_private; + +LLDB_PLUGIN_DEFINE(SymbolLocatorScripted) + +namespace { + +#define LLDB_PROPERTIES_symbollocatorscripted +#include "SymbolLocatorScriptedProperties.inc" + +enum { +#define LLDB_PROPERTIES_symbollocatorscripted +#include "SymbolLocatorScriptedPropertiesEnum.inc" +}; + +class PluginProperties : public Properties { +public: + static llvm::StringRef GetSettingName() { + return SymbolLocatorScripted::GetPluginNameStatic(); + } + + PluginProperties() { + m_collection_sp = std::make_shared<OptionValueProperties>(GetSettingName()); + m_collection_sp->Initialize(g_symbollocatorscripted_properties_def); + + m_collection_sp->SetValueChangedCallback( + ePropertyScriptClass, [this] { ScriptClassChangedCallback(); }); + } + + llvm::StringRef GetScriptClassName() const { + const OptionValueString *s = + m_collection_sp->GetPropertyAtIndexAsOptionValueString( + ePropertyScriptClass); + if (s) + return s->GetCurrentValueAsRef(); + return {}; + } ---------------- medismailben wrote:
Settings aren't very discoverable by users and they're hard to used when scripting. Instead of making the scripted symbol locator a global setting, I'd register it with the target with: - New subcommand `target symbols scripted register -C "myscriptedsymbollocatormodule.myscriptedsymbollocatormodule" -k "key1" -v "val1"`. For completely, we should also have a `clear` subcommand and may be an `info` subcommand` if the scripted symbol locator can describe itself. - `SBTarget::RegisterScriptedSymbolLocator(const char *class_name, const SBStructuredData& args)` & `SBTarget::ClearScriptedSymbolLocator()` https://github.com/llvm/llvm-project/pull/181334 _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
