-* Process Register
-*/
-
-int Process_register(lua_State *L)
- {
- luaL_openlib(L,PROCESS,Process_methods,0);
- luaL_newmetatable(L,PROCESS);
- luaL_openlib(L,0,Host_meta,0);
- lua_pushliteral(L,"__index");
- lua_pushvalue(L,-3);
- lua_rawset(L,-3);
- lua_pushliteral(L,"__metatable");
- lua_pushvalue(L,-3);
- lua_rawset(L,-3);
- lua_pop(L,1);
- return 1;
- }
+ * Register Task, Host, and Process
+ */
+
+int MSG_register(lua_State *L);// FIXME: better location
+int MSG_register(lua_State *L) {
+ luaL_openlib(L,TASK,Task_methods,0); //create methods table,add it to the globals
+ luaL_newmetatable(L,TASK); //create metatable for Task,add it to the Lua registry
+ luaL_openlib(L,0,Task_meta,0);// fill metatable
+ lua_pushliteral(L,"__index");
+ lua_pushvalue(L,-3); //dup methods table
+ lua_rawset(L,-3); //matatable.__index = methods
+ lua_pushliteral(L,"__metatable");
+ lua_pushvalue(L,-3); //dup methods table
+ lua_rawset(L,-3); //hide metatable:metatable.__metatable = methods
+ lua_pop(L,1); //drop metatable
+ /* HOST */
+ luaL_openlib(L,HOST,Host_methods,0);
+ luaL_newmetatable(L,HOST);
+ luaL_openlib(L,0,Host_meta,0);
+ lua_pushliteral(L,"__index");
+ lua_pushvalue(L,-3);
+ lua_rawset(L,-3);
+ lua_pushliteral(L,"__metatable");
+ lua_pushvalue(L,-3);
+ lua_rawset(L,-3);
+ lua_pop(L,1);
+ /* Process */
+ luaL_openlib(L,PROCESS,Process_methods,0);
+ luaL_newmetatable(L,PROCESS);
+ luaL_openlib(L,0,Host_meta,0);
+ lua_pushliteral(L,"__index");
+ lua_pushvalue(L,-3);
+ lua_rawset(L,-3);
+ lua_pushliteral(L,"__metatable");
+ lua_pushvalue(L,-3);
+ lua_rawset(L,-3);
+ lua_pop(L,1);
+ return 1;
+}