Browse Source

Lua: Some improvements

Panagiotis Christopoulos Charitos 1 week ago
parent
commit
1200f2d247

+ 7 - 7
AnKi/Script/Globals.cpp

@@ -39,13 +39,13 @@ static CVar* findCVar(CString name)
 
 
 static inline int pwrap__newindex(lua_State* l)
 static inline int pwrap__newindex(lua_State* l)
 {
 {
-	if(LuaBinder::checkArgsCount(l, 3))
+	if(LuaBinder::checkArgsCount(l, ANKI_FILE, __LINE__, ANKI_FUNC, 3))
 	{
 	{
 		return -1;
 		return -1;
 	}
 	}
 
 
 	const Char* varName_;
 	const Char* varName_;
-	if(LuaBinder::checkString(l, 2, varName_))
+	if(LuaBinder::checkString(l, ANKI_FILE, __LINE__, ANKI_FUNC, 2, varName_))
 	{
 	{
 		return -1;
 		return -1;
 	}
 	}
@@ -60,7 +60,7 @@ static inline int pwrap__newindex(lua_State* l)
 	case CVarValueType::kNumeric##type: \
 	case CVarValueType::kNumeric##type: \
 	{ \
 	{ \
 		type val; \
 		type val; \
-		if(LuaBinder::checkNumber(l, 3, val)) \
+		if(LuaBinder::checkNumber(l, ANKI_FILE, __LINE__, ANKI_FUNC, 3, val)) \
 		{ \
 		{ \
 			return -1; \
 			return -1; \
 		} \
 		} \
@@ -73,7 +73,7 @@ static inline int pwrap__newindex(lua_State* l)
 		case CVarValueType::kString:
 		case CVarValueType::kString:
 		{
 		{
 			const Char* val;
 			const Char* val;
-			if(LuaBinder::checkString(l, 3, val))
+			if(LuaBinder::checkString(l, ANKI_FILE, __LINE__, ANKI_FUNC, 3, val))
 			{
 			{
 				return -1;
 				return -1;
 			}
 			}
@@ -83,7 +83,7 @@ static inline int pwrap__newindex(lua_State* l)
 		case CVarValueType::kBool:
 		case CVarValueType::kBool:
 		{
 		{
 			I32 val;
 			I32 val;
-			if(LuaBinder::checkNumber(l, 3, val))
+			if(LuaBinder::checkNumber(l, ANKI_FILE, __LINE__, ANKI_FUNC, 3, val))
 			{
 			{
 				return -1;
 				return -1;
 			}
 			}
@@ -125,13 +125,13 @@ static int wrap__newindex(lua_State* l)
 
 
 static inline int pwrap__index(lua_State* l)
 static inline int pwrap__index(lua_State* l)
 {
 {
-	if(LuaBinder::checkArgsCount(l, 2))
+	if(LuaBinder::checkArgsCount(l, ANKI_FILE, __LINE__, ANKI_FUNC, 2))
 	{
 	{
 		return -1;
 		return -1;
 	}
 	}
 
 
 	const Char* varName_;
 	const Char* varName_;
-	if(LuaBinder::checkString(l, 2, varName_))
+	if(LuaBinder::checkString(l, ANKI_FILE, __LINE__, ANKI_FUNC, 2, varName_))
 	{
 	{
 		return -1;
 		return -1;
 	}
 	}

+ 25 - 77
AnKi/Script/Logger.cpp

@@ -9,23 +9,23 @@
 
 
 namespace anki {
 namespace anki {
 
 
-/// Pre-wrap function logi.
-static inline int pwraplogi(lua_State* l)
+// Wrap function logi.
+static inline int wraplogi(lua_State* l)
 {
 {
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] PtrSize size;
 	[[maybe_unused]] PtrSize size;
 
 
-	if(LuaBinder::checkArgsCount(l, 1)) [[unlikely]]
+	if(LuaBinder::checkArgsCount(l, ANKI_FILE, __LINE__, ANKI_FUNC, 1)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	// Pop arguments
 	// Pop arguments
 	const char* arg0;
 	const char* arg0;
-	if(LuaBinder::checkString(l, 1, arg0)) [[unlikely]]
+	if(LuaBinder::checkString(l, ANKI_FILE, __LINE__, ANKI_FUNC, 1, arg0)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	// Call the function
 	// Call the function
@@ -34,36 +34,23 @@ static inline int pwraplogi(lua_State* l)
 	return 0;
 	return 0;
 }
 }
 
 
-/// Wrap function logi.
-static int wraplogi(lua_State* l)
-{
-	int res = pwraplogi(l);
-	if(res >= 0)
-	{
-		return res;
-	}
-
-	lua_error(l);
-	return 0;
-}
-
-/// Pre-wrap function loge.
-static inline int pwraploge(lua_State* l)
+// Wrap function loge.
+static inline int wraploge(lua_State* l)
 {
 {
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] PtrSize size;
 	[[maybe_unused]] PtrSize size;
 
 
-	if(LuaBinder::checkArgsCount(l, 1)) [[unlikely]]
+	if(LuaBinder::checkArgsCount(l, ANKI_FILE, __LINE__, ANKI_FUNC, 1)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	// Pop arguments
 	// Pop arguments
 	const char* arg0;
 	const char* arg0;
-	if(LuaBinder::checkString(l, 1, arg0)) [[unlikely]]
+	if(LuaBinder::checkString(l, ANKI_FILE, __LINE__, ANKI_FUNC, 1, arg0)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	// Call the function
 	// Call the function
@@ -72,36 +59,23 @@ static inline int pwraploge(lua_State* l)
 	return 0;
 	return 0;
 }
 }
 
 
-/// Wrap function loge.
-static int wraploge(lua_State* l)
-{
-	int res = pwraploge(l);
-	if(res >= 0)
-	{
-		return res;
-	}
-
-	lua_error(l);
-	return 0;
-}
-
-/// Pre-wrap function logw.
-static inline int pwraplogw(lua_State* l)
+// Wrap function logw.
+static inline int wraplogw(lua_State* l)
 {
 {
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] PtrSize size;
 	[[maybe_unused]] PtrSize size;
 
 
-	if(LuaBinder::checkArgsCount(l, 1)) [[unlikely]]
+	if(LuaBinder::checkArgsCount(l, ANKI_FILE, __LINE__, ANKI_FUNC, 1)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	// Pop arguments
 	// Pop arguments
 	const char* arg0;
 	const char* arg0;
-	if(LuaBinder::checkString(l, 1, arg0)) [[unlikely]]
+	if(LuaBinder::checkString(l, ANKI_FILE, __LINE__, ANKI_FUNC, 1, arg0)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	// Call the function
 	// Call the function
@@ -110,36 +84,23 @@ static inline int pwraplogw(lua_State* l)
 	return 0;
 	return 0;
 }
 }
 
 
-/// Wrap function logw.
-static int wraplogw(lua_State* l)
-{
-	int res = pwraplogw(l);
-	if(res >= 0)
-	{
-		return res;
-	}
-
-	lua_error(l);
-	return 0;
-}
-
-/// Pre-wrap function logv.
-static inline int pwraplogv(lua_State* l)
+// Wrap function logv.
+static inline int wraplogv(lua_State* l)
 {
 {
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] PtrSize size;
 	[[maybe_unused]] PtrSize size;
 
 
-	if(LuaBinder::checkArgsCount(l, 1)) [[unlikely]]
+	if(LuaBinder::checkArgsCount(l, ANKI_FILE, __LINE__, ANKI_FUNC, 1)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	// Pop arguments
 	// Pop arguments
 	const char* arg0;
 	const char* arg0;
-	if(LuaBinder::checkString(l, 1, arg0)) [[unlikely]]
+	if(LuaBinder::checkString(l, ANKI_FILE, __LINE__, ANKI_FUNC, 1, arg0)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	// Call the function
 	// Call the function
@@ -148,20 +109,7 @@ static inline int pwraplogv(lua_State* l)
 	return 0;
 	return 0;
 }
 }
 
 
-/// Wrap function logv.
-static int wraplogv(lua_State* l)
-{
-	int res = pwraplogv(l);
-	if(res >= 0)
-	{
-		return res;
-	}
-
-	lua_error(l);
-	return 0;
-}
-
-/// Wrap the module.
+// Wrap the module.
 void wrapModuleLogger(lua_State* l)
 void wrapModuleLogger(lua_State* l)
 {
 {
 	LuaBinder::pushLuaCFunc(l, "logi", wraplogi);
 	LuaBinder::pushLuaCFunc(l, "logi", wraplogi);

+ 16 - 9
AnKi/Script/LuaBinder.cpp

@@ -159,7 +159,7 @@ void LuaBinder::pushLuaCFunc(lua_State* l, const char* name, lua_CFunction luafu
 	lua_register(l, name, luafunc);
 	lua_register(l, name, luafunc);
 }
 }
 
 
-Error LuaBinder::checkNumberInternal(lua_State* l, I32 stackIdx, lua_Number& number)
+Error LuaBinder::checkNumberInternal(lua_State* l, const Char* file, U32 line, const Char* func, I32 stackIdx, lua_Number& number)
 {
 {
 	Error err = Error::kNone;
 	Error err = Error::kNone;
 	lua_Number lnum;
 	lua_Number lnum;
@@ -173,16 +173,22 @@ Error LuaBinder::checkNumberInternal(lua_State* l, I32 stackIdx, lua_Number& num
 	else
 	else
 	{
 	{
 		err = Error::kUserData;
 		err = Error::kUserData;
-		lua_pushfstring(l, "Number expected. Got %s", luaL_typename(l, stackIdx));
+		lua_pushfstring(l, "Number expected, got %s. Location: %s:%d %s", luaL_typename(l, stackIdx), file, line, func);
 	}
 	}
 
 
 	return err;
 	return err;
 }
 }
 
 
-Error LuaBinder::checkString(lua_State* l, I32 stackIdx, const char*& out)
+Error LuaBinder::checkString(lua_State* l, const Char* file, U32 line, const Char* func, I32 stackIdx, const char*& out)
 {
 {
 	Error err = Error::kNone;
 	Error err = Error::kNone;
-	const char* s = lua_tolstring(l, stackIdx, nullptr);
+	const Char* s = nullptr;
+
+	if(lua_type(l, stackIdx) == LUA_TSTRING)
+	{
+		s = lua_tolstring(l, stackIdx, nullptr);
+	}
+
 	if(s != nullptr)
 	if(s != nullptr)
 	{
 	{
 		out = s;
 		out = s;
@@ -190,13 +196,14 @@ Error LuaBinder::checkString(lua_State* l, I32 stackIdx, const char*& out)
 	else
 	else
 	{
 	{
 		err = Error::kUserData;
 		err = Error::kUserData;
-		lua_pushfstring(l, "String expected. Got %s", luaL_typename(l, stackIdx));
+		lua_pushfstring(l, "String expected, got %s. Location: %s:%d %s", luaL_typename(l, stackIdx), file, line, func);
 	}
 	}
 
 
 	return err;
 	return err;
 }
 }
 
 
-Error LuaBinder::checkUserData(lua_State* l, I32 stackIdx, const LuaUserDataTypeInfo& typeInfo, LuaUserData*& out)
+Error LuaBinder::checkUserData(lua_State* l, const Char* file, U32 line, const Char* func, I32 stackIdx, const LuaUserDataTypeInfo& typeInfo,
+							   LuaUserData*& out)
 {
 {
 	Error err = Error::kNone;
 	Error err = Error::kNone;
 
 
@@ -223,19 +230,19 @@ Error LuaBinder::checkUserData(lua_State* l, I32 stackIdx, const LuaUserDataType
 
 
 	if(err)
 	if(err)
 	{
 	{
-		lua_pushfstring(l, "Userdata of %s expected. Got %s", typeInfo.m_typeName, luaL_typename(l, stackIdx));
+		lua_pushfstring(l, "Userdata of %s expected, got %s. Location %s:%d %s", typeInfo.m_typeName, luaL_typename(l, stackIdx), file, line, func);
 	}
 	}
 
 
 	return err;
 	return err;
 }
 }
 
 
-Error LuaBinder::checkArgsCount(lua_State* l, I argsCount)
+Error LuaBinder::checkArgsCount(lua_State* l, const Char* file, U32 line, const Char* func, I argsCount)
 {
 {
 	const I actualArgsCount = lua_gettop(l);
 	const I actualArgsCount = lua_gettop(l);
 
 
 	if(argsCount != actualArgsCount)
 	if(argsCount != actualArgsCount)
 	{
 	{
-		lua_pushfstring(l, "Expecting %d arguments, got %d", argsCount, actualArgsCount);
+		lua_pushfstring(l, "Expecting %d arguments, got %d. Location %s:%d %s", argsCount, actualArgsCount, file, line, func);
 		return Error::kUserData;
 		return Error::kUserData;
 	}
 	}
 
 

+ 28 - 33
AnKi/Script/LuaBinder.h

@@ -21,16 +21,12 @@ namespace anki {
 // Forward
 // Forward
 class LuaUserData;
 class LuaUserData;
 
 
-/// @addtogroup script
-/// @{
+#define ANKI_LUA_ERROR() luaL_error(l, "Glue error at: " ANKI_FILE ":" ANKI_STRINGIZE(__LINE__) " %s", ANKI_FUNC)
+#define ANKI_LUA_ERROR_MSG(message) luaL_error(l, "Glue error: " message " (" ANKI_FILE ":" ANKI_STRINGIZE(__LINE__) " %s)", ANKI_FUNC)
 
 
-/// @memberof LuaUserData
 using LuaUserDataSerializeCallback = void (*)(LuaUserData& self, void* data, PtrSize& size);
 using LuaUserDataSerializeCallback = void (*)(LuaUserData& self, void* data, PtrSize& size);
-
-/// @memberof LuaUserData
 using LuaUserDataDeserializeCallback = void (*)(const void* data, LuaUserData& self);
 using LuaUserDataDeserializeCallback = void (*)(const void* data, LuaUserData& self);
 
 
-/// @memberof LuaUserData
 class LuaUserDataTypeInfo
 class LuaUserDataTypeInfo
 {
 {
 public:
 public:
@@ -41,11 +37,11 @@ public:
 	LuaUserDataDeserializeCallback m_deserializeCallback;
 	LuaUserDataDeserializeCallback m_deserializeCallback;
 };
 };
 
 
-/// LUA userdata.
+// LUA userdata.
 class LuaUserData
 class LuaUserData
 {
 {
 public:
 public:
-	/// @note NEVER ADD A DESTRUCTOR. LUA cannot call that.
+	// Note: NEVER ADD A DESTRUCTOR. LUA cannot call that.
 	~LuaUserData() = delete;
 	~LuaUserData() = delete;
 
 
 	I64 getSig() const
 	I64 getSig() const
@@ -61,7 +57,7 @@ public:
 		m_addressOrGarbageCollect = kGarbageCollectedMagic;
 		m_addressOrGarbageCollect = kGarbageCollectedMagic;
 	}
 	}
 
 
-	/// @note Accepting const void* is wrong because getData returns a mutable pointer. Fix that.
+	// Note: Accepting const void* is wrong because getData returns a mutable pointer. Fix that.
 	void initPointed(const LuaUserDataTypeInfo* info, const void* ptrToObject)
 	void initPointed(const LuaUserDataTypeInfo* info, const void* ptrToObject)
 	{
 	{
 		ANKI_ASSERT(info);
 		ANKI_ASSERT(info);
@@ -128,14 +124,13 @@ private:
 	const LuaUserDataTypeInfo* m_info = nullptr;
 	const LuaUserDataTypeInfo* m_info = nullptr;
 };
 };
 
 
-/// @memberof LuaBinder
 class LuaBinderSerializeGlobalsCallback
 class LuaBinderSerializeGlobalsCallback
 {
 {
 public:
 public:
 	virtual void write(const void* data, PtrSize dataSize) = 0;
 	virtual void write(const void* data, PtrSize dataSize) = 0;
 };
 };
 
 
-/// Lua binder class. A wrapper on top of LUA
+// Lua binder class. A wrapper on top of LUA
 class LuaBinder
 class LuaBinder
 {
 {
 public:
 public:
@@ -153,7 +148,7 @@ public:
 		return m_l;
 		return m_l;
 	}
 	}
 
 
-	/// Expose a variable to the lua state
+	// Expose a variable to the lua state
 	template<typename T>
 	template<typename T>
 	static void exposeVariable(lua_State* state, CString name, T* y)
 	static void exposeVariable(lua_State* state, CString name, T* y)
 	{
 	{
@@ -173,7 +168,7 @@ public:
 		luaL_setmetatable(state, LuaUserData::getDataTypeInfoFor<T>().m_typeName);
 		luaL_setmetatable(state, LuaUserData::getDataTypeInfoFor<T>().m_typeName);
 	}
 	}
 
 
-	/// Evaluate a string
+	// Evaluate a string
 	static Error evalString(lua_State* state, const CString& str);
 	static Error evalString(lua_State* state, const CString& str);
 
 
 	static void garbageCollect(lua_State* state)
 	static void garbageCollect(lua_State* state)
@@ -181,36 +176,36 @@ public:
 		lua_gc(state, LUA_GCCOLLECT, 0);
 		lua_gc(state, LUA_GCCOLLECT, 0);
 	}
 	}
 
 
-	/// For debugging purposes
+	// For debugging purposes
 	static void stackDump(lua_State* l);
 	static void stackDump(lua_State* l);
 
 
-	/// Create a new LUA class
+	// Create a new LUA class
 	static void createClass(lua_State* l, const LuaUserDataTypeInfo* typeInfo);
 	static void createClass(lua_State* l, const LuaUserDataTypeInfo* typeInfo);
 
 
-	/// Add new function in a class that it's already in the stack
+	// Add new function in a class that it's already in the stack
 	static void pushLuaCFuncMethod(lua_State* l, const char* name, lua_CFunction luafunc);
 	static void pushLuaCFuncMethod(lua_State* l, const char* name, lua_CFunction luafunc);
 
 
-	/// Add a new static function in the class.
+	// Add a new static function in the class.
 	static void pushLuaCFuncStaticMethod(lua_State* l, const char* className, const char* name, lua_CFunction luafunc);
 	static void pushLuaCFuncStaticMethod(lua_State* l, const char* className, const char* name, lua_CFunction luafunc);
 
 
-	/// Add a new function.
+	// Add a new function.
 	static void pushLuaCFunc(lua_State* l, const char* name, lua_CFunction luafunc);
 	static void pushLuaCFunc(lua_State* l, const char* name, lua_CFunction luafunc);
 
 
-	/// Dump global variables.
+	// Dump global variables.
 	static void serializeGlobals(lua_State* l, LuaBinderSerializeGlobalsCallback& callback);
 	static void serializeGlobals(lua_State* l, LuaBinderSerializeGlobalsCallback& callback);
 
 
-	/// Deserialize global variables.
+	// Deserialize global variables.
 	static void deserializeGlobals(lua_State* l, const void* data, PtrSize dataSize);
 	static void deserializeGlobals(lua_State* l, const void* data, PtrSize dataSize);
 
 
-	/// Make sure that the arguments match the argsCount number
-	static Error checkArgsCount(lua_State* l, I argsCount);
+	// Make sure that the arguments match the argsCount number
+	static Error checkArgsCount(lua_State* l, const Char* file, U32 line, const Char* func, I argsCount);
 
 
-	/// Get a number from the stack.
+	// Get a number from the stack.
 	template<typename TNumber>
 	template<typename TNumber>
-	static Error checkNumber(lua_State* l, I32 stackIdx, TNumber& number)
+	static Error checkNumber(lua_State* l, const Char* file, U32 line, const Char* func, I32 stackIdx, TNumber& number)
 	{
 	{
 		lua_Number lnum;
 		lua_Number lnum;
-		Error err = checkNumberInternal(l, stackIdx, lnum);
+		Error err = checkNumberInternal(l, file, line, func, stackIdx, lnum);
 		if(!err)
 		if(!err)
 		{
 		{
 			number = TNumber(lnum);
 			number = TNumber(lnum);
@@ -218,13 +213,14 @@ public:
 		return err;
 		return err;
 	}
 	}
 
 
-	/// Get a string from the stack.
-	static Error checkString(lua_State* l, I32 stackIdx, const char*& out);
+	// Get a string from the stack.
+	static Error checkString(lua_State* l, const Char* file, U32 line, const Char* func, I32 stackIdx, const char*& out);
 
 
-	/// Get some user data from the stack.
-	/// The function uses the type signature to validate the type and not the
-	/// typeName. That is supposed to be faster.
-	static Error checkUserData(lua_State* l, I32 stackIdx, const LuaUserDataTypeInfo& typeInfo, LuaUserData*& out);
+	// Get some user data from the stack.
+	// The function uses the type signature to validate the type and not the
+	// typeName. That is supposed to be faster.
+	static Error checkUserData(lua_State* l, const Char* file, U32 line, const Char* func, I32 stackIdx, const LuaUserDataTypeInfo& typeInfo,
+							   LuaUserData*& out);
 
 
 private:
 private:
 	lua_State* m_l = nullptr;
 	lua_State* m_l = nullptr;
@@ -232,8 +228,7 @@ private:
 
 
 	static void* luaAllocCallback(void* userData, void* ptr, PtrSize osize, PtrSize nsize);
 	static void* luaAllocCallback(void* userData, void* ptr, PtrSize osize, PtrSize nsize);
 
 
-	static Error checkNumberInternal(lua_State* l, I32 stackIdx, lua_Number& number);
+	static Error checkNumberInternal(lua_State* l, const Char* file, U32 line, const Char* func, I32 stackIdx, lua_Number& number);
 };
 };
-/// @}
 
 
 } // end namespace anki
 } // end namespace anki

+ 47 - 106
AnKi/Script/LuaGlueGen.py

@@ -136,8 +136,7 @@ def ret(ret_el):
             wglue("lua_pushnil(l);")
             wglue("lua_pushnil(l);")
             wglue("return 1;")
             wglue("return 1;")
         else:
         else:
-            wglue("lua_pushstring(l, \"Glue code returned nullptr\");")
-            wglue("return -1;")
+            wglue("return luaL_error(l, \"Returned nullptr. Location %s:%d %s\", ANKI_FILE, __LINE__, ANKI_FUNC);")
         ident(-1)
         ident(-1)
         wglue("}")
         wglue("}")
         wglue("")
         wglue("")
@@ -152,8 +151,7 @@ def ret(ret_el):
         wglue("if(ret) [[unlikely]]")
         wglue("if(ret) [[unlikely]]")
         wglue("{")
         wglue("{")
         ident(1)
         ident(1)
-        wglue("lua_pushstring(l, \"Glue code returned an error\");")
-        wglue("return -1;")
+        wglue("return luaL_error(l, \"Returned an error. Location %s:%d %s\", ANKI_FILE, __LINE__, ANKI_FUNC);")
         ident(-1)
         ident(-1)
         wglue("}")
         wglue("}")
         wglue("")
         wglue("")
@@ -164,19 +162,19 @@ def ret(ret_el):
             wglue("ud = static_cast<LuaUserData*>(voidp);")
             wglue("ud = static_cast<LuaUserData*>(voidp);")
             wglue("luaL_setmetatable(l, \"%s\");" % type)
             wglue("luaL_setmetatable(l, \"%s\");" % type)
 
 
-            wglue("extern LuaUserDataTypeInfo luaUserDataTypeInfo%s;" % type)
+            wglue("extern LuaUserDataTypeInfo g_luaUserDataTypeInfo%s;" % type)
             if is_ptr:
             if is_ptr:
-                wglue("ud->initPointed(&luaUserDataTypeInfo%s, ret);" % type)
+                wglue("ud->initPointed(&g_luaUserDataTypeInfo%s, ret);" % type)
             elif is_ref:
             elif is_ref:
-                wglue("ud->initPointed(&luaUserDataTypeInfo%s, &ret);" % type)
+                wglue("ud->initPointed(&g_luaUserDataTypeInfo%s, &ret);" % type)
         else:
         else:
             wglue("size = LuaUserData::computeSizeForGarbageCollected<%s>();" % type)
             wglue("size = LuaUserData::computeSizeForGarbageCollected<%s>();" % type)
             wglue("voidp = lua_newuserdata(l, size);")
             wglue("voidp = lua_newuserdata(l, size);")
             wglue("luaL_setmetatable(l, \"%s\");" % type)
             wglue("luaL_setmetatable(l, \"%s\");" % type)
 
 
             wglue("ud = static_cast<LuaUserData*>(voidp);")
             wglue("ud = static_cast<LuaUserData*>(voidp);")
-            wglue("extern LuaUserDataTypeInfo luaUserDataTypeInfo%s;" % type)
-            wglue("ud->initGarbageCollected(&luaUserDataTypeInfo%s);" % type)
+            wglue("extern LuaUserDataTypeInfo g_luaUserDataTypeInfo%s;" % type)
+            wglue("ud->initGarbageCollected(&g_luaUserDataTypeInfo%s);" % type)
 
 
             wglue("::new(ud->getData<%s>()) %s(std::move(ret));" % (type, type))
             wglue("::new(ud->getData<%s>()) %s(std::move(ret));" % (type, type))
 
 
@@ -191,36 +189,36 @@ def arg(arg_txt, stack_index, index):
 
 
     if type_is_bool(type) or type_is_number(type):
     if type_is_bool(type) or type_is_number(type):
         wglue("%s arg%d;" % (type, index))
         wglue("%s arg%d;" % (type, index))
-        wglue("if(LuaBinder::checkNumber(l, %d, arg%d)) [[unlikely]]" % (stack_index, index))
+        wglue("if(LuaBinder::checkNumber(l, ANKI_FILE, __LINE__, ANKI_FUNC, %d, arg%d)) [[unlikely]]" % (stack_index, index))
         wglue("{")
         wglue("{")
         ident(1)
         ident(1)
-        wglue("return -1;")
+        wglue("return lua_error(l);")
         ident(-1)
         ident(-1)
         wglue("}")
         wglue("}")
     elif type == "char" or type == "CString":
     elif type == "char" or type == "CString":
         wglue("const char* arg%d;" % index)
         wglue("const char* arg%d;" % index)
-        wglue("if(LuaBinder::checkString(l, %d, arg%d)) [[unlikely]]" % (stack_index, index))
+        wglue("if(LuaBinder::checkString(l, ANKI_FILE, __LINE__, ANKI_FUNC, %d, arg%d)) [[unlikely]]" % (stack_index, index))
         wglue("{")
         wglue("{")
         ident(1)
         ident(1)
-        wglue("return -1;")
+        wglue("return lua_error(l);")
         ident(-1)
         ident(-1)
         wglue("}")
         wglue("}")
     elif type_is_enum(type):
     elif type_is_enum(type):
         wglue("lua_Number arg%dTmp;" % index)
         wglue("lua_Number arg%dTmp;" % index)
-        wglue("if(LuaBinder::checkNumber(l, %d, arg%dTmp)) [[unlikely]]" % (stack_index, index))
+        wglue("if(LuaBinder::checkNumber(l, ANKI_FILE, __LINE__, ANKI_FUNC, %d, arg%dTmp)) [[unlikely]]" % (stack_index, index))
         wglue("{")
         wglue("{")
         ident(1)
         ident(1)
-        wglue("return -1;")
+        wglue("return lua_error(l);")
         ident(-1)
         ident(-1)
         wglue("}")
         wglue("}")
         wglue("const %s arg%d = %s(arg%dTmp);" % (type, index, type, index))
         wglue("const %s arg%d = %s(arg%dTmp);" % (type, index, type, index))
     else:
     else:
         # Must be user type
         # Must be user type
-        wglue("extern LuaUserDataTypeInfo luaUserDataTypeInfo%s;" % type)
-        wglue("if(LuaBinder::checkUserData(l, %d, luaUserDataTypeInfo%s, ud)) [[unlikely]]" % (stack_index, type))
+        wglue("extern LuaUserDataTypeInfo g_luaUserDataTypeInfo%s;" % type)
+        wglue("if(LuaBinder::checkUserData(l, ANKI_FILE, __LINE__, ANKI_FUNC, %d, g_luaUserDataTypeInfo%s, ud)) [[unlikely]]" % (stack_index, type))
         wglue("{")
         wglue("{")
         ident(1)
         ident(1)
-        wglue("return -1;")
+        wglue("return lua_error(l);")
         ident(-1)
         ident(-1)
         wglue("}")
         wglue("}")
         wglue("")
         wglue("")
@@ -279,10 +277,10 @@ def check_args(args_el, bias):
     else:
     else:
         count = bias
         count = bias
 
 
-    wglue("if(LuaBinder::checkArgsCount(l, %d)) [[unlikely]]" % count)
+    wglue("if(LuaBinder::checkArgsCount(l, ANKI_FILE, __LINE__, ANKI_FUNC, %d)) [[unlikely]]" % count)
     wglue("{")
     wglue("{")
     ident(1)
     ident(1)
-    wglue("return -1;")
+    wglue("return lua_error(l);")
     ident(-1)
     ident(-1)
     wglue("}")
     wglue("}")
     wglue("")
     wglue("")
@@ -336,8 +334,8 @@ def method(class_name, meth_el):
     meth_name = meth_el.get("name")
     meth_name = meth_el.get("name")
     meth_alias = get_meth_alias(meth_el)
     meth_alias = get_meth_alias(meth_el)
 
 
-    wglue("/// Pre-wrap method %s::%s." % (class_name, meth_name))
-    wglue("static inline int pwrap%s%s(lua_State* l)" % (class_name, meth_alias))
+    wglue("// Wrap method %s::%s." % (class_name, meth_name))
+    wglue("static inline int wrap%s%s(lua_State* l)" % (class_name, meth_alias))
     wglue("{")
     wglue("{")
     ident(1)
     ident(1)
     write_local_vars()
     write_local_vars()
@@ -346,10 +344,10 @@ def method(class_name, meth_el):
 
 
     # Get this pointer
     # Get this pointer
     wglue("// Get \"this\" as \"self\"")
     wglue("// Get \"this\" as \"self\"")
-    wglue("if(LuaBinder::checkUserData(l, 1, luaUserDataTypeInfo%s, ud))" % class_name)
+    wglue("if(LuaBinder::checkUserData(l, ANKI_FILE, __LINE__, ANKI_FUNC, 1, g_luaUserDataTypeInfo%s, ud)) [[unlikely]]" % class_name)
     wglue("{")
     wglue("{")
     ident(1)
     ident(1)
-    wglue("return -1;")
+    wglue("return lua_error(l);")
     ident(-1)
     ident(-1)
     wglue("}")
     wglue("}")
     wglue("")
     wglue("")
@@ -385,25 +383,6 @@ def method(class_name, meth_el):
     wglue("}")
     wglue("}")
     wglue("")
     wglue("")
 
 
-    # Write the actual function
-    wglue("/// Wrap method %s::%s." % (class_name, meth_name))
-    wglue("static int wrap%s%s(lua_State* l)" % (class_name, meth_alias))
-    wglue("{")
-    ident(1)
-    wglue("int res = pwrap%s%s(l);" % (class_name, meth_alias))
-    wglue("if(res >= 0)")
-    wglue("{")
-    ident(1)
-    wglue("return res;")
-    ident(-1)
-    wglue("}")
-    wglue("")
-    wglue("lua_error(l);")
-    wglue("return 0;")
-    ident(-1)
-    wglue("}")
-    wglue("")
-
 
 
 def static_method(class_name, meth_el):
 def static_method(class_name, meth_el):
     """ Handle a static method """
     """ Handle a static method """
@@ -411,7 +390,7 @@ def static_method(class_name, meth_el):
     meth_name = meth_el.get("name")
     meth_name = meth_el.get("name")
     meth_alias = get_meth_alias(meth_el)
     meth_alias = get_meth_alias(meth_el)
 
 
-    wglue("/// Pre-wrap static method %s::%s." % (class_name, meth_name))
+    wglue("// Wrap static method %s::%s." % (class_name, meth_name))
     wglue("static inline int pwrap%s%s(lua_State* l)" % (class_name, meth_alias))
     wglue("static inline int pwrap%s%s(lua_State* l)" % (class_name, meth_alias))
     wglue("{")
     wglue("{")
     ident(1)
     ident(1)
@@ -442,30 +421,11 @@ def static_method(class_name, meth_el):
     wglue("}")
     wglue("}")
     wglue("")
     wglue("")
 
 
-    # Write the actual function
-    wglue("/// Wrap static method %s::%s." % (class_name, meth_name))
-    wglue("static int wrap%s%s(lua_State* l)" % (class_name, meth_alias))
-    wglue("{")
-    ident(1)
-    wglue("int res = pwrap%s%s(l);" % (class_name, meth_alias))
-    wglue("if(res >= 0)")
-    wglue("{")
-    ident(1)
-    wglue("return res;")
-    ident(-1)
-    wglue("}")
-    wglue("")
-    wglue("lua_error(l);")
-    wglue("return 0;")
-    ident(-1)
-    wglue("}")
-    wglue("")
-
 
 
 def constructor(constr_el, class_name, constructor_idx):
 def constructor(constr_el, class_name, constructor_idx):
     """ Handle constructor """
     """ Handle constructor """
 
 
-    wglue("/// Pre-wrap constructor for %s." % (class_name))
+    wglue("// Pre-wrap constructor for %s." % (class_name))
     wglue("static inline int pwrap%sCtor%d(lua_State* l)" % (class_name, constructor_idx))
     wglue("static inline int pwrap%sCtor%d(lua_State* l)" % (class_name, constructor_idx))
     wglue("{")
     wglue("{")
     ident(1)
     ident(1)
@@ -481,10 +441,10 @@ def constructor(constr_el, class_name, constructor_idx):
 
 
     wglue("size = LuaUserData::computeSizeForGarbageCollected<%s>();" % class_name)
     wglue("size = LuaUserData::computeSizeForGarbageCollected<%s>();" % class_name)
     wglue("voidp = lua_newuserdata(l, size);")
     wglue("voidp = lua_newuserdata(l, size);")
-    wglue("luaL_setmetatable(l, luaUserDataTypeInfo%s.m_typeName);" % class_name)
+    wglue("luaL_setmetatable(l, g_luaUserDataTypeInfo%s.m_typeName);" % class_name)
     wglue("ud = static_cast<LuaUserData*>(voidp);")
     wglue("ud = static_cast<LuaUserData*>(voidp);")
-    wglue("extern LuaUserDataTypeInfo luaUserDataTypeInfo%s;" % class_name)
-    wglue("ud->initGarbageCollected(&luaUserDataTypeInfo%s);" % class_name)
+    wglue("extern LuaUserDataTypeInfo g_luaUserDataTypeInfo%s;" % class_name)
+    wglue("ud->initGarbageCollected(&g_luaUserDataTypeInfo%s);" % class_name)
     wglue("::new(ud->getData<%s>()) %s(%s);" % (class_name, class_name, args_str))
     wglue("::new(ud->getData<%s>()) %s(%s);" % (class_name, class_name, args_str))
     wglue("")
     wglue("")
 
 
@@ -518,7 +478,7 @@ def constructors(constructors_el, class_name):
         raise Exception("Found no <constructor>")
         raise Exception("Found no <constructor>")
 
 
     # Create the landing function
     # Create the landing function
-    wglue("/// Wrap constructors for %s." % class_name)
+    wglue("// Wrap constructors for %s." % class_name)
     wglue("static int wrap%sCtor(lua_State* l)" % class_name)
     wglue("static int wrap%sCtor(lua_State* l)" % class_name)
     wglue("{")
     wglue("{")
     ident(1)
     ident(1)
@@ -559,7 +519,7 @@ def constructors(constructors_el, class_name):
 def destructor(class_name):
 def destructor(class_name):
     """ Create a destructor """
     """ Create a destructor """
 
 
-    wglue("/// Wrap destructor for %s." % (class_name))
+    wglue("// Wrap destructor for %s." % (class_name))
     wglue("static int wrap%sDtor(lua_State* l)" % class_name)
     wglue("static int wrap%sDtor(lua_State* l)" % class_name)
     wglue("{")
     wglue("{")
     ident(1)
     ident(1)
@@ -567,10 +527,10 @@ def destructor(class_name):
 
 
     check_args(None, 1)
     check_args(None, 1)
 
 
-    wglue("if(LuaBinder::checkUserData(l, 1, luaUserDataTypeInfo%s, ud)) [[unlikely]]" % class_name)
+    wglue("if(LuaBinder::checkUserData(l, ANKI_FILE, __LINE__, ANKI_FUNC, 1, g_luaUserDataTypeInfo%s, ud)) [[unlikely]]" % class_name)
     wglue("{")
     wglue("{")
     ident(1)
     ident(1)
-    wglue("return -1;")
+    wglue("return lua_error(l);")
     ident(-1)
     ident(-1)
     wglue("}")
     wglue("}")
     wglue("")
     wglue("")
@@ -601,7 +561,7 @@ def class_(class_el):
     if serialize:
     if serialize:
         # Serialize
         # Serialize
         serialize_cb_name = "serialize%s" % class_name
         serialize_cb_name = "serialize%s" % class_name
-        wglue("/// Serialize %s" % class_name)
+        wglue("// Serialize %s" % class_name)
         wglue("static void %s(LuaUserData& self, void* data, PtrSize& size)" % serialize_cb_name)
         wglue("static void %s(LuaUserData& self, void* data, PtrSize& size)" % serialize_cb_name)
         wglue("{")
         wglue("{")
         ident(1)
         ident(1)
@@ -613,7 +573,7 @@ def class_(class_el):
 
 
         # Deserialize
         # Deserialize
         deserialize_cb_name = "deserialize%s" % class_name
         deserialize_cb_name = "deserialize%s" % class_name
-        wglue("/// De-serialize %s" % class_name)
+        wglue("// De-serialize %s" % class_name)
         wglue("static void %s(const void* data, LuaUserData& self)" % deserialize_cb_name)
         wglue("static void %s(const void* data, LuaUserData& self)" % deserialize_cb_name)
         wglue("{")
         wglue("{")
         ident(1)
         ident(1)
@@ -629,7 +589,7 @@ def class_(class_el):
         deserialize_cb_name = "nullptr"
         deserialize_cb_name = "nullptr"
 
 
     # Write the type info
     # Write the type info
-    wglue("LuaUserDataTypeInfo luaUserDataTypeInfo%s = {" % class_name)
+    wglue("LuaUserDataTypeInfo g_luaUserDataTypeInfo%s = {" % class_name)
     ident(1)
     ident(1)
     wglue("%d, \"%s\", LuaUserData::computeSizeForGarbageCollected<%s>(), %s, %s" %
     wglue("%d, \"%s\", LuaUserData::computeSizeForGarbageCollected<%s>(), %s, %s" %
           (type_sig(class_name), class_name, class_name, serialize_cb_name, deserialize_cb_name))
           (type_sig(class_name), class_name, class_name, serialize_cb_name, deserialize_cb_name))
@@ -642,7 +602,7 @@ def class_(class_el):
     wglue("const LuaUserDataTypeInfo& LuaUserData::getDataTypeInfoFor<%s>()" % class_name)
     wglue("const LuaUserDataTypeInfo& LuaUserData::getDataTypeInfoFor<%s>()" % class_name)
     wglue("{")
     wglue("{")
     ident(1)
     ident(1)
-    wglue("return luaUserDataTypeInfo%s;" % class_name)
+    wglue("return g_luaUserDataTypeInfo%s;" % class_name)
     ident(-1)
     ident(-1)
     wglue("}")
     wglue("}")
     wglue("")
     wglue("")
@@ -676,15 +636,15 @@ def class_(class_el):
             meth_names_aliases.append([meth_name, meth_alias, is_static])
             meth_names_aliases.append([meth_name, meth_alias, is_static])
 
 
     # Start class declaration
     # Start class declaration
-    wglue("/// Wrap class %s." % class_name)
+    wglue("// Wrap class %s." % class_name)
     wglue("static inline void wrap%s(lua_State* l)" % class_name)
     wglue("static inline void wrap%s(lua_State* l)" % class_name)
     wglue("{")
     wglue("{")
     ident(1)
     ident(1)
-    wglue("LuaBinder::createClass(l, &luaUserDataTypeInfo%s);" % class_name)
+    wglue("LuaBinder::createClass(l, &g_luaUserDataTypeInfo%s);" % class_name)
 
 
     # Register constructor
     # Register constructor
     if has_constructor:
     if has_constructor:
-        wglue("LuaBinder::pushLuaCFuncStaticMethod(l, luaUserDataTypeInfo%s.m_typeName, \"new\", wrap%sCtor);" %
+        wglue("LuaBinder::pushLuaCFuncStaticMethod(l, g_luaUserDataTypeInfo%s.m_typeName, \"new\", wrap%sCtor);" %
               (class_name, class_name))
               (class_name, class_name))
 
 
     # Register destructor
     # Register destructor
@@ -697,7 +657,7 @@ def class_(class_el):
             meth_alias = meth_name_alias[1]
             meth_alias = meth_name_alias[1]
             is_static = meth_name_alias[2]
             is_static = meth_name_alias[2]
             if is_static:
             if is_static:
-                wglue("LuaBinder::pushLuaCFuncStaticMethod(l, luaUserDataTypeInfo%s.m_typeName, \"%s\", wrap%s%s);" %
+                wglue("LuaBinder::pushLuaCFuncStaticMethod(l, g_luaUserDataTypeInfo%s.m_typeName, \"%s\", wrap%s%s);" %
                       (class_name, meth_alias, class_name, meth_alias))
                       (class_name, meth_alias, class_name, meth_alias))
             else:
             else:
                 wglue("LuaBinder::pushLuaCFuncMethod(l, \"%s\", wrap%s%s);" % (meth_alias, class_name, meth_alias))
                 wglue("LuaBinder::pushLuaCFuncMethod(l, \"%s\", wrap%s%s);" % (meth_alias, class_name, meth_alias))
@@ -715,8 +675,8 @@ def function(func_el):
     func_name = func_el.get("name")
     func_name = func_el.get("name")
     func_alias = get_meth_alias(func_el)
     func_alias = get_meth_alias(func_el)
 
 
-    wglue("/// Pre-wrap function %s." % func_name)
-    wglue("static inline int pwrap%s(lua_State* l)" % func_alias)
+    wglue("// Wrap function %s." % func_name)
+    wglue("static inline int wrap%s(lua_State* l)" % func_alias)
     wglue("{")
     wglue("{")
     ident(1)
     ident(1)
     write_local_vars()
     write_local_vars()
@@ -753,31 +713,12 @@ def function(func_el):
     wglue("}")
     wglue("}")
     wglue("")
     wglue("")
 
 
-    # Write the actual function
-    wglue("/// Wrap function %s." % func_name)
-    wglue("static int wrap%s(lua_State* l)" % func_alias)
-    wglue("{")
-    ident(1)
-    wglue("int res = pwrap%s(l);" % func_alias)
-    wglue("if(res >= 0)")
-    wglue("{")
-    ident(1)
-    wglue("return res;")
-    ident(-1)
-    wglue("}")
-    wglue("")
-    wglue("lua_error(l);")
-    wglue("return 0;")
-    ident(-1)
-    wglue("}")
-    wglue("")
-
 
 
 def enum(enum_el):
 def enum(enum_el):
     enum_name = enum_el.get("name")
     enum_name = enum_el.get("name")
 
 
     # Write the type info
     # Write the type info
-    wglue("LuaUserDataTypeInfo luaUserDataTypeInfo%s = {" % enum_name)
+    wglue("LuaUserDataTypeInfo g_luaUserDataTypeInfo%s = {" % enum_name)
     ident(1)
     ident(1)
     wglue("%d, \"%s\", 0, nullptr, nullptr" % (type_sig(enum_name), enum_name))
     wglue("%d, \"%s\", 0, nullptr, nullptr" % (type_sig(enum_name), enum_name))
     ident(-1)
     ident(-1)
@@ -789,20 +730,20 @@ def enum(enum_el):
     wglue("const LuaUserDataTypeInfo& LuaUserData::getDataTypeInfoFor<%s>()" % enum_name)
     wglue("const LuaUserDataTypeInfo& LuaUserData::getDataTypeInfoFor<%s>()" % enum_name)
     wglue("{")
     wglue("{")
     ident(1)
     ident(1)
-    wglue("return luaUserDataTypeInfo%s;" % enum_name)
+    wglue("return g_luaUserDataTypeInfo%s;" % enum_name)
     ident(-1)
     ident(-1)
     wglue("}")
     wglue("}")
     wglue("")
     wglue("")
 
 
     # Start declaration
     # Start declaration
-    wglue("/// Wrap enum %s." % enum_name)
+    wglue("// Wrap enum %s." % enum_name)
     wglue("static inline void wrap%s(lua_State* l)" % enum_name)
     wglue("static inline void wrap%s(lua_State* l)" % enum_name)
     wglue("{")
     wglue("{")
     ident(1)
     ident(1)
 
 
     wglue("lua_newtable(l);")  # Push new table
     wglue("lua_newtable(l);")  # Push new table
-    wglue("lua_setglobal(l, luaUserDataTypeInfo%s.m_typeName);" % enum_name)  # Pop and make global
-    wglue("lua_getglobal(l, luaUserDataTypeInfo%s.m_typeName);" % enum_name)  # Push the table again
+    wglue("lua_setglobal(l, g_luaUserDataTypeInfo%s.m_typeName);" % enum_name)  # Pop and make global
+    wglue("lua_getglobal(l, g_luaUserDataTypeInfo%s.m_typeName);" % enum_name)  # Push the table again
     wglue("")
     wglue("")
 
 
     # Now the table is at the top of the stack
     # Now the table is at the top of the stack
@@ -866,7 +807,7 @@ def main():
                 func_names.append(f.get("name"))
                 func_names.append(f.get("name"))
 
 
         # Wrap function
         # Wrap function
-        wglue("/// Wrap the module.")
+        wglue("// Wrap the module.")
         wglue("void wrapModule%s(lua_State* l)" % get_base_fname(filename))
         wglue("void wrapModule%s(lua_State* l)" % get_base_fname(filename))
         wglue("{")
         wglue("{")
         ident(1)
         ident(1)

File diff suppressed because it is too large
+ 168 - 363
AnKi/Script/Math.cpp


+ 27 - 67
AnKi/Script/Renderer.cpp

@@ -19,31 +19,31 @@ static Renderer* getRenderer(lua_State* l)
 	return &Renderer::getSingleton();
 	return &Renderer::getSingleton();
 }
 }
 
 
-LuaUserDataTypeInfo luaUserDataTypeInfoRenderer = {4110901869536678112, "Renderer", LuaUserData::computeSizeForGarbageCollected<Renderer>(), nullptr,
-												   nullptr};
+LuaUserDataTypeInfo g_luaUserDataTypeInfoRenderer = {-8680680372486703494, "Renderer", LuaUserData::computeSizeForGarbageCollected<Renderer>(),
+													 nullptr, nullptr};
 
 
 template<>
 template<>
 const LuaUserDataTypeInfo& LuaUserData::getDataTypeInfoFor<Renderer>()
 const LuaUserDataTypeInfo& LuaUserData::getDataTypeInfoFor<Renderer>()
 {
 {
-	return luaUserDataTypeInfoRenderer;
+	return g_luaUserDataTypeInfoRenderer;
 }
 }
 
 
-/// Pre-wrap method Renderer::getAspectRatio.
-static inline int pwrapRenderergetAspectRatio(lua_State* l)
+// Wrap method Renderer::getAspectRatio.
+static inline int wrapRenderergetAspectRatio(lua_State* l)
 {
 {
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] PtrSize size;
 	[[maybe_unused]] PtrSize size;
 
 
-	if(LuaBinder::checkArgsCount(l, 1)) [[unlikely]]
+	if(LuaBinder::checkArgsCount(l, ANKI_FILE, __LINE__, ANKI_FUNC, 1)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	// Get "this" as "self"
 	// Get "this" as "self"
-	if(LuaBinder::checkUserData(l, 1, luaUserDataTypeInfoRenderer, ud))
+	if(LuaBinder::checkUserData(l, ANKI_FILE, __LINE__, ANKI_FUNC, 1, g_luaUserDataTypeInfoRenderer, ud)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	Renderer* self = ud->getData<Renderer>();
 	Renderer* self = ud->getData<Renderer>();
@@ -57,44 +57,31 @@ static inline int pwrapRenderergetAspectRatio(lua_State* l)
 	return 1;
 	return 1;
 }
 }
 
 
-/// Wrap method Renderer::getAspectRatio.
-static int wrapRenderergetAspectRatio(lua_State* l)
-{
-	int res = pwrapRenderergetAspectRatio(l);
-	if(res >= 0)
-	{
-		return res;
-	}
-
-	lua_error(l);
-	return 0;
-}
-
-/// Pre-wrap method Renderer::setCurrentDebugRenderTarget.
-static inline int pwrapRenderersetCurrentDebugRenderTarget(lua_State* l)
+// Wrap method Renderer::setCurrentDebugRenderTarget.
+static inline int wrapRenderersetCurrentDebugRenderTarget(lua_State* l)
 {
 {
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] PtrSize size;
 	[[maybe_unused]] PtrSize size;
 
 
-	if(LuaBinder::checkArgsCount(l, 2)) [[unlikely]]
+	if(LuaBinder::checkArgsCount(l, ANKI_FILE, __LINE__, ANKI_FUNC, 2)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	// Get "this" as "self"
 	// Get "this" as "self"
-	if(LuaBinder::checkUserData(l, 1, luaUserDataTypeInfoRenderer, ud))
+	if(LuaBinder::checkUserData(l, ANKI_FILE, __LINE__, ANKI_FUNC, 1, g_luaUserDataTypeInfoRenderer, ud)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	Renderer* self = ud->getData<Renderer>();
 	Renderer* self = ud->getData<Renderer>();
 
 
 	// Pop arguments
 	// Pop arguments
 	const char* arg0;
 	const char* arg0;
-	if(LuaBinder::checkString(l, 2, arg0)) [[unlikely]]
+	if(LuaBinder::checkString(l, ANKI_FILE, __LINE__, ANKI_FUNC, 2, arg0)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	// Call the method
 	// Call the method
@@ -103,38 +90,25 @@ static inline int pwrapRenderersetCurrentDebugRenderTarget(lua_State* l)
 	return 0;
 	return 0;
 }
 }
 
 
-/// Wrap method Renderer::setCurrentDebugRenderTarget.
-static int wrapRenderersetCurrentDebugRenderTarget(lua_State* l)
-{
-	int res = pwrapRenderersetCurrentDebugRenderTarget(l);
-	if(res >= 0)
-	{
-		return res;
-	}
-
-	lua_error(l);
-	return 0;
-}
-
-/// Wrap class Renderer.
+// Wrap class Renderer.
 static inline void wrapRenderer(lua_State* l)
 static inline void wrapRenderer(lua_State* l)
 {
 {
-	LuaBinder::createClass(l, &luaUserDataTypeInfoRenderer);
+	LuaBinder::createClass(l, &g_luaUserDataTypeInfoRenderer);
 	LuaBinder::pushLuaCFuncMethod(l, "getAspectRatio", wrapRenderergetAspectRatio);
 	LuaBinder::pushLuaCFuncMethod(l, "getAspectRatio", wrapRenderergetAspectRatio);
 	LuaBinder::pushLuaCFuncMethod(l, "setCurrentDebugRenderTarget", wrapRenderersetCurrentDebugRenderTarget);
 	LuaBinder::pushLuaCFuncMethod(l, "setCurrentDebugRenderTarget", wrapRenderersetCurrentDebugRenderTarget);
 	lua_settop(l, 0);
 	lua_settop(l, 0);
 }
 }
 
 
-/// Pre-wrap function getRenderer.
-static inline int pwrapgetRenderer(lua_State* l)
+// Wrap function getRenderer.
+static inline int wrapgetRenderer(lua_State* l)
 {
 {
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] LuaUserData* ud;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] void* voidp;
 	[[maybe_unused]] PtrSize size;
 	[[maybe_unused]] PtrSize size;
 
 
-	if(LuaBinder::checkArgsCount(l, 0)) [[unlikely]]
+	if(LuaBinder::checkArgsCount(l, ANKI_FILE, __LINE__, ANKI_FUNC, 0)) [[unlikely]]
 	{
 	{
-		return -1;
+		return lua_error(l);
 	}
 	}
 
 
 	// Call the function
 	// Call the function
@@ -143,33 +117,19 @@ static inline int pwrapgetRenderer(lua_State* l)
 	// Push return value
 	// Push return value
 	if(ret == nullptr) [[unlikely]]
 	if(ret == nullptr) [[unlikely]]
 	{
 	{
-		lua_pushstring(l, "Glue code returned nullptr");
-		return -1;
+		return luaL_error(l, "Returned nullptr. Location %s:%d %s", ANKI_FILE, __LINE__, ANKI_FUNC);
 	}
 	}
 
 
 	voidp = lua_newuserdata(l, sizeof(LuaUserData));
 	voidp = lua_newuserdata(l, sizeof(LuaUserData));
 	ud = static_cast<LuaUserData*>(voidp);
 	ud = static_cast<LuaUserData*>(voidp);
 	luaL_setmetatable(l, "Renderer");
 	luaL_setmetatable(l, "Renderer");
-	extern LuaUserDataTypeInfo luaUserDataTypeInfoRenderer;
-	ud->initPointed(&luaUserDataTypeInfoRenderer, ret);
+	extern LuaUserDataTypeInfo g_luaUserDataTypeInfoRenderer;
+	ud->initPointed(&g_luaUserDataTypeInfoRenderer, ret);
 
 
 	return 1;
 	return 1;
 }
 }
 
 
-/// Wrap function getRenderer.
-static int wrapgetRenderer(lua_State* l)
-{
-	int res = pwrapgetRenderer(l);
-	if(res >= 0)
-	{
-		return res;
-	}
-
-	lua_error(l);
-	return 0;
-}
-
-/// Wrap the module.
+// Wrap the module.
 void wrapModuleRenderer(lua_State* l)
 void wrapModuleRenderer(lua_State* l)
 {
 {
 	wrapRenderer(l);
 	wrapRenderer(l);

File diff suppressed because it is too large
+ 174 - 396
AnKi/Script/Scene.cpp


Some files were not shown because too many files changed in this diff