130fdc8d8SChris Lattner //===-- SBFunction.cpp ------------------------------------------*- C++ -*-===// 230fdc8d8SChris Lattner // 330fdc8d8SChris Lattner // The LLVM Compiler Infrastructure 430fdc8d8SChris Lattner // 530fdc8d8SChris Lattner // This file is distributed under the University of Illinois Open Source 630fdc8d8SChris Lattner // License. See LICENSE.TXT for details. 730fdc8d8SChris Lattner // 830fdc8d8SChris Lattner //===----------------------------------------------------------------------===// 930fdc8d8SChris Lattner 1030fdc8d8SChris Lattner #include "lldb/API/SBFunction.h" 1130fdc8d8SChris Lattner #include "lldb/API/SBProcess.h" 12*dde9cff3SCaroline Tice #include "lldb/API/SBStream.h" 1330fdc8d8SChris Lattner #include "lldb/Symbol/Function.h" 1430fdc8d8SChris Lattner 1530fdc8d8SChris Lattner using namespace lldb; 1630fdc8d8SChris Lattner 1730fdc8d8SChris Lattner 1830fdc8d8SChris Lattner SBFunction::SBFunction () : 196611103cSGreg Clayton m_opaque_ptr (NULL) 2030fdc8d8SChris Lattner { 2130fdc8d8SChris Lattner } 2230fdc8d8SChris Lattner 2330fdc8d8SChris Lattner SBFunction::SBFunction (lldb_private::Function *lldb_object_ptr) : 246611103cSGreg Clayton m_opaque_ptr (lldb_object_ptr) 2530fdc8d8SChris Lattner { 2630fdc8d8SChris Lattner } 2730fdc8d8SChris Lattner 2830fdc8d8SChris Lattner SBFunction::~SBFunction () 2930fdc8d8SChris Lattner { 306611103cSGreg Clayton m_opaque_ptr = NULL; 3130fdc8d8SChris Lattner } 3230fdc8d8SChris Lattner 3330fdc8d8SChris Lattner bool 3430fdc8d8SChris Lattner SBFunction::IsValid () const 3530fdc8d8SChris Lattner { 366611103cSGreg Clayton return m_opaque_ptr != NULL; 3730fdc8d8SChris Lattner } 3830fdc8d8SChris Lattner 3930fdc8d8SChris Lattner const char * 4030fdc8d8SChris Lattner SBFunction::GetName() const 4130fdc8d8SChris Lattner { 426611103cSGreg Clayton if (m_opaque_ptr) 436611103cSGreg Clayton return m_opaque_ptr->GetMangled().GetName().AsCString(); 4430fdc8d8SChris Lattner return NULL; 4530fdc8d8SChris Lattner } 4630fdc8d8SChris Lattner 4730fdc8d8SChris Lattner const char * 4830fdc8d8SChris Lattner SBFunction::GetMangledName () const 4930fdc8d8SChris Lattner { 506611103cSGreg Clayton if (m_opaque_ptr) 516611103cSGreg Clayton return m_opaque_ptr->GetMangled().GetMangledName().AsCString(); 5230fdc8d8SChris Lattner return NULL; 5330fdc8d8SChris Lattner } 5430fdc8d8SChris Lattner 5530fdc8d8SChris Lattner bool 5630fdc8d8SChris Lattner SBFunction::operator == (const SBFunction &rhs) const 5730fdc8d8SChris Lattner { 586611103cSGreg Clayton return m_opaque_ptr == rhs.m_opaque_ptr; 5930fdc8d8SChris Lattner } 6030fdc8d8SChris Lattner 6130fdc8d8SChris Lattner bool 6230fdc8d8SChris Lattner SBFunction::operator != (const SBFunction &rhs) const 6330fdc8d8SChris Lattner { 646611103cSGreg Clayton return m_opaque_ptr != rhs.m_opaque_ptr; 6530fdc8d8SChris Lattner } 66*dde9cff3SCaroline Tice 67*dde9cff3SCaroline Tice bool 68*dde9cff3SCaroline Tice SBFunction::GetDescription (SBStream &description) 69*dde9cff3SCaroline Tice { 70*dde9cff3SCaroline Tice if (m_opaque_ptr) 71*dde9cff3SCaroline Tice { 72*dde9cff3SCaroline Tice m_opaque_ptr->Dump (description.get(), false); 73*dde9cff3SCaroline Tice } 74*dde9cff3SCaroline Tice else 75*dde9cff3SCaroline Tice description.Printf ("No value"); 76*dde9cff3SCaroline Tice 77*dde9cff3SCaroline Tice return true; 78*dde9cff3SCaroline Tice } 79*dde9cff3SCaroline Tice 80*dde9cff3SCaroline Tice PyObject * 81*dde9cff3SCaroline Tice SBFunction::__repr__ () 82*dde9cff3SCaroline Tice { 83*dde9cff3SCaroline Tice SBStream description; 84*dde9cff3SCaroline Tice description.ref(); 85*dde9cff3SCaroline Tice GetDescription (description); 86*dde9cff3SCaroline Tice return PyString_FromString (description.GetData()); 87*dde9cff3SCaroline Tice } 88