From ed4e627d314bff09013dbd5547b2dcb40eb43037 Mon Sep 17 00:00:00 2001 From: "Nicolas \"Pixel\" Noble" Date: Wed, 31 Jul 2013 09:54:35 +0200 Subject: Few more tweaks to the Lua class exporter. Now we have parent support as well as as the class name. --- includes/BLua.h | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'includes/BLua.h') diff --git a/includes/BLua.h b/includes/BLua.h index 926782a..6db642e 100644 --- a/includes/BLua.h +++ b/includes/BLua.h @@ -264,26 +264,36 @@ struct lua_functypes_t { sLua_##classname::method_##enumvar) #define PUSH_CLASS(classname) \ - bool constructorPushed = false; \ + bool classPushed = true; \ { \ L.newtable(); \ + L.push("name"); \ L.push(#classname); \ - L.copy(-2); \ + L.copy(); \ + L.copy(-4); \ L.setvar(); \ + L.settable(); \ } -#define PUSH_CONSTRUCTOR(classname, enumvar) \ - bool constructorPushed = true; \ +#define PUSH_SUBCLASS(classname, parentname) \ + bool classPushed = true; \ { \ L.newtable(); \ + L.push("name"); \ L.push(#classname); \ - L.copy(-2); \ + L.copy(); \ + L.copy(-4); \ L.setvar(); \ - L.declareFunc("new", sLua_##classname::constructor, -1); \ + L.settable(); \ + L.push("parent"); \ + L.getglobal(#parentname); \ + L.settable(); \ } +#define PUSH_CONSTRUCTOR(classname, enumvar) L.declareFunc("new", sLua_##classname::constructor, -1) + #define PUSH_STATIC(classname, enumvar) { \ - AAssert(constructorPushed, "Please call PUSH_CONSTRUCTOR first"); \ + AAssert(classPushed, "Please call PUSH_(SUB)CLASS first"); \ L.declareFunc( \ classname##_functions[enumvar].name, \ sLua_##classname::static_##enumvar, \ -- cgit v1.2.3