1*9f2f44ceSEd Maste //===-- CompilerDecl.cpp ----------------------------------------*- C++ -*-===//
2*9f2f44ceSEd Maste //
3*9f2f44ceSEd Maste //                     The LLVM Compiler Infrastructure
4*9f2f44ceSEd Maste //
5*9f2f44ceSEd Maste // This file is distributed under the University of Illinois Open Source
6*9f2f44ceSEd Maste // License. See LICENSE.TXT for details.
7*9f2f44ceSEd Maste //
8*9f2f44ceSEd Maste //===----------------------------------------------------------------------===//
9*9f2f44ceSEd Maste 
10*9f2f44ceSEd Maste #include "lldb/Symbol/CompilerDecl.h"
11*9f2f44ceSEd Maste #include "lldb/Symbol/CompilerDeclContext.h"
12*9f2f44ceSEd Maste #include "lldb/Symbol/TypeSystem.h"
13*9f2f44ceSEd Maste 
14*9f2f44ceSEd Maste using namespace lldb_private;
15*9f2f44ceSEd Maste 
16*9f2f44ceSEd Maste bool
17*9f2f44ceSEd Maste CompilerDecl::IsClang () const
18*9f2f44ceSEd Maste {
19*9f2f44ceSEd Maste     return IsValid() && m_type_system->getKind() == TypeSystem::eKindClang;
20*9f2f44ceSEd Maste }
21*9f2f44ceSEd Maste 
22*9f2f44ceSEd Maste ConstString
23*9f2f44ceSEd Maste CompilerDecl::GetName() const
24*9f2f44ceSEd Maste {
25*9f2f44ceSEd Maste     return m_type_system->DeclGetName(m_opaque_decl);
26*9f2f44ceSEd Maste }
27*9f2f44ceSEd Maste 
28*9f2f44ceSEd Maste ConstString
29*9f2f44ceSEd Maste CompilerDecl::GetMangledName () const
30*9f2f44ceSEd Maste {
31*9f2f44ceSEd Maste     return m_type_system->DeclGetMangledName(m_opaque_decl);
32*9f2f44ceSEd Maste }
33*9f2f44ceSEd Maste 
34*9f2f44ceSEd Maste lldb::VariableSP
35*9f2f44ceSEd Maste CompilerDecl::GetAsVariable ()
36*9f2f44ceSEd Maste {
37*9f2f44ceSEd Maste     return m_type_system->DeclGetVariable(m_opaque_decl);
38*9f2f44ceSEd Maste }
39*9f2f44ceSEd Maste 
40*9f2f44ceSEd Maste CompilerDeclContext
41*9f2f44ceSEd Maste CompilerDecl::GetDeclContext() const
42*9f2f44ceSEd Maste {
43*9f2f44ceSEd Maste     return m_type_system->DeclGetDeclContext(m_opaque_decl);
44*9f2f44ceSEd Maste }
45*9f2f44ceSEd Maste 
46*9f2f44ceSEd Maste CompilerType
47*9f2f44ceSEd Maste CompilerDecl::GetFunctionReturnType() const
48*9f2f44ceSEd Maste {
49*9f2f44ceSEd Maste     return m_type_system->DeclGetFunctionReturnType(m_opaque_decl);
50*9f2f44ceSEd Maste }
51*9f2f44ceSEd Maste 
52*9f2f44ceSEd Maste size_t
53*9f2f44ceSEd Maste CompilerDecl::GetNumFunctionArguments() const
54*9f2f44ceSEd Maste {
55*9f2f44ceSEd Maste     return m_type_system->DeclGetFunctionNumArguments(m_opaque_decl);
56*9f2f44ceSEd Maste }
57*9f2f44ceSEd Maste 
58*9f2f44ceSEd Maste CompilerType
59*9f2f44ceSEd Maste CompilerDecl::GetFunctionArgumentType (size_t arg_idx) const
60*9f2f44ceSEd Maste {
61*9f2f44ceSEd Maste     return m_type_system->DeclGetFunctionArgumentType(m_opaque_decl, arg_idx);
62*9f2f44ceSEd Maste }
63*9f2f44ceSEd Maste 
64*9f2f44ceSEd Maste bool
65*9f2f44ceSEd Maste lldb_private::operator == (const lldb_private::CompilerDecl &lhs, const lldb_private::CompilerDecl &rhs)
66*9f2f44ceSEd Maste {
67*9f2f44ceSEd Maste     return lhs.GetTypeSystem() == rhs.GetTypeSystem() && lhs.GetOpaqueDecl() == rhs.GetOpaqueDecl();
68*9f2f44ceSEd Maste }
69*9f2f44ceSEd Maste 
70*9f2f44ceSEd Maste 
71*9f2f44ceSEd Maste bool
72*9f2f44ceSEd Maste lldb_private::operator != (const lldb_private::CompilerDecl &lhs, const lldb_private::CompilerDecl &rhs)
73*9f2f44ceSEd Maste {
74*9f2f44ceSEd Maste     return lhs.GetTypeSystem() != rhs.GetTypeSystem() || lhs.GetOpaqueDecl() != rhs.GetOpaqueDecl();
75*9f2f44ceSEd Maste }
76*9f2f44ceSEd Maste 
77