summaryrefslogtreecommitdiffstats
path: root/lldb/source/API
diff options
context:
space:
mode:
authorEnrico Granata <egranata@apple.com>2014-09-15 21:30:36 +0000
committerEnrico Granata <egranata@apple.com>2014-09-15 21:30:36 +0000
commit6c42cb11d6b0fb89c952b710d1dca4480d8bfed5 (patch)
tree5abdb6e1916b72735311667e5fbfd903987bd197 /lldb/source/API
parente1779e2a8b123403bb2c1c641f30a1c85614689a (diff)
downloadbcm5719-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.cpp99
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();
+}
OpenPOWER on IntegriCloud