raze/polymer/eduke32/build/include/lunatic.h
helixhorned e947f1fe87 Lunatic: prepare Makefiles for synthesis build.
- libs and headers are expected in platform/Windows/* (not there yet)
- prefix Lua #includes with luajit-2.0/
- build bytecode objects with absolute path name (used for debug info)

git-svn-id: https://svn.eduke32.com/eduke32@4000 1a8010ca-5511-0410-912e-c29ae57300e0
2013-08-11 15:28:42 +00:00

35 lines
1 KiB
C

/* The Lunatic Interpreter, part of EDuke32. Common, engine-side stuff. */
#ifndef ENGINE_LUNATIC_H_
#define ENGINE_LUNATIC_H_
#include <luajit-2.0/lua.h>
typedef struct
{
char *name;
lua_State *L;
} L_State;
// -- functions --
// helpers taking the lua_State directly:
void L_PushDebugTraceback(lua_State *L);
void L_CheckAndRegisterFunction(lua_State *L, void *regkeyaddr);
int L_HandleError(lua_State *L, int errcode, void (*ErrorPrintFunc)(const char *));
// Callback on Lua error. <str> must be used immediately or strdup'd.
void (*L_ErrorFunc)(const char *str);
// Out-of-memory handler, supposed to terminate the host program.
void (*L_OutOfMemFunc)(void);
int L_CreateState(L_State *estate, const char *name, void (*StateSetupFunc)(lua_State *));
void L_DestroyState(L_State *estate);
int L_RunOnce(L_State *estate, const char *fn);
int L_RunString(L_State *estate, char *buf, int dofreebuf, int size, const char *name);
static inline int L_IsInitialized(const L_State *estate) { return (estate->L != NULL); }
#endif