80 lines · cpp
1//===-- CompilerDeclContext.cpp -------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "lldb/Symbol/CompilerDeclContext.h"10#include "lldb/Symbol/CompilerDecl.h"11#include "lldb/Symbol/TypeSystem.h"12#include <vector>13 14using namespace lldb_private;15 16std::vector<CompilerDecl>17CompilerDeclContext::FindDeclByName(ConstString name,18 const bool ignore_using_decls) {19 if (IsValid())20 return m_type_system->DeclContextFindDeclByName(m_opaque_decl_ctx, name,21 ignore_using_decls);22 return std::vector<CompilerDecl>();23}24 25ConstString CompilerDeclContext::GetName() const {26 if (IsValid())27 return m_type_system->DeclContextGetName(m_opaque_decl_ctx);28 return ConstString();29}30 31ConstString CompilerDeclContext::GetScopeQualifiedName() const {32 if (IsValid())33 return m_type_system->DeclContextGetScopeQualifiedName(m_opaque_decl_ctx);34 return ConstString();35}36 37bool CompilerDeclContext::IsClassMethod() {38 if (IsValid())39 return m_type_system->DeclContextIsClassMethod(m_opaque_decl_ctx);40 return false;41}42 43lldb::LanguageType CompilerDeclContext::GetLanguage() {44 if (IsValid())45 return m_type_system->DeclContextGetLanguage(m_opaque_decl_ctx);46 return {};47}48 49bool CompilerDeclContext::IsContainedInLookup(CompilerDeclContext other) const {50 if (!IsValid())51 return false;52 53 // If the other context is just the current context, we don't need to go54 // over the type system to know that the lookup is identical.55 if (this == &other)56 return true;57 58 return m_type_system->DeclContextIsContainedInLookup(m_opaque_decl_ctx,59 other.m_opaque_decl_ctx);60}61 62std::vector<lldb_private::CompilerContext>63CompilerDeclContext::GetCompilerContext() const {64 if (IsValid())65 return m_type_system->DeclContextGetCompilerContext(m_opaque_decl_ctx);66 return {};67}68 69bool lldb_private::operator==(const lldb_private::CompilerDeclContext &lhs,70 const lldb_private::CompilerDeclContext &rhs) {71 return lhs.GetTypeSystem() == rhs.GetTypeSystem() &&72 lhs.GetOpaqueDeclContext() == rhs.GetOpaqueDeclContext();73}74 75bool lldb_private::operator!=(const lldb_private::CompilerDeclContext &lhs,76 const lldb_private::CompilerDeclContext &rhs) {77 return lhs.GetTypeSystem() != rhs.GetTypeSystem() ||78 lhs.GetOpaqueDeclContext() != rhs.GetOpaqueDeclContext();79}80