#include "lldb/Bindings/LLDBBinding.h"
#include "lldb/API/LLDB.h"
using namespace lldb;
#ifdef __cplusplus
extern "C" {
#endif
SBSymbolContextRef
CreateSBSymbolContext()
{
return reinterpret_cast<SBSymbolContextRef>(new SBSymbolContext());
}
void
DisposeSBSymbolContext(SBSymbolContextRef instance)
{
delete reinterpret_cast<SBSymbolContext *>(instance);
}
bool
SBSymbolContextIsValid(SBSymbolContextRef instance)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
return unwrapped->IsValid();
}
SBModuleRef
SBSymbolContextGetModule(SBSymbolContextRef instance)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
return reinterpret_cast<SBModuleRef>(new SBModule(unwrapped->GetModule()));
}
SBCompileUnitRef
SBSymbolContextGetCompileUnit(SBSymbolContextRef instance)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
return reinterpret_cast<SBCompileUnitRef>(new SBCompileUnit(unwrapped->GetCompileUnit()));
}
SBFunctionRef
SBSymbolContextGetFunction(SBSymbolContextRef instance)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
return reinterpret_cast<SBFunctionRef>(new SBFunction(unwrapped->GetFunction()));
}
SBBlockRef
SBSymbolContextGetBlock(SBSymbolContextRef instance)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
return reinterpret_cast<SBBlockRef>(new SBBlock(unwrapped->GetBlock()));
}
SBLineEntryRef
SBSymbolContextGetLineEntry(SBSymbolContextRef instance)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
return reinterpret_cast<SBLineEntryRef>(new SBLineEntry(unwrapped->GetLineEntry()));
}
SBSymbolRef
SBSymbolContextGetSymbol(SBSymbolContextRef instance)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
return reinterpret_cast<SBSymbolRef>(new SBSymbol(unwrapped->GetSymbol()));
}
void
SBSymbolContextSetModule(SBSymbolContextRef instance, SBModuleRef module)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
unwrapped->SetModule(*reinterpret_cast<SBModule *>(module));
}
void
SBSymbolContextSetCompileUnit(SBSymbolContextRef instance, SBCompileUnitRef compile_unit)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
unwrapped->SetCompileUnit(*reinterpret_cast<SBCompileUnit *>(compile_unit));
}
void
SBSymbolContextSetFunction(SBSymbolContextRef instance, SBFunctionRef function)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
unwrapped->SetFunction(*reinterpret_cast<SBFunction *>(function));
}
void
SBSymbolContextSetBlock(SBSymbolContextRef instance, SBBlockRef block)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
unwrapped->SetBlock(*reinterpret_cast<SBBlock *>(block));
}
void
SBSymbolContextSetLineEntry(SBSymbolContextRef instance, SBLineEntryRef line_entry)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
unwrapped->SetLineEntry(*reinterpret_cast<SBLineEntry *>(line_entry));
}
void
SBSymbolContextSetSymbol(SBSymbolContextRef instance, SBSymbolRef symbol)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
unwrapped->SetSymbol(*reinterpret_cast<SBSymbol *>(symbol));
}
SBSymbolContextRef
SBSymbolContextGetParentOfInlinedScope(SBSymbolContextRef instance, SBAddressRef curr_frame_pc,
SBAddressRef parent_frame_addr)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
return reinterpret_cast<SBSymbolContextRef>(new SBSymbolContext(unwrapped->GetParentOfInlinedScope(
*reinterpret_cast<SBAddress *>(curr_frame_pc), *reinterpret_cast<SBAddress *>(parent_frame_addr))));
}
bool
SBSymbolContextGetDescription(SBSymbolContextRef instance, SBStreamRef description)
{
SBSymbolContext *unwrapped = reinterpret_cast<SBSymbolContext *>(instance);
return unwrapped->GetDescription(*reinterpret_cast<SBStream *>(description));
}
#ifdef __cplusplus
}
#endif