1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-08 16:57:16 +01:00
SqMod/modules/tcc/State.cpp

56 lines
1.8 KiB
C++
Raw Normal View History

// ------------------------------------------------------------------------------------------------
#include "State.hpp"
#include "Symbol.hpp"
// ------------------------------------------------------------------------------------------------
#include <libtcc.h>
// ------------------------------------------------------------------------------------------------
namespace SqMod {
// ------------------------------------------------------------------------------------------------
SQInteger State::Typename(HSQUIRRELVM vm)
{
static SQChar name[] = _SC("SqTccState");
sq_pushstring(vm, name, sizeof(name));
return 1;
}
// ------------------------------------------------------------------------------------------------
void State::AddSource(CSStr filename) const
{
m_Handle.AddFile(filename, TCC_FILETYPE_C);
}
// ------------------------------------------------------------------------------------------------
void State::AddBinary(CSStr filename) const
{
m_Handle.AddFile(filename, TCC_FILETYPE_BINARY);
}
// ------------------------------------------------------------------------------------------------
void State::AddAsm(CSStr filename) const
{
m_Handle.AddFile(filename, TCC_FILETYPE_ASM);
}
// ------------------------------------------------------------------------------------------------
void State::AddAsmPP(CSStr filename) const
{
m_Handle.AddFile(filename, TCC_FILETYPE_ASM_PP);
}
// ------------------------------------------------------------------------------------------------
Symbol State::GetSymbol(CSStr name) const
{
// Is the specified name even valid?
if (!name || *name == '\0')
{
STHROWF("Invalid or empty symbol name: null");
}
// Return the requested symbol
return Symbol(m_Handle, name, m_Handle.GetSymbol< Symbol::SymPtr >(name));
}
} // Namespace:: SqMod