diff options
Diffstat (limited to 'contrib/llvm-project/lldb/source/Symbol/CompilerDeclContext.cpp')
-rw-r--r-- | contrib/llvm-project/lldb/source/Symbol/CompilerDeclContext.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/contrib/llvm-project/lldb/source/Symbol/CompilerDeclContext.cpp b/contrib/llvm-project/lldb/source/Symbol/CompilerDeclContext.cpp new file mode 100644 index 000000000000..b40a08e9b195 --- /dev/null +++ b/contrib/llvm-project/lldb/source/Symbol/CompilerDeclContext.cpp @@ -0,0 +1,79 @@ +//===-- CompilerDeclContext.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 "lldb/Symbol/CompilerDeclContext.h" +#include "lldb/Symbol/CompilerDecl.h" +#include "lldb/Symbol/TypeSystem.h" +#include <vector> + +using namespace lldb_private; + +std::vector<CompilerDecl> +CompilerDeclContext::FindDeclByName(ConstString name, + const bool ignore_using_decls) { + if (IsValid()) + return m_type_system->DeclContextFindDeclByName(m_opaque_decl_ctx, name, + ignore_using_decls); + return std::vector<CompilerDecl>(); +} + +ConstString CompilerDeclContext::GetName() const { + if (IsValid()) + return m_type_system->DeclContextGetName(m_opaque_decl_ctx); + return ConstString(); +} + +ConstString CompilerDeclContext::GetScopeQualifiedName() const { + if (IsValid()) + return m_type_system->DeclContextGetScopeQualifiedName(m_opaque_decl_ctx); + return ConstString(); +} + +bool CompilerDeclContext::IsClassMethod() { + if (IsValid()) + return m_type_system->DeclContextIsClassMethod(m_opaque_decl_ctx); + return false; +} + +lldb::LanguageType CompilerDeclContext::GetLanguage() { + if (IsValid()) + return m_type_system->DeclContextGetLanguage(m_opaque_decl_ctx); + return {}; +} + +bool CompilerDeclContext::IsContainedInLookup(CompilerDeclContext other) const { + if (!IsValid()) + return false; + + // If the other context is just the current context, we don't need to go + // over the type system to know that the lookup is identical. + if (this == &other) + return true; + + return m_type_system->DeclContextIsContainedInLookup(m_opaque_decl_ctx, + other.m_opaque_decl_ctx); +} + +std::vector<lldb_private::CompilerContext> +CompilerDeclContext::GetCompilerContext() const { + if (IsValid()) + return m_type_system->DeclContextGetCompilerContext(m_opaque_decl_ctx); + return {}; +} + +bool lldb_private::operator==(const lldb_private::CompilerDeclContext &lhs, + const lldb_private::CompilerDeclContext &rhs) { + return lhs.GetTypeSystem() == rhs.GetTypeSystem() && + lhs.GetOpaqueDeclContext() == rhs.GetOpaqueDeclContext(); +} + +bool lldb_private::operator!=(const lldb_private::CompilerDeclContext &lhs, + const lldb_private::CompilerDeclContext &rhs) { + return lhs.GetTypeSystem() != rhs.GetTypeSystem() || + lhs.GetOpaqueDeclContext() != rhs.GetOpaqueDeclContext(); +} |