15ffd83dbSDimitry Andric //===-- CompilerDecl.cpp --------------------------------------------------===//
2*0b57cec5SDimitry Andric //
3*0b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*0b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5*0b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*0b57cec5SDimitry Andric //
7*0b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
8*0b57cec5SDimitry Andric 
9*0b57cec5SDimitry Andric #include "lldb/Symbol/CompilerDecl.h"
10*0b57cec5SDimitry Andric #include "lldb/Symbol/CompilerDeclContext.h"
11*0b57cec5SDimitry Andric #include "lldb/Symbol/TypeSystem.h"
12*0b57cec5SDimitry Andric 
13*0b57cec5SDimitry Andric using namespace lldb_private;
14*0b57cec5SDimitry Andric 
15*0b57cec5SDimitry Andric ConstString CompilerDecl::GetName() const {
16*0b57cec5SDimitry Andric   return m_type_system->DeclGetName(m_opaque_decl);
17*0b57cec5SDimitry Andric }
18*0b57cec5SDimitry Andric 
19*0b57cec5SDimitry Andric ConstString CompilerDecl::GetMangledName() const {
20*0b57cec5SDimitry Andric   return m_type_system->DeclGetMangledName(m_opaque_decl);
21*0b57cec5SDimitry Andric }
22*0b57cec5SDimitry Andric 
23*0b57cec5SDimitry Andric CompilerDeclContext CompilerDecl::GetDeclContext() const {
24*0b57cec5SDimitry Andric   return m_type_system->DeclGetDeclContext(m_opaque_decl);
25*0b57cec5SDimitry Andric }
26*0b57cec5SDimitry Andric 
27*0b57cec5SDimitry Andric CompilerType CompilerDecl::GetFunctionReturnType() const {
28*0b57cec5SDimitry Andric   return m_type_system->DeclGetFunctionReturnType(m_opaque_decl);
29*0b57cec5SDimitry Andric }
30*0b57cec5SDimitry Andric 
31*0b57cec5SDimitry Andric size_t CompilerDecl::GetNumFunctionArguments() const {
32*0b57cec5SDimitry Andric   return m_type_system->DeclGetFunctionNumArguments(m_opaque_decl);
33*0b57cec5SDimitry Andric }
34*0b57cec5SDimitry Andric 
35*0b57cec5SDimitry Andric CompilerType CompilerDecl::GetFunctionArgumentType(size_t arg_idx) const {
36*0b57cec5SDimitry Andric   return m_type_system->DeclGetFunctionArgumentType(m_opaque_decl, arg_idx);
37*0b57cec5SDimitry Andric }
38*0b57cec5SDimitry Andric 
39*0b57cec5SDimitry Andric bool lldb_private::operator==(const lldb_private::CompilerDecl &lhs,
40*0b57cec5SDimitry Andric                               const lldb_private::CompilerDecl &rhs) {
41*0b57cec5SDimitry Andric   return lhs.GetTypeSystem() == rhs.GetTypeSystem() &&
42*0b57cec5SDimitry Andric          lhs.GetOpaqueDecl() == rhs.GetOpaqueDecl();
43*0b57cec5SDimitry Andric }
44*0b57cec5SDimitry Andric 
45*0b57cec5SDimitry Andric bool lldb_private::operator!=(const lldb_private::CompilerDecl &lhs,
46*0b57cec5SDimitry Andric                               const lldb_private::CompilerDecl &rhs) {
47*0b57cec5SDimitry Andric   return lhs.GetTypeSystem() != rhs.GetTypeSystem() ||
48*0b57cec5SDimitry Andric          lhs.GetOpaqueDecl() != rhs.GetOpaqueDecl();
49*0b57cec5SDimitry Andric }
50