Пример #1
0
        static int GetTypeMethod(IntPtr L)
        {
            try
            {
                int count = LuaDLL.lua_gettop(L);

                if (count == 2 && TypeChecker.CheckTypes <Type, string>(L, 1))
                {
                    Type       obj  = (Type)ToLua.ToObject(L, 1);
                    string     arg0 = ToLua.ToString(L, 2);
                    MethodInfo o    = obj.GetMethod(arg0);
                    PushLuaMethod(L, o, obj, null);
                    return(1);
                }
                else if (count == 3 && TypeChecker.CheckTypes <Type, string, Type[]>(L, 1))
                {
                    Type       obj  = (Type)ToLua.ToObject(L, 1);
                    string     arg0 = ToLua.ToString(L, 2);
                    Type[]     arg1 = ToLua.ToObjectArray <Type>(L, 3);
                    MethodInfo o    = obj.GetMethod(arg0, arg1);
                    PushLuaMethod(L, o, obj, arg1);
                    return(1);
                }
                else if (count == 3 && TypeChecker.CheckTypes <Type, string, uint>(L, 1))
                {
                    Type         obj  = (Type)ToLua.ToObject(L, 1);
                    string       arg0 = ToLua.ToString(L, 2);
                    BindingFlags arg1 = (BindingFlags)LuaDLL.lua_tonumber(L, 3);
                    MethodInfo   o    = obj.GetMethod(arg0, arg1);
                    PushLuaMethod(L, o, obj, null);
                    return(1);
                }
                else if (count == 4 && TypeChecker.CheckTypes <Type, string, Type[], ParameterModifier[]>(L, 1))
                {
                    Type   obj  = (Type)ToLua.ToObject(L, 1);
                    string arg0 = ToLua.ToString(L, 2);
                    Type[] arg1 = ToLua.ToObjectArray <System.Type>(L, 3);
                    ParameterModifier[] arg2 = ToLua.ToStructArray <ParameterModifier>(L, 4);
                    MethodInfo          o    = obj.GetMethod(arg0, arg1, arg2);
                    PushLuaMethod(L, o, obj, arg1);
                    return(1);
                }
                else if (count == 6 && TypeChecker.CheckTypes <Type, string, uint, Binder, Type[], ParameterModifier[]> (L, 1))
                {
                    System.Type         obj  = (System.Type)ToLua.ToObject(L, 1);
                    string              arg0 = ToLua.ToString(L, 2);
                    BindingFlags        arg1 = (BindingFlags)LuaDLL.lua_tonumber(L, 3);
                    Binder              arg2 = (Binder)ToLua.ToObject(L, 4);
                    Type[]              arg3 = ToLua.ToObjectArray <Type>(L, 5);
                    ParameterModifier[] arg4 = ToLua.ToStructArray <ParameterModifier>(L, 6);
                    MethodInfo          o    = obj.GetMethod(arg0, arg1, arg2, arg3, arg4);
                    PushLuaMethod(L, o, obj, arg3);
                    return(1);
                }
                else if (count == 7 && TypeChecker.CheckTypes <Type, string, uint, Binder, CallingConventions, Type[], ParameterModifier[]> (L, 1))
                {
                    Type                obj  = (Type)ToLua.ToObject(L, 1);
                    string              arg0 = ToLua.ToString(L, 2);
                    BindingFlags        arg1 = (BindingFlags)LuaDLL.lua_tonumber(L, 3);
                    Binder              arg2 = (Binder)ToLua.ToObject(L, 4);
                    CallingConventions  arg3 = (CallingConventions)ToLua.ToObject(L, 5);
                    Type[]              arg4 = ToLua.ToObjectArray <Type>(L, 6);
                    ParameterModifier[] arg5 = ToLua.ToStructArray <ParameterModifier>(L, 7);
                    MethodInfo          o    = obj.GetMethod(arg0, arg1, arg2, arg3, arg4, arg5);
                    PushLuaMethod(L, o, obj, arg4);
                    return(1);
                }
                else
                {
                    return(LuaDLL.luaL_throw(L, "invalid arguments to method: tolua.gettypemethod"));
                }
            }
            catch (Exception e)
            {
                return(LuaDLL.toluaL_exception(L, e));
            }
        }
Пример #2
0
        static int GetProperty(IntPtr L)
        {
            try
            {
                int count = LuaDLL.lua_gettop(L);

                if (count == 2 && TypeChecker.CheckTypes <Type, string>(L, 1))
                {
                    Type         obj  = (Type)ToLua.ToObject(L, 1);
                    string       arg0 = ToLua.ToString(L, 2);
                    PropertyInfo o    = obj.GetProperty(arg0);
                    PushLuaProperty(L, o, obj);
                    return(1);
                }
                else if (count == 3 && TypeChecker.CheckTypes <Type, string, Type[]>(L, 1))
                {
                    Type         obj  = (Type)ToLua.ToObject(L, 1);
                    string       arg0 = ToLua.ToString(L, 2);
                    Type[]       arg1 = ToLua.ToObjectArray <Type>(L, 3);
                    PropertyInfo o    = obj.GetProperty(arg0, arg1);
                    PushLuaProperty(L, o, obj);
                    return(1);
                }
                else if (count == 3 && TypeChecker.CheckTypes <Type, string, Type>(L, 1))
                {
                    Type         obj  = (Type)ToLua.ToObject(L, 1);
                    string       arg0 = ToLua.ToString(L, 2);
                    Type         arg1 = (Type)ToLua.ToObject(L, 3);
                    PropertyInfo o    = obj.GetProperty(arg0, arg1);
                    PushLuaProperty(L, o, obj);
                    return(1);
                }
                else if (count == 3 && TypeChecker.CheckTypes <Type, string, uint>(L, 1))
                {
                    Type         obj  = (Type)ToLua.ToObject(L, 1);
                    string       arg0 = ToLua.ToString(L, 2);
                    BindingFlags arg1 = (BindingFlags)LuaDLL.lua_tonumber(L, 3);
                    PropertyInfo o    = obj.GetProperty(arg0, arg1);
                    PushLuaProperty(L, o, obj);
                    return(1);
                }
                else if (count == 4 && TypeChecker.CheckTypes <Type, string, Type, Type[]>(L, 1))
                {
                    Type         obj  = (Type)ToLua.ToObject(L, 1);
                    string       arg0 = ToLua.ToString(L, 2);
                    Type         arg1 = (Type)ToLua.ToObject(L, 3);
                    Type[]       arg2 = ToLua.ToObjectArray <Type>(L, 4);
                    PropertyInfo o    = obj.GetProperty(arg0, arg1, arg2);
                    PushLuaProperty(L, o, obj);
                    return(1);
                }
                else if (count == 5 && TypeChecker.CheckTypes <Type, string, Type, Type[], ParameterModifier[]> (L, 1))
                {
                    Type   obj  = (Type)ToLua.ToObject(L, 1);
                    string arg0 = ToLua.ToString(L, 2);
                    Type   arg1 = (Type)ToLua.ToObject(L, 3);
                    Type[] arg2 = ToLua.ToObjectArray <Type>(L, 4);
                    ParameterModifier[] arg3 = ToLua.ToStructArray <ParameterModifier>(L, 5);
                    PropertyInfo        o    = obj.GetProperty(arg0, arg1, arg2, arg3);
                    PushLuaProperty(L, o, obj);
                    return(1);
                }
                else if (count == 7 && TypeChecker.CheckTypes <Type, string, uint, Binder, Type, Type[], ParameterModifier[]> (L, 1))
                {
                    Type                obj  = (Type)ToLua.ToObject(L, 1);
                    string              arg0 = ToLua.ToString(L, 2);
                    BindingFlags        arg1 = (BindingFlags)LuaDLL.lua_tonumber(L, 3);
                    Binder              arg2 = (Binder)ToLua.ToObject(L, 4);
                    Type                arg3 = (Type)ToLua.ToObject(L, 5);
                    Type[]              arg4 = ToLua.ToObjectArray <Type>(L, 6);
                    ParameterModifier[] arg5 = ToLua.ToStructArray <ParameterModifier>(L, 7);
                    PropertyInfo        o    = obj.GetProperty(arg0, arg1, arg2, arg3, arg4, arg5);
                    PushLuaProperty(L, o, obj);
                    return(1);
                }
                else
                {
                    return(LuaDLL.luaL_throw(L, "invalid arguments to method: tolua.getproperty"));
                }
            }
            catch (Exception e)
            {
                return(LuaDLL.toluaL_exception(L, e));
            }
        }
Пример #3
0
 public Type[] ToTypeArray(IntPtr L, int stackPos)
 {
     return(ToLua.ToObjectArray <Type>(L, stackPos));
 }