Change how builtin functions are loaded, better error checking
This commit is contained in:
@@ -475,18 +475,20 @@ private:
|
||||
const char *name_;
|
||||
const char *args_;
|
||||
const char *docs_;
|
||||
bool sandbox_;
|
||||
lua_CFunction func_;
|
||||
LuaFunctionReg *next_;
|
||||
|
||||
public:
|
||||
static LuaFunctionReg *All;
|
||||
LuaFunctionReg(const char *name, const char *args, const char *docs, lua_CFunction f);
|
||||
LuaFunctionReg(const char *name, const char *args, const char *docs, bool sand, lua_CFunction f);
|
||||
static const LuaFunctionReg *lookup(lua_CFunction fn);
|
||||
|
||||
const char *get_name() const { return name_; }
|
||||
const char *get_args() const { return args_; }
|
||||
const char *get_docs() const { return docs_; }
|
||||
lua_CFunction get_func() const { return func_; }
|
||||
bool get_sandbox() const { return sandbox_; }
|
||||
LuaFunctionReg *next() const { return next_; }
|
||||
void set_func(lua_CFunction fn) { func_ = fn; }
|
||||
};
|
||||
@@ -494,13 +496,19 @@ public:
|
||||
|
||||
#define LuaDefine(name, args, docs) \
|
||||
int lfn_##name(lua_State *L); \
|
||||
LuaFunctionReg reg_##name(#name, args, docs, lfn_##name); \
|
||||
LuaFunctionReg reg_##name(#name, args, docs, false, lfn_##name); \
|
||||
int lfn_##name(lua_State *L)
|
||||
|
||||
#define LuaSandbox(name, args, docs) \
|
||||
int lfn_##name(lua_State *L); \
|
||||
LuaFunctionReg reg_##name(#name, args, docs, true, lfn_##name); \
|
||||
int lfn_##name(lua_State *L)
|
||||
|
||||
#define LuaDefineBuiltin(name, args, docs) \
|
||||
LuaFunctionReg reg_##name(#name, args, docs, nullptr);
|
||||
LuaFunctionReg reg_##name(#name, args, docs, false, nullptr);
|
||||
|
||||
#define LuaSandboxBuiltin(name, args, docs) \
|
||||
LuaFunctionReg reg_##name(#name, args, docs, true, nullptr);
|
||||
|
||||
#define LuaStringify(x) #x
|
||||
#define LuaAssert(L, x) if (!(x)) { luaL_error((L), "Assert failed: %s (file %s line %d)", LuaStringify(x), __FILE__, __LINE__); }
|
||||
|
||||
Reference in New Issue
Block a user