2015-08-25 07:46:31 +08:00
|
|
|
//===-- CompilerDeclContext.cpp ---------------------------------*- C++ -*-===//
|
|
|
|
//
|
|
|
|
// The LLVM Compiler Infrastructure
|
|
|
|
//
|
|
|
|
// This file is distributed under the University of Illinois Open Source
|
|
|
|
// License. See LICENSE.TXT for details.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
|
|
#include "lldb/Symbol/CompilerDeclContext.h"
|
2015-09-16 07:44:17 +08:00
|
|
|
#include "lldb/Symbol/CompilerDecl.h"
|
2015-08-25 07:46:31 +08:00
|
|
|
#include "lldb/Symbol/TypeSystem.h"
|
2015-09-16 07:44:17 +08:00
|
|
|
#include <vector>
|
2015-08-25 07:46:31 +08:00
|
|
|
|
|
|
|
using namespace lldb_private;
|
|
|
|
|
2015-09-16 07:44:17 +08:00
|
|
|
std::vector<CompilerDecl>
|
|
|
|
CompilerDeclContext::FindDeclByName (ConstString name)
|
|
|
|
{
|
|
|
|
std::vector<CompilerDecl> found_decls;
|
|
|
|
if (IsValid())
|
|
|
|
{
|
|
|
|
std::vector<void *> found_opaque_decls = m_type_system->DeclContextFindDeclByName(m_opaque_decl_ctx, name);
|
|
|
|
for (void *opaque_decl : found_opaque_decls)
|
|
|
|
found_decls.push_back(CompilerDecl(m_type_system, opaque_decl));
|
|
|
|
}
|
|
|
|
return found_decls;
|
|
|
|
}
|
|
|
|
|
2015-08-25 07:46:31 +08:00
|
|
|
bool
|
|
|
|
CompilerDeclContext::IsClang () const
|
|
|
|
{
|
2015-09-09 02:15:05 +08:00
|
|
|
return IsValid() && m_type_system->getKind() == TypeSystem::eKindClang;
|
2015-08-25 07:46:31 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
ConstString
|
|
|
|
CompilerDeclContext::GetName () const
|
|
|
|
{
|
|
|
|
if (IsValid())
|
|
|
|
return m_type_system->DeclContextGetName(m_opaque_decl_ctx);
|
|
|
|
else
|
|
|
|
return ConstString();
|
|
|
|
}
|
|
|
|
|
|
|
|
bool
|
|
|
|
CompilerDeclContext::IsStructUnionOrClass () const
|
|
|
|
{
|
|
|
|
if (IsValid())
|
|
|
|
return m_type_system->DeclContextIsStructUnionOrClass(m_opaque_decl_ctx);
|
|
|
|
else
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
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);
|
|
|
|
else
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
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();
|
|
|
|
}
|