@@ -0,0 +1,10 @@ | |||
[Debug] | |||
Pos=60,60 | |||
Size=400,400 | |||
Collapsed=0 | |||
[Camera Setup] | |||
Pos=60,60 | |||
Size=307,314 | |||
Collapsed=0 | |||
@@ -43,20 +43,24 @@ public: | |||
return (stack << i).End(); | |||
} | |||
static int AddTenInstance(lua_State* l) | |||
LOLUA_DECLARE_RETURN_METHOD(AddTenInstance, GetPtr<DemoObject>(), AddTenMethod, Get<float>(), Get<int32_t>(), Get<int32_t>()); | |||
static int _AddTenInstance(lua_State* l) | |||
{ | |||
auto stack = LuaStack::Begin(l); | |||
DemoObject* obj = stack.GetPtr<DemoObject>(); | |||
float f = stack.Get<float>(); | |||
float f = stack.Get<float>(); | |||
int32_t i = stack.Get<int32_t>(); | |||
int32_t i2 = stack.Get<int32_t>(); | |||
f = obj->AddTenMethod(f); | |||
f = obj->AddTenMethod(f, i, i2); | |||
return (stack << f).End(); | |||
} | |||
float AddTenMethod(float f) | |||
float AddTenMethod(float f, int32_t i, int32_t i2) | |||
{ | |||
UNUSED(i, i2); | |||
return (f + 10); | |||
} | |||
@@ -71,7 +75,8 @@ public: | |||
return (stack << i).End(); | |||
} | |||
static int SetX(lua_State* l) | |||
LOLUA_DECLARE_VOID_METHOD(SetX, GetPtr<DemoObject>(), SetXMethod, Get<int32_t>()); | |||
static int _SetX(lua_State* l) | |||
{ | |||
auto stack = LuaStack::Begin(l); | |||
DemoObject* obj = stack.GetPtr<DemoObject>(); | |||
@@ -82,6 +87,12 @@ public: | |||
return stack.End(); | |||
} | |||
void SetXMethod(int32_t i) | |||
{ | |||
m_x = i; | |||
} | |||
//------------------------------------------------------------------------- | |||
static const LuaObjectLibrary* GetLib() | |||
{ | |||
@@ -190,6 +201,12 @@ public: | |||
function_return: %s, loluademo_return: %i, loluademo_inst_return: %.f, loluademo_getx: %i, loluademo_inst->m_x: %i.\n", | |||
function_return.C(), loluademo_return, loluademo_inst_return, loluademo_getx, loluademo_inst->m_x); | |||
#define /***/ _LOLUA_ARG_1(a00) (float)a00 | |||
#define /***/ _LOLUA_ARG_2(a00, a01) _LOLUA_ARG_1(a00), _LOLUA_ARG_1(a01) | |||
#define /***/ _LOLUA_ARG_3(a00, a01, a02) _LOLUA_ARG_1(a00), _LOLUA_ARG_2(a01, a02) | |||
#define /***/ _LOLUA_ARG_4(a00, a01, a02, a03) _LOLUA_ARG_1(a00), _LOLUA_ARG_3(a01, a02, a03) | |||
msg::info("_LOLUA_ARG_1: %f, %f, %f, %f\n", _LOLUA_ARG_4(0, 1, 2, 3)); | |||
delete demo_loader; | |||
Ticker::Shutdown(); | |||
@@ -13,4 +13,4 @@ loluademo_return = LoluaDemo.AddFive(1); | |||
loluademo_inst = LoluaDemo.New(); | |||
loluademo_inst:SetX(10); | |||
loluademo_getx = loluademo_inst:GetX(); | |||
loluademo_inst_return = loluademo_inst:AddTenInstance(2.0); | |||
loluademo_inst_return = loluademo_inst:AddTenInstance(2.5, 4, 6); |
@@ -82,7 +82,7 @@ EasyMeshLuaObject* EasyMeshLuaObject::New(lua_State* l, int arg_nb) | |||
UNUSED(l); | |||
UNUSED(arg_nb); | |||
LuaStack s = LuaStack::Begin(l); | |||
String str = s.Get("", true); | |||
String str = s.Get<String>(""); | |||
return new EasyMeshLuaObject(str); | |||
} | |||
@@ -38,12 +38,13 @@ public: | |||
auto h = s.Get<float>(); | |||
auto d1 = s.Get<float>(); | |||
auto d2 = s.Get<float>(); | |||
auto dualside = s.Get<bool>(false, true); | |||
auto smooth = s.Get<bool>(false, true); | |||
auto close = s.Get<bool>(false, true); | |||
auto dualside = s.Get<bool>(false); | |||
auto smooth = s.Get<bool>(false); | |||
auto close = s.Get<bool>(false); | |||
m->m_instance.AppendCylinder(nsides, h, d1, d2, dualside, smooth, close); | |||
return s.End(); | |||
} | |||
//LOLUA_DECLARE_VOID_METHOD(AppendSphere, GetPtr<EasyMeshLuaObject>(), m_instance.AppendSphere, Get<int32_t>(), Get<float>()); | |||
static int AppendSphere(lua_State* l) | |||
{ | |||
auto s = LuaStack::Begin(l); | |||
@@ -53,6 +54,7 @@ public: | |||
m->m_instance.AppendSphere(ndivisions, d); | |||
return s.End(); | |||
} | |||
static int AppendCapsule(lua_State* l) | |||
{ | |||
auto s = LuaStack::Begin(l); | |||
@@ -78,8 +80,8 @@ public: | |||
auto s = LuaStack::Begin(l); | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto size = s.Get<vec3>(); | |||
auto chamf = s.Get<float>(0.f, true); | |||
auto smooth = s.Get<bool>(false, true); | |||
auto chamf = s.Get<float>(0.f); | |||
auto smooth = s.Get<bool>(false); | |||
m->m_instance.AppendBox(size, chamf, smooth); | |||
return s.End(); | |||
} | |||
@@ -90,8 +92,8 @@ public: | |||
auto nbranches = s.Get<int32_t>(); | |||
auto d1 = s.Get<float>(); | |||
auto d2 = s.Get<float>(); | |||
auto fade = s.Get<bool>(false, true); | |||
auto fade2 = s.Get<bool>(false, true); | |||
auto fade = s.Get<bool>(false); | |||
auto fade2 = s.Get<bool>(false); | |||
m->m_instance.AppendStar(nbranches, d1, d2, fade, fade2); | |||
return s.End(); | |||
} | |||
@@ -102,7 +104,7 @@ public: | |||
auto nbranches = s.Get<int32_t>(); | |||
auto d1 = s.Get<float>(); | |||
auto d2 = s.Get<float>(); | |||
auto extrad = s.Get<float>(0.f, true); | |||
auto extrad = s.Get<float>(0.f); | |||
m->m_instance.AppendExpandedStar(nbranches, d1, d2, extrad); | |||
return s.End(); | |||
} | |||
@@ -112,7 +114,7 @@ public: | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto nsides = s.Get<int32_t>(); | |||
auto d = s.Get<float>(); | |||
auto fade = s.Get<bool>(false, true); | |||
auto fade = s.Get<bool>(false); | |||
m->m_instance.AppendDisc(nsides, d, fade); | |||
return s.End(); | |||
} | |||
@@ -121,7 +123,7 @@ public: | |||
auto s = LuaStack::Begin(l); | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto d = s.Get<float>(); | |||
auto fade = s.Get<bool>(false, true); | |||
auto fade = s.Get<bool>(false); | |||
m->m_instance.AppendSimpleTriangle(d, fade); | |||
return s.End(); | |||
} | |||
@@ -130,7 +132,7 @@ public: | |||
auto s = LuaStack::Begin(l); | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto size = s.Get<float>(); | |||
auto fade = s.Get<bool>(false, true); | |||
auto fade = s.Get<bool>(false); | |||
m->m_instance.AppendSimpleQuad(size, fade); | |||
return s.End(); | |||
} | |||
@@ -140,11 +142,11 @@ public: | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto nbsides = s.Get<int32_t>(); | |||
auto h = s.Get<float>(); | |||
auto sidemul = s.Get<float>(0.f, true); | |||
auto sidemul = s.Get<float>(0.f); | |||
auto d0 = s.Get<vec2>(); | |||
auto d1 = s.Get<vec2>(); | |||
auto d2 = s.Get<vec2>(); | |||
auto offset = s.Get<bool>(false, true); | |||
auto offset = s.Get<bool>(false); | |||
m->m_instance.AppendCog(nbsides, h, d0.x, d0.y, d1.x, d1.y, d2.x, d2.y, sidemul, offset); | |||
return s.End(); | |||
} | |||
@@ -264,8 +266,8 @@ public: | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto y = s.Get<float>(); | |||
auto z = s.Get<float>(); | |||
auto xoff = s.Get<float>(0.f, true); | |||
auto abs = s.Get<bool>(true, true); | |||
auto xoff = s.Get<float>(0.f); | |||
auto abs = s.Get<bool>(true); | |||
m->m_instance.TaperX(y, z, xoff, abs); | |||
return s.End(); | |||
} | |||
@@ -275,8 +277,8 @@ public: | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto x = s.Get<float>(); | |||
auto z = s.Get<float>(); | |||
auto yoff = s.Get<float>(0.f, true); | |||
auto abs = s.Get<bool>(true, true); | |||
auto yoff = s.Get<float>(0.f); | |||
auto abs = s.Get<bool>(true); | |||
m->m_instance.TaperY(x, z, yoff, abs); | |||
return s.End(); | |||
} | |||
@@ -286,8 +288,8 @@ public: | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto x = s.Get<float>(); | |||
auto y = s.Get<float>(); | |||
auto zoff = s.Get<float>(0.f, true); | |||
auto abs = s.Get<bool>(true, true); | |||
auto zoff = s.Get<float>(0.f); | |||
auto abs = s.Get<bool>(true); | |||
m->m_instance.TaperZ(x, y, zoff, abs); | |||
return s.End(); | |||
} | |||
@@ -297,7 +299,7 @@ public: | |||
auto s = LuaStack::Begin(l); | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto t = s.Get<float>(); | |||
auto toff = s.Get<float>(0.f, true); | |||
auto toff = s.Get<float>(0.f); | |||
m->m_instance.TwistX(t, toff); | |||
return s.End(); | |||
} | |||
@@ -306,7 +308,7 @@ public: | |||
auto s = LuaStack::Begin(l); | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto t = s.Get<float>(); | |||
auto toff = s.Get<float>(0.f, true); | |||
auto toff = s.Get<float>(0.f); | |||
m->m_instance.TwistY(t, toff); | |||
return s.End(); | |||
} | |||
@@ -315,7 +317,7 @@ public: | |||
auto s = LuaStack::Begin(l); | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto t = s.Get<float>(); | |||
auto toff = s.Get<float>(0.f, true); | |||
auto toff = s.Get<float>(0.f); | |||
m->m_instance.TwistZ(t, toff); | |||
return s.End(); | |||
} | |||
@@ -326,8 +328,8 @@ public: | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto y = s.Get<float>(); | |||
auto z = s.Get<float>(); | |||
auto xoff = s.Get<float>(0.f, true); | |||
auto abs = s.Get<bool>(true, true); | |||
auto xoff = s.Get<float>(0.f); | |||
auto abs = s.Get<bool>(true); | |||
m->m_instance.ShearX(y, z, xoff, abs); | |||
return s.End(); | |||
} | |||
@@ -337,8 +339,8 @@ public: | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto x = s.Get<float>(); | |||
auto z = s.Get<float>(); | |||
auto yoff = s.Get<float>(0.f, true); | |||
auto abs = s.Get<bool>(true, true); | |||
auto yoff = s.Get<float>(0.f); | |||
auto abs = s.Get<bool>(true); | |||
m->m_instance.ShearY(x, z, yoff, abs); | |||
return s.End(); | |||
} | |||
@@ -348,8 +350,8 @@ public: | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto x = s.Get<float>(); | |||
auto y = s.Get<float>(); | |||
auto zoff = s.Get<float>(0.f, true); | |||
auto abs = s.Get<bool>(true, true); | |||
auto zoff = s.Get<float>(0.f); | |||
auto abs = s.Get<bool>(true); | |||
m->m_instance.ShearZ(x, y, zoff, abs); | |||
return s.End(); | |||
} | |||
@@ -360,7 +362,7 @@ public: | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto y = s.Get<float>(); | |||
auto z = s.Get<float>(); | |||
auto xoff = s.Get<float>(0.f, true); | |||
auto xoff = s.Get<float>(0.f); | |||
m->m_instance.StretchX(y, z, xoff); | |||
return s.End(); | |||
} | |||
@@ -370,7 +372,7 @@ public: | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto x = s.Get<float>(); | |||
auto z = s.Get<float>(); | |||
auto yoff = s.Get<float>(0.f, true); | |||
auto yoff = s.Get<float>(0.f); | |||
m->m_instance.StretchY(x, z, yoff); | |||
return s.End(); | |||
} | |||
@@ -380,7 +382,7 @@ public: | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto x = s.Get<float>(); | |||
auto y = s.Get<float>(); | |||
auto zoff = s.Get<float>(0.f, true); | |||
auto zoff = s.Get<float>(0.f); | |||
m->m_instance.StretchZ(x, y, zoff); | |||
return s.End(); | |||
} | |||
@@ -390,7 +392,7 @@ public: | |||
auto s = LuaStack::Begin(l); | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto t = s.Get<float>(); | |||
auto toff = s.Get<float>(0.f, true); | |||
auto toff = s.Get<float>(0.f); | |||
m->m_instance.BendXY(t, toff); | |||
return s.End(); | |||
} | |||
@@ -399,7 +401,7 @@ public: | |||
auto s = LuaStack::Begin(l); | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto t = s.Get<float>(); | |||
auto toff = s.Get<float>(0.f, true); | |||
auto toff = s.Get<float>(0.f); | |||
m->m_instance.BendXZ(t, toff); | |||
return s.End(); | |||
} | |||
@@ -408,7 +410,7 @@ public: | |||
auto s = LuaStack::Begin(l); | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto t = s.Get<float>(); | |||
auto toff = s.Get<float>(0.f, true); | |||
auto toff = s.Get<float>(0.f); | |||
m->m_instance.BendYX(t, toff); | |||
return s.End(); | |||
} | |||
@@ -417,7 +419,7 @@ public: | |||
auto s = LuaStack::Begin(l); | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto t = s.Get<float>(); | |||
auto toff = s.Get<float>(0.f, true); | |||
auto toff = s.Get<float>(0.f); | |||
m->m_instance.BendYZ(t, toff); | |||
return s.End(); | |||
} | |||
@@ -426,7 +428,7 @@ public: | |||
auto s = LuaStack::Begin(l); | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto t = s.Get<float>(); | |||
auto toff = s.Get<float>(0.f, true); | |||
auto toff = s.Get<float>(0.f); | |||
m->m_instance.BendZX(t, toff); | |||
return s.End(); | |||
} | |||
@@ -435,7 +437,7 @@ public: | |||
auto s = LuaStack::Begin(l); | |||
auto m = s.GetPtr<EasyMeshLuaObject>(); | |||
auto t = s.Get<float>(); | |||
auto toff = s.Get<float>(0.f, true); | |||
auto toff = s.Get<float>(0.f); | |||
m->m_instance.BendZY(t, toff); | |||
return s.End(); | |||
} | |||
@@ -321,37 +321,56 @@ public: | |||
inline Ptr<T>& operator=(T const*& value) { m_value = value; return *this; } | |||
}; | |||
private: | |||
bool AllowGet(bool is_optional, bool value_validity) | |||
{ | |||
bool is_nil = lua_isnil(m_state, m_index); | |||
if (!is_optional || (!is_nil && value_validity)) | |||
{ | |||
ASSERT(!is_nil); /* touky: should it assert, though ? */ | |||
return true; | |||
} | |||
return false; | |||
} | |||
public: | |||
//------------------------------------------------------------------------- | |||
template<typename T> T Get(bool isOptional = false) { return Get(InnerDefault<T>(), isOptional); } | |||
template<typename E> SafeEnum<E> GetEnum(bool isOptional = false) { return GetEnum(InnerDefaultSafeEnum<E>(), isOptional); } | |||
template<typename P> Ptr<P> GetPtr(bool isOptional = false) { return GetPtr(InnerDefaultPtr<P>(), isOptional); } | |||
template<typename T> T Get() { return Get(InnerDefault<T>(), false); } | |||
template<typename T> T Get(T default_value) { return Get(default_value, true); } | |||
template<typename E> SafeEnum<E> GetEnum() { return GetEnum(InnerDefaultSafeEnum<E>(), false); } | |||
template<typename E> SafeEnum<E> GetEnum(SafeEnum<E> default_value) { return GetEnum(default_value, true); } | |||
template<typename P> Ptr<P> GetPtr() { return GetPtr(InnerDefaultPtr<P>(), false); } | |||
template<typename P> Ptr<P> GetPtr(Ptr<P> default_value) { return GetPtr(default_value, true); } | |||
private: | |||
//------------------------------------------------------------------------- | |||
#define DECLARE_STACK_GET(T0, T1, GET_NAME, INNER_IS_VALID, INNER_GET) \ | |||
template<typename T0> \ | |||
T1 GET_NAME(T1 value, bool isOptional = false) \ | |||
{ \ | |||
bool is_nil = lua_isnil(m_state, m_index); \ | |||
if (!isOptional || (!is_nil && INNER_IS_VALID<T0>())) \ | |||
{ \ | |||
ASSERT(!is_nil); /* touky: should assert, though ? */ \ | |||
return INNER_GET<T0>(value); \ | |||
} \ | |||
return value; \ | |||
template<typename T> T Get(T default_value, bool is_optional) | |||
{ | |||
if (AllowGet(is_optional, InnerIsValid<T>())) | |||
return InnerGet(default_value); | |||
return default_value; | |||
} | |||
template<typename E> SafeEnum<E> GetEnum(SafeEnum<E> default_value, bool is_optional) | |||
{ | |||
if (AllowGet(is_optional, InnerIsValidSafeEnum<E>())) | |||
return InnerGetSafeEnum(default_value); | |||
return default_value; | |||
} | |||
template<typename P> Ptr<P> GetPtr(Ptr<P> default_value, bool is_optional) | |||
{ | |||
if (AllowGet(is_optional, InnerIsValidPtr<P>())) | |||
return InnerGetPtr(default_value); | |||
return default_value; | |||
} | |||
DECLARE_STACK_GET(T, T, Get, InnerIsValid, InnerGet); | |||
DECLARE_STACK_GET(E, SafeEnum<E>, GetEnum, InnerIsValidSafeEnum, InnerGetSafeEnum); | |||
DECLARE_STACK_GET(P, Ptr<P>, GetPtr, InnerIsValidPtr, InnerGetPtr); | |||
#undef DECLARE_STACK_GET | |||
public: | |||
//------------------------------------------------------------------------- | |||
template<typename T> Stack& operator<<(T& value) { m_result += InnerPush<T>(value); return *this; } | |||
template<typename E> Stack& operator<<(SafeEnum<E>& value) { m_result += InnerPushSafeEnum<E>(value); return *this; } | |||
template<typename P> Stack& operator<<(Ptr<P>& value) { m_result += InnerPushPtr<P>(value); return *this; } | |||
template<typename T> Stack& operator<<(T value) { m_result += InnerPush<T>(value); return *this; } | |||
template<typename E> Stack& operator<<(SafeEnum<E> value) { m_result += InnerPushSafeEnum<E>(value); return *this; } | |||
template<typename P> Stack& operator<<(Ptr<P> value) { m_result += InnerPushPtr<P>(value); return *this; } | |||
protected: | |||
//------------------------------------------------------------------------- | |||
#define INNER_ERROR "Your type is not implemented. For pointers, use LuaPtr<MyType>()" | |||
template<typename T> T InnerDefault() { return T(0); } | |||
template<typename T> bool InnerIsValid() { ASSERT(false, INNER_ERROR); return false; } | |||
@@ -389,6 +408,56 @@ private: | |||
int32_t m_result = 0; | |||
}; | |||
//----------------------------------------------------------------------------- | |||
#define /***/ LOLUA_VAR_1(a00) auto v00 = s.a00; | |||
#define /***/ LOLUA_VAR_2(a00, a01) LOLUA_VAR_1(a00) auto v01 = s.a01; | |||
#define /***/ LOLUA_VAR_3(a00, a01, a02) LOLUA_VAR_2(a00, a01) auto v02 = s.a02; | |||
#define /***/ LOLUA_VAR_4(a00, a01, a02, a03) LOLUA_VAR_3(a00, a01, a02) auto v03 = s.a03; | |||
#define /***/ LOLUA_VAR_5(a00, a01, a02, a03, a04) LOLUA_VAR_4(a00, a01, a02, a03) auto v04 = s.a04; | |||
#define /***/ LOLUA_VAR_6(a00, a01, a02, a03, a04, a05) LOLUA_VAR_5(a00, a01, a02, a03, a04) auto v05 = s.a05; | |||
#define /***/ LOLUA_VAR_7(a00, a01, a02, a03, a04, a05, a06) LOLUA_VAR_6(a00, a01, a02, a03, a04, a05) auto v06 = s.a06; | |||
#define /***/ LOLUA_VAR_8(a00, a01, a02, a03, a04, a05, a06, a07) LOLUA_VAR_7(a00, a01, a02, a03, a04, a05, a06) auto v07 = s.a07; | |||
#define /***/ LOLUA_VAR_9(a00, a01, a02, a03, a04, a05, a06, a07, a08) LOLUA_VAR_8(a00, a01, a02, a03, a04, a05, a06, a07) auto v08 = s.a08; | |||
#define /**/ LOLUA_VAR_10(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09) LOLUA_VAR_9(a00, a01, a02, a03, a04, a05, a06, a07, a08) auto v09 = s.a09; | |||
#define /**/ LOLUA_VAR_11(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09, a10) LOLUA_VAR_10(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09) auto v10 = s.a10; | |||
#define /**/ LOLUA_VAR_12(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09, a10, a11) LOLUA_VAR_11(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09) auto v11 = s.a11; | |||
//----------------------------------------------------------------------------- | |||
#define /***/ LOLUA_ARG_1(a00) v00 | |||
#define /***/ LOLUA_ARG_2(a00, a01) LOLUA_ARG_1(a00), v01 | |||
#define /***/ LOLUA_ARG_3(a00, a01, a02) LOLUA_ARG_2(a00, a01), v02 | |||
#define /***/ LOLUA_ARG_4(a00, a01, a02, a03) LOLUA_ARG_3(a00, a01, a02), v03 | |||
#define /***/ LOLUA_ARG_5(a00, a01, a02, a03, a04) LOLUA_ARG_4(a00, a01, a02, a03), v04 | |||
#define /***/ LOLUA_ARG_6(a00, a01, a02, a03, a04, a05) LOLUA_ARG_5(a00, a01, a02, a03, a04), v05 | |||
#define /***/ LOLUA_ARG_7(a00, a01, a02, a03, a04, a05, a06) LOLUA_ARG_6(a00, a01, a02, a03, a04, a05), v06 | |||
#define /***/ LOLUA_ARG_8(a00, a01, a02, a03, a04, a05, a06, a07) LOLUA_ARG_7(a00, a01, a02, a03, a04, a05, a06), v07 | |||
#define /***/ LOLUA_ARG_9(a00, a01, a02, a03, a04, a05, a06, a07, a08) LOLUA_ARG_8(a00, a01, a02, a03, a04, a05, a06, a07), v08 | |||
#define /**/ LOLUA_ARG_10(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09) LOLUA_ARG_9(a00, a01, a02, a03, a04, a05, a06, a07, a08), v09 | |||
#define /**/ LOLUA_ARG_11(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09, a10) LOLUA_ARG_10(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09), v10 | |||
#define /**/ LOLUA_ARG_12(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09, a10, a11) LOLUA_ARG_11(a00, a01, a02, a03, a04, a05, a06, a07, a08, a09), v11 | |||
//----------------------------------------------------------------------------- | |||
//----------------------------------------------------------------------------- | |||
#define LOLUA_DECLARE_VOID_METHOD(LUA_FUNC_NAME, INSTANCE_GET, INSTANCE_CALL, ...) \ | |||
static int LUA_FUNC_NAME(lua_State* l) \ | |||
{ \ | |||
auto s = LuaStack::Begin(l); \ | |||
auto o = s.INSTANCE_GET; \ | |||
LOL_CALL(LOL_CAT(LOLUA_VAR_, LOL_CALL(LOL_COUNT_TO_12, (__VA_ARGS__))), (__VA_ARGS__)) \ | |||
o->INSTANCE_CALL(LOL_CALL(LOL_CAT(LOLUA_ARG_, LOL_CALL(LOL_COUNT_TO_12, (__VA_ARGS__))), (__VA_ARGS__))); \ | |||
return s.End(); \ | |||
} | |||
//----------------------------------------------------------------------------- | |||
#define LOLUA_DECLARE_RETURN_METHOD(LUA_FUNC_NAME, INSTANCE_GET, INSTANCE_CALL, ...) \ | |||
static int LUA_FUNC_NAME(lua_State* l) \ | |||
{ \ | |||
auto s = LuaStack::Begin(l); \ | |||
auto o = s.INSTANCE_GET; \ | |||
LOL_CALL(LOL_CAT(LOLUA_VAR_, LOL_CALL(LOL_COUNT_TO_12, (__VA_ARGS__))), (__VA_ARGS__)) \ | |||
s << o->INSTANCE_CALL(LOL_CALL(LOL_CAT(LOLUA_ARG_, LOL_CALL(LOL_COUNT_TO_12, (__VA_ARGS__))), (__VA_ARGS__))); \ | |||
return s.End(); \ | |||
} | |||
//----------------------------------------------------------------------------- | |||
#ifndef REGION_STACK_VAR | |||