blob: 8bee1b48753afa4645cbc4a078335599f640cba7 [file] [log] [blame]
Greg Clayton99558cc42015-08-24 23:46:31 +00001//===-- CompilerDeclContext.cpp ---------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "lldb/Symbol/CompilerDeclContext.h"
Paul Hermand628cbb2015-09-15 23:44:17 +000011#include "lldb/Symbol/CompilerDecl.h"
Greg Clayton99558cc42015-08-24 23:46:31 +000012#include "lldb/Symbol/TypeSystem.h"
Paul Hermand628cbb2015-09-15 23:44:17 +000013#include <vector>
Greg Clayton99558cc42015-08-24 23:46:31 +000014
15using namespace lldb_private;
16
Paul Hermand628cbb2015-09-15 23:44:17 +000017std::vector<CompilerDecl>
18CompilerDeclContext::FindDeclByName (ConstString name)
19{
Paul Hermand628cbb2015-09-15 23:44:17 +000020 if (IsValid())
Greg Claytondfc09622015-12-08 18:39:50 +000021 return m_type_system->DeclContextFindDeclByName(m_opaque_decl_ctx, name);
22 else
23 return std::vector<CompilerDecl>();
Paul Hermand628cbb2015-09-15 23:44:17 +000024}
25
Greg Clayton99558cc42015-08-24 23:46:31 +000026bool
27CompilerDeclContext::IsClang () const
28{
Greg Claytonf73034f2015-09-08 18:15:05 +000029 return IsValid() && m_type_system->getKind() == TypeSystem::eKindClang;
Greg Clayton99558cc42015-08-24 23:46:31 +000030}
31
32ConstString
33CompilerDeclContext::GetName () const
34{
35 if (IsValid())
36 return m_type_system->DeclContextGetName(m_opaque_decl_ctx);
37 else
38 return ConstString();
39}
40
Siva Chandra9293fc42016-01-07 23:32:34 +000041ConstString
42CompilerDeclContext::GetScopeQualifiedName () const
43{
44 if (IsValid())
45 return m_type_system->DeclContextGetScopeQualifiedName(m_opaque_decl_ctx);
46 else
47 return ConstString();
48}
49
Greg Clayton99558cc42015-08-24 23:46:31 +000050bool
51CompilerDeclContext::IsStructUnionOrClass () const
52{
53 if (IsValid())
54 return m_type_system->DeclContextIsStructUnionOrClass(m_opaque_decl_ctx);
55 else
56 return false;
57}
58
59bool
60CompilerDeclContext::IsClassMethod (lldb::LanguageType *language_ptr,
61 bool *is_instance_method_ptr,
62 ConstString *language_object_name_ptr)
63{
64 if (IsValid())
65 return m_type_system->DeclContextIsClassMethod (m_opaque_decl_ctx,
66 language_ptr,
67 is_instance_method_ptr,
68 language_object_name_ptr);
69 else
70 return false;
71}
72
73bool
74lldb_private::operator == (const lldb_private::CompilerDeclContext &lhs, const lldb_private::CompilerDeclContext &rhs)
75{
76 return lhs.GetTypeSystem() == rhs.GetTypeSystem() && lhs.GetOpaqueDeclContext() == rhs.GetOpaqueDeclContext();
77}
78
79
80bool
81lldb_private::operator != (const lldb_private::CompilerDeclContext &lhs, const lldb_private::CompilerDeclContext &rhs)
82{
83 return lhs.GetTypeSystem() != rhs.GetTypeSystem() || lhs.GetOpaqueDeclContext() != rhs.GetOpaqueDeclContext();
84}