summaryrefslogtreecommitdiffstats
path: root/lldb/include
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/include')
-rw-r--r--lldb/include/lldb/Core/Module.h8
-rw-r--r--lldb/include/lldb/Core/PluginManager.h41
-rw-r--r--lldb/include/lldb/Symbol/ClangASTContext.h5
-rw-r--r--lldb/include/lldb/Symbol/SymbolFile.h7
-rw-r--r--lldb/include/lldb/Symbol/TypeSystem.h20
-rw-r--r--lldb/include/lldb/Target/Language.h9
-rw-r--r--lldb/include/lldb/lldb-private-interfaces.h5
7 files changed, 52 insertions, 43 deletions
diff --git a/lldb/include/lldb/Core/Module.h b/lldb/include/lldb/Core/Module.h
index 3e0095f3a6e..bc57906696d 100644
--- a/lldb/include/lldb/Core/Module.h
+++ b/lldb/include/lldb/Core/Module.h
@@ -454,6 +454,14 @@ public:
llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files,
TypeList &types);
+ /// Find types by name.
+ ///
+ /// This behaves like the other FindTypes method but allows to
+ /// specify a DeclContext and a language for the type being searched
+ /// for.
+ size_t FindTypes(llvm::ArrayRef<CompilerContext> pattern,
+ LanguageSet languages, bool append, TypeMap &types);
+
lldb::TypeSP FindFirstType(const SymbolContext &sc,
ConstString type_name, bool exact_match);
diff --git a/lldb/include/lldb/Core/PluginManager.h b/lldb/include/lldb/Core/PluginManager.h
index 76484c3d606..5b859752b3c 100644
--- a/lldb/include/lldb/Core/PluginManager.h
+++ b/lldb/include/lldb/Core/PluginManager.h
@@ -385,10 +385,10 @@ public:
GetInstrumentationRuntimeCreateCallbackForPluginName(ConstString name);
// TypeSystem
- static bool RegisterPlugin(
- ConstString name, const char *description,
- TypeSystemCreateInstance create_callback,
- TypeSystemEnumerateSupportedLanguages enumerate_languages_callback);
+ static bool RegisterPlugin(ConstString name, const char *description,
+ TypeSystemCreateInstance create_callback,
+ LanguageSet supported_languages_for_types,
+ LanguageSet supported_languages_for_expressions);
static bool UnregisterPlugin(TypeSystemCreateInstance create_callback);
@@ -398,18 +398,14 @@ public:
static TypeSystemCreateInstance
GetTypeSystemCreateCallbackForPluginName(ConstString name);
- static TypeSystemEnumerateSupportedLanguages
- GetTypeSystemEnumerateSupportedLanguagesCallbackAtIndex(uint32_t idx);
+ static LanguageSet GetAllTypeSystemSupportedLanguagesForTypes();
- static TypeSystemEnumerateSupportedLanguages
- GetTypeSystemEnumerateSupportedLanguagesCallbackForPluginName(
- ConstString name);
+ static LanguageSet GetAllTypeSystemSupportedLanguagesForExpressions();
// REPL
- static bool
- RegisterPlugin(ConstString name, const char *description,
- REPLCreateInstance create_callback,
- REPLEnumerateSupportedLanguages enumerate_languages_callback);
+ static bool RegisterPlugin(ConstString name, const char *description,
+ REPLCreateInstance create_callback,
+ LanguageSet supported_languages);
static bool UnregisterPlugin(REPLCreateInstance create_callback);
@@ -418,12 +414,7 @@ public:
static REPLCreateInstance
GetREPLCreateCallbackForPluginName(ConstString name);
- static REPLEnumerateSupportedLanguages
- GetREPLEnumerateSupportedLanguagesCallbackAtIndex(uint32_t idx);
-
- static REPLEnumerateSupportedLanguages
- GetREPLSystemEnumerateSupportedLanguagesCallbackForPluginName(
- ConstString name);
+ static LanguageSet GetREPLAllTypeSystemSupportedLanguages();
// Some plug-ins might register a DebuggerInitializeCallback callback when
// registering the plug-in. After a new Debugger instance is created, this
@@ -441,32 +432,28 @@ public:
ConstString description, bool is_global_property);
static lldb::OptionValuePropertiesSP
- GetSettingForPlatformPlugin(Debugger &debugger,
- ConstString setting_name);
+ GetSettingForPlatformPlugin(Debugger &debugger, ConstString setting_name);
static bool CreateSettingForPlatformPlugin(
Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
ConstString description, bool is_global_property);
static lldb::OptionValuePropertiesSP
- GetSettingForProcessPlugin(Debugger &debugger,
- ConstString setting_name);
+ GetSettingForProcessPlugin(Debugger &debugger, ConstString setting_name);
static bool CreateSettingForProcessPlugin(
Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
ConstString description, bool is_global_property);
static lldb::OptionValuePropertiesSP
- GetSettingForSymbolFilePlugin(Debugger &debugger,
- ConstString setting_name);
+ GetSettingForSymbolFilePlugin(Debugger &debugger, ConstString setting_name);
static bool CreateSettingForSymbolFilePlugin(
Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
ConstString description, bool is_global_property);
static lldb::OptionValuePropertiesSP
- GetSettingForJITLoaderPlugin(Debugger &debugger,
- ConstString setting_name);
+ GetSettingForJITLoaderPlugin(Debugger &debugger, ConstString setting_name);
static bool CreateSettingForJITLoaderPlugin(
Debugger &debugger, const lldb::OptionValuePropertiesSP &properties_sp,
diff --git a/lldb/include/lldb/Symbol/ClangASTContext.h b/lldb/include/lldb/Symbol/ClangASTContext.h
index 6b4c5d5e6a7..f4912050ff9 100644
--- a/lldb/include/lldb/Symbol/ClangASTContext.h
+++ b/lldb/include/lldb/Symbol/ClangASTContext.h
@@ -68,9 +68,8 @@ public:
static lldb::TypeSystemSP CreateInstance(lldb::LanguageType language,
Module *module, Target *target);
- static void EnumerateSupportedLanguages(
- std::set<lldb::LanguageType> &languages_for_types,
- std::set<lldb::LanguageType> &languages_for_expressions);
+ static LanguageSet GetSupportedLanguagesForTypes();
+ static LanguageSet GetSupportedLanguagesForExpressions();
static void Initialize();
diff --git a/lldb/include/lldb/Symbol/SymbolFile.h b/lldb/include/lldb/Symbol/SymbolFile.h
index 0a5dcc3893c..ce8da8014c5 100644
--- a/lldb/include/lldb/Symbol/SymbolFile.h
+++ b/lldb/include/lldb/Symbol/SymbolFile.h
@@ -17,6 +17,7 @@
#include "lldb/Symbol/SourceModule.h"
#include "lldb/Symbol/Type.h"
#include "lldb/Symbol/TypeList.h"
+#include "lldb/Symbol/TypeSystem.h"
#include "lldb/lldb-private.h"
#include "llvm/ADT/DenseSet.h"
@@ -189,7 +190,11 @@ public:
bool append, uint32_t max_matches,
llvm::DenseSet<lldb_private::SymbolFile *> &searched_symbol_files,
TypeMap &types);
- virtual size_t FindTypes(llvm::ArrayRef<CompilerContext> pattern, bool append,
+
+ /// Find types specified by a CompilerContextPattern.
+ /// \param languages Only return results in these languages.
+ virtual size_t FindTypes(llvm::ArrayRef<CompilerContext> pattern,
+ LanguageSet languages, bool append,
TypeMap &types);
virtual void
diff --git a/lldb/include/lldb/Symbol/TypeSystem.h b/lldb/include/lldb/Symbol/TypeSystem.h
index 9bbdc9cf27e..ccd4d8e17be 100644
--- a/lldb/include/lldb/Symbol/TypeSystem.h
+++ b/lldb/include/lldb/Symbol/TypeSystem.h
@@ -15,6 +15,7 @@
#include <string>
#include "llvm/ADT/APSInt.h"
+#include "llvm/ADT/SmallBitVector.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Error.h"
@@ -30,7 +31,24 @@ class PDBASTParser;
namespace lldb_private {
-// Interface for representing the Type Systems in different languages.
+/// A SmallBitVector that represents a set of source languages (\p
+/// lldb::LanguageType). Each lldb::LanguageType is represented by
+/// the bit with the position of its enumerator. The largest
+/// LanguageType is < 64, so this is space-efficient and on 64-bit
+/// architectures a LanguageSet can be completely stack-allocated.
+struct LanguageSet {
+ llvm::SmallBitVector bitvector;
+ LanguageSet();
+
+ /// If the set contains a single language only, return it.
+ llvm::Optional<lldb::LanguageType> GetSingularLanguage();
+ void Insert(lldb::LanguageType language);
+ bool Empty() const;
+ size_t Size() const;
+ bool operator[](unsigned i) const;
+};
+
+/// Interface for representing the Type Systems in different languages.
class TypeSystem : public PluginInterface {
public:
// Intrusive type system that allows us to use llvm casting.
diff --git a/lldb/include/lldb/Target/Language.h b/lldb/include/lldb/Target/Language.h
index e18beb4885a..b49e96eeac1 100644
--- a/lldb/include/lldb/Target/Language.h
+++ b/lldb/include/lldb/Target/Language.h
@@ -267,12 +267,9 @@ public:
static std::set<lldb::LanguageType> GetSupportedLanguages();
- static void GetLanguagesSupportingTypeSystems(
- std::set<lldb::LanguageType> &languages,
- std::set<lldb::LanguageType> &languages_for_expressions);
-
- static void
- GetLanguagesSupportingREPLs(std::set<lldb::LanguageType> &languages);
+ static LanguageSet GetLanguagesSupportingTypeSystems();
+ static LanguageSet GetLanguagesSupportingTypeSystemsForExpressions();
+ static LanguageSet GetLanguagesSupportingREPLs();
protected:
// Classes that inherit from Language can see and modify these
diff --git a/lldb/include/lldb/lldb-private-interfaces.h b/lldb/include/lldb/lldb-private-interfaces.h
index 717697530b5..04b78bcc19f 100644
--- a/lldb/include/lldb/lldb-private-interfaces.h
+++ b/lldb/include/lldb/lldb-private-interfaces.h
@@ -102,11 +102,6 @@ typedef lldb::REPLSP (*REPLCreateInstance)(Status &error,
lldb::LanguageType language,
Debugger *debugger, Target *target,
const char *repl_options);
-typedef void (*TypeSystemEnumerateSupportedLanguages)(
- std::set<lldb::LanguageType> &languages_for_types,
- std::set<lldb::LanguageType> &languages_for_expressions);
-typedef void (*REPLEnumerateSupportedLanguages)(
- std::set<lldb::LanguageType> &languages);
typedef int (*ComparisonFunction)(const void *, const void *);
typedef void (*DebuggerInitializeCallback)(Debugger &debugger);
OpenPOWER on IntegriCloud