diff options
author | 2020-08-03 14:33:06 +0000 | |
---|---|---|
committer | 2020-08-03 14:33:06 +0000 | |
commit | 061da546b983eb767bad15e67af1174fb0bcf31c (patch) | |
tree | 83c78b820819d70aa40c36d90447978b300078c5 /gnu/llvm/lldb/source/Symbol/CompilerDeclContext.cpp | |
parent | Import LLVM 10.0.0 release including clang, lld and lldb. (diff) | |
download | wireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.tar.xz wireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.zip |
Import LLVM 10.0.0 release including clang, lld and lldb.
ok hackroom
tested by plenty
Diffstat (limited to 'gnu/llvm/lldb/source/Symbol/CompilerDeclContext.cpp')
-rw-r--r-- | gnu/llvm/lldb/source/Symbol/CompilerDeclContext.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/source/Symbol/CompilerDeclContext.cpp b/gnu/llvm/lldb/source/Symbol/CompilerDeclContext.cpp new file mode 100644 index 00000000000..581e0872a6a --- /dev/null +++ b/gnu/llvm/lldb/source/Symbol/CompilerDeclContext.cpp @@ -0,0 +1,70 @@ +//===-- CompilerDeclContext.cpp ---------------------------------*- C++ -*-===// +// +// 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(lldb::LanguageType *language_ptr, + bool *is_instance_method_ptr, + ConstString *language_object_name_ptr) { + if (IsValid()) + return m_type_system->DeclContextIsClassMethod( + m_opaque_decl_ctx, language_ptr, is_instance_method_ptr, + language_object_name_ptr); + return false; +} + +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); +} + +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(); +} |