diff options
| author | Enrico Granata <egranata@apple.com> | 2014-09-15 21:30:36 +0000 |
|---|---|---|
| committer | Enrico Granata <egranata@apple.com> | 2014-09-15 21:30:36 +0000 |
| commit | 6c42cb11d6b0fb89c952b710d1dca4480d8bfed5 (patch) | |
| tree | 5abdb6e1916b72735311667e5fbfd903987bd197 /lldb/source/API | |
| parent | e1779e2a8b123403bb2c1c641f30a1c85614689a (diff) | |
| download | bcm5719-llvm-6c42cb11d6b0fb89c952b710d1dca4480d8bfed5.tar.gz bcm5719-llvm-6c42cb11d6b0fb89c952b710d1dca4480d8bfed5.zip | |
Change SBType.GetMemberFunctionAtIndex() to return an object describing the member function in more detail. A type was really quite vague. This now has function name, kind, as well as function type
llvm-svn: 217828
Diffstat (limited to 'lldb/source/API')
| -rw-r--r-- | lldb/source/API/SBType.cpp | 99 |
1 files changed, 95 insertions, 4 deletions
diff --git a/lldb/source/API/SBType.cpp b/lldb/source/API/SBType.cpp index 3893312fce8..01ad368cf28 100644 --- a/lldb/source/API/SBType.cpp +++ b/lldb/source/API/SBType.cpp @@ -262,14 +262,16 @@ SBType::GetNumberOfMemberFunctions () return 0; } -lldb::SBType +lldb::SBTypeMemberFunction SBType::GetMemberFunctionAtIndex (uint32_t idx) { - SBType sb_func_type; + SBTypeMemberFunction sb_func_type; if (IsValid()) { - ClangASTType func_type(m_opaque_sp->GetClangASTType(true).GetMemberFunctionAtIndex(idx)); - sb_func_type = SBType(func_type); + lldb::MemberFunctionKind kind; + std::string name; + ClangASTType func_type(m_opaque_sp->GetClangASTType(true).GetMemberFunctionAtIndex(idx,name,kind)); + sb_func_type.reset(new TypeMemberFunctionImpl(func_type,name,kind)); } return sb_func_type; } @@ -706,3 +708,92 @@ SBTypeMember::ref () const { return *m_opaque_ap.get(); } + +SBTypeMemberFunction::SBTypeMemberFunction() : +m_opaque_sp() +{ +} + +SBTypeMemberFunction::~SBTypeMemberFunction() +{ +} + +SBTypeMemberFunction::SBTypeMemberFunction (const SBTypeMemberFunction& rhs) : + m_opaque_sp(rhs.m_opaque_sp) +{ +} + +lldb::SBTypeMemberFunction& +SBTypeMemberFunction::operator = (const lldb::SBTypeMemberFunction& rhs) +{ + if (this != &rhs) + m_opaque_sp = rhs.m_opaque_sp; + return *this; +} + +bool +SBTypeMemberFunction::IsValid() const +{ + return m_opaque_sp.get(); +} + +const char * +SBTypeMemberFunction::GetName () +{ + if (m_opaque_sp) + return m_opaque_sp->GetName().GetCString(); + return NULL; +} + +SBType +SBTypeMemberFunction::GetType () +{ + SBType sb_type; + if (m_opaque_sp) + { + sb_type.SetSP(lldb::TypeImplSP(new TypeImpl(m_opaque_sp->GetType()))); + } + return sb_type; + +} + +lldb::MemberFunctionKind +SBTypeMemberFunction::GetKind () +{ + if (m_opaque_sp) + return m_opaque_sp->GetKind(); + return lldb::eMemberFunctionKindUnknown; + +} + +bool +SBTypeMemberFunction::GetDescription (lldb::SBStream &description, + lldb::DescriptionLevel description_level) +{ + Stream &strm = description.ref(); + + if (m_opaque_sp) + return m_opaque_sp->GetDescription(strm); + + return false; +} + +void +SBTypeMemberFunction::reset(TypeMemberFunctionImpl *type_member_impl) +{ + m_opaque_sp.reset(type_member_impl); +} + +TypeMemberFunctionImpl & +SBTypeMemberFunction::ref () +{ + if (!m_opaque_sp) + m_opaque_sp.reset (new TypeMemberFunctionImpl()); + return *m_opaque_sp.get(); +} + +const TypeMemberFunctionImpl & +SBTypeMemberFunction::ref () const +{ + return *m_opaque_sp.get(); +} |

