[lldb-dev] [PATCH] API support for files in a module.
dawn at burble.org
dawn at burble.org
Fri Mar 16 11:31:07 PDT 2012
(sending to lldb-dev as per the reply to someone else asking where lldb
patches should go - let me know if that's not still the case).
These patches enable a client to retrieve the list of files belonging to
a module using the API. I wasn't sure if FindSupportFileIndex() should take
a starting index, but since other class methods did, I stuck with that theme.
I didn't need the starting index, so I'd happily remove it if folks prefer.
Commit comment:
GetSupportFileAtIndex(), GetNumSupportFiles(), FindSupportFileIndex():
Add API support for getting the list of files in a compilation unit.
GetNumCompileUnits(), GetCompileUnitAtIndex():
Add API support for retrieving the compilation units in a module.
Please review and commit.
Thank you!
-Dawn
-------------- next part --------------
Index: include/lldb/API/SBModule.h
===================================================================
--- include/lldb/API/SBModule.h (revision 152934)
+++ include/lldb/API/SBModule.h (working copy)
@@ -108,6 +108,12 @@
bool
GetDescription (lldb::SBStream &description);
+ uint32_t
+ GetNumCompileUnits();
+
+ lldb::SBCompileUnit
+ GetCompileUnitAtIndex (uint32_t);
+
size_t
GetNumSymbols ();
Index: include/lldb/API/SBCompileUnit.h
===================================================================
--- include/lldb/API/SBCompileUnit.h (revision 152934)
+++ include/lldb/API/SBCompileUnit.h (working copy)
@@ -51,6 +51,15 @@
lldb::SBFileSpec *inline_file_spec,
bool exact) const;
+ SBFileSpec
+ GetSupportFileAtIndex (uint32_t idx) const;
+
+ uint32_t
+ GetNumSupportFiles () const;
+
+ uint32_t
+ FindSupportFileIndex (uint32_t start_idx, const SBFileSpec &sb_file, bool full);
+
bool
operator == (const lldb::SBCompileUnit &rhs) const;
@@ -64,6 +73,7 @@
friend class SBAddress;
friend class SBFrame;
friend class SBSymbolContext;
+ friend class SBModule;
SBCompileUnit (lldb_private::CompileUnit *lldb_object_ptr);
Index: source/API/SBCompileUnit.cpp
===================================================================
--- source/API/SBCompileUnit.cpp (revision 152934)
+++ source/API/SBCompileUnit.cpp (working copy)
@@ -143,6 +143,52 @@
return index;
}
+uint32_t
+SBCompileUnit::GetNumSupportFiles () const
+{
+ if (m_opaque_ptr)
+ {
+ FileSpecList& support_files = m_opaque_ptr->GetSupportFiles ();
+ return support_files.GetSize();
+ }
+ return 0;
+}
+
+SBFileSpec
+SBCompileUnit::GetSupportFileAtIndex (uint32_t idx) const
+{
+ LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+
+ SBFileSpec sb_file_spec;
+ if (m_opaque_ptr)
+ {
+ FileSpecList &support_files = m_opaque_ptr->GetSupportFiles ();
+ FileSpec file_spec = support_files.GetFileSpecAtIndex(idx);
+ sb_file_spec.SetFileSpec(file_spec);
+ }
+
+ if (log)
+ {
+ SBStream sstr;
+ sb_file_spec.GetDescription (sstr);
+ log->Printf ("SBCompileUnit(%p)::GetGetFileSpecAtIndex (idx=%u) => SBFileSpec(%p): '%s'",
+ m_opaque_ptr, idx, sb_file_spec.get(), sstr.GetData());
+ }
+
+ return sb_file_spec;
+}
+
+uint32_t
+SBCompileUnit::FindSupportFileIndex (uint32_t start_idx, const SBFileSpec &sb_file, bool full)
+{
+ if (m_opaque_ptr)
+ {
+ FileSpecList &support_files = m_opaque_ptr->GetSupportFiles ();
+ return support_files.FindFileIndex(start_idx, sb_file.ref(), full);
+ }
+ return 0;
+}
+
bool
SBCompileUnit::IsValid () const
{
Index: source/API/SBModule.cpp
===================================================================
--- source/API/SBModule.cpp (revision 152934)
+++ source/API/SBModule.cpp (working copy)
@@ -266,6 +266,30 @@
return true;
}
+uint32_t
+SBModule::GetNumCompileUnits()
+{
+ ModuleSP module_sp (GetSP ());
+ if (module_sp)
+ {
+ return module_sp->GetNumCompileUnits ();
+ }
+ return 0;
+}
+
+SBCompileUnit
+SBModule::GetCompileUnitAtIndex (uint32_t index)
+{
+ SBCompileUnit sb_cu;
+ ModuleSP module_sp (GetSP ());
+ if (module_sp)
+ {
+ CompUnitSP cu_sp = module_sp->GetCompileUnitAtIndex (index);
+ sb_cu.reset(cu_sp.get());
+ }
+ return sb_cu;
+}
+
size_t
SBModule::GetNumSymbols ()
{
More information about the lldb-dev
mailing list