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