Ejemplo n.º 1
0
        public static void lua_pushcfunction(lua_State L, LuaNativeFunction function)
        {
#if SAVE_FUNC
            savedFn.TryAdd(function);
#endif
            lua_pushcclosure(L, function.ToFunctionPointer(), 0);
        }
Ejemplo n.º 2
0
        public static LuaNativeFunction lua_atpanic(lua_State L, LuaNativeFunction panicFunction)
        {
#if SAVE_FUNC
            savedFn.TryAdd(panicFunction);
#endif
            IntPtr newPanicPtr = panicFunction.ToFunctionPointer();
            return(lua_atpanic(L, newPanicPtr).ToLuaFunction());
        }
Ejemplo n.º 3
0
        public static void lua_pushcclosure(lua_State L, LuaNativeFunction function, int n)
        {
            //Delegate
            if (!function.Method.IsDefined(typeof(AOT.MonoPInvokeCallbackAttribute), false))
            {
                assert(false);
            }
#if SAVE_FUNC
            savedFn.TryAdd(function);
#endif
            lua_pushcclosure(L, function.ToFunctionPointer(), n);
        }
Ejemplo n.º 4
0
        public static LuaRef create_class(lua_State L, LuaRef parentModule, string name, Type classType, LuaNativeFunction dctor)
        {
            int moduleRef = parentModule.Ref;
            int classId   = SharpObject.TypeID(classType);

#if C_API
            int metaRef = luna_create_class(L, moduleRef, name, classId, dctor.ToFunctionPointer());
            var meta    = new LuaRef(metaRef, L);
#else
            string fullName = GetFullName(parentModule, name);

            LuaRef meta = LuaRef.CreateTable(L);
            meta.SetMetaTable(meta);

            meta.RawSet("__index", (LuaNativeFunction)class_index);
            meta.RawSet("__newindex", (LuaNativeFunction)class_newindex);
            meta.RawSet(___getters, LuaRef.CreateTable(L));
            meta.RawSet(___setters, LuaRef.CreateTable(L));
            meta.RawSet(___type, fullName);

            if (dctor != null)
            {
                meta.RawSet("__gc", dctor);
            }

            if (classId != 0)
            {
                LuaRef registry = LuaRef.Registry(L);
                registry.RawSet(classId, meta);
            }

            parentModule.RawSet(name, meta);
#endif
            meta.RawSet("type", classType);
            return(meta);
        }
Ejemplo n.º 5
0
 public static void lua_requiref(lua_State L, string n, LuaNativeFunction f)
 {
     luaL_requiref(L, n, f.ToFunctionPointer(), 0);
 }