lldb-sys 0.0.13

Raw bindings to the LLDB C++ API. LLDB is the debugger that is part of the LLVM project and is the default system debugger on Mac OS X. Building and using this is currently slightly tricky, so be sure to see the README.md in the repository.
//===-- SBSymbolContextBinding.cpp ------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#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