mirror of
https://github.com/jonko0493/blocksdsl-min-repro.git
synced 2025-06-18 13:45:32 -04:00
84 lines
1.8 KiB
C++
84 lines
1.8 KiB
C++
#include "loader.hpp"
|
|
|
|
typedef bool (fnIsFlagSet)(Save *, u16);
|
|
typedef void (fnSetFlag)(Save *, u16);
|
|
typedef void (fnClearFlag)(Save *, u16);
|
|
typedef u8 (fnGetGlobal)(Save *, u16);
|
|
typedef void (fnSetGlobal)(Save *, u16, u8);
|
|
|
|
typedef int (fnGetMemUsed)();
|
|
typedef int (fnGetMemFree)();
|
|
|
|
fnIsFlagSet *isFlagSetFn;
|
|
fnSetFlag *setFlagFn;
|
|
fnClearFlag *clearFlagFn;
|
|
fnGetGlobal *getGlobalFn;
|
|
fnSetGlobal *setGlobalFn;
|
|
|
|
fnGetMemUsed *getMemUsedFn;
|
|
fnGetMemFree *getMemFreeFn;
|
|
|
|
namespace Loader
|
|
{
|
|
void *exampleLib;
|
|
|
|
void loadExampleLib()
|
|
{
|
|
exampleLib = dlopen("nitro:/dsl/example.dsl", RTLD_NOW | RTLD_LOCAL);
|
|
|
|
isFlagSetFn = (fnIsFlagSet *)dlsym(exampleLib, "isFlagSet");
|
|
setFlagFn = (fnSetFlag *)dlsym(exampleLib, "setFlag");
|
|
clearFlagFn = (fnClearFlag *)dlsym(exampleLib, "clearFlag");
|
|
getGlobalFn = (fnGetGlobal *)dlsym(exampleLib, "getGlobal");
|
|
setGlobalFn = (fnSetGlobal *)dlsym(exampleLib, "setGlobal");
|
|
|
|
getMemUsedFn = (fnGetMemUsed *)dlsym(exampleLib, "getMemUsed");
|
|
getMemFreeFn = (fnGetMemFree *)dlsym(exampleLib, "getMemFree");
|
|
}
|
|
|
|
void unloadExmapleLib()
|
|
{
|
|
dlclose(exampleLib);
|
|
}
|
|
}
|
|
|
|
namespace SaveExtensions
|
|
{
|
|
bool isFlagSet(Save *save, u16 flag)
|
|
{
|
|
return isFlagSetFn(save, flag);
|
|
}
|
|
|
|
void setFlag(Save *save, u16 flag)
|
|
{
|
|
setFlagFn(save, flag);
|
|
}
|
|
|
|
void clearFlag(Save *save, u16 flag)
|
|
{
|
|
clearFlagFn(save, flag);
|
|
}
|
|
|
|
u8 getGlobal(Save *save, u16 global)
|
|
{
|
|
return getGlobalFn(save, global);
|
|
}
|
|
|
|
void setGlobal(Save *save, u16 global, u8 value)
|
|
{
|
|
setGlobalFn(save, global, value);
|
|
}
|
|
}
|
|
|
|
namespace Debug
|
|
{
|
|
int getMemUsed()
|
|
{
|
|
return getMemUsedFn();
|
|
}
|
|
|
|
int getMemFree()
|
|
{
|
|
return getMemFreeFn();
|
|
}
|
|
} |