LUALIB_API int luaopen_lsass( lua_State *L ) { // register allocator lua_createtable( L, 0, 1 ); lstate_fn2tbl( L, "version", version_lua ); return 1; }
LUALIB_API int luaopen_pthread( lua_State *L ) { struct luaL_Reg method_mt[] = { { "__gc", gc_lua }, { "__tostring", tostring_lua }, { "__call", call_lua }, { NULL, NULL } }; struct luaL_Reg *ptr = method_mt; // create metatable luaL_newmetatable( L, MODULE_MT ); // add metamethods while( ptr->name ){ lstate_fn2tbl( L, ptr->name, ptr->func ); ptr++; } lua_pop( L, 1 ); // add allocator lua_pushcfunction( L, alloc_lua ); return 1; }
LUALIB_API int luaopen_libhttp( lua_State *L ) { struct luaL_Reg mmethods[] = { { "__gc", gc_lua }, { "__tostring", tostring_lua }, { NULL, NULL } }; struct luaL_Reg methods[] = { // method { "init", init_lua }, { "parseRequest", parse_request_lua }, { "parseRequestPtr", parse_request_ptr_lua }, { "parseResponse", parse_response_lua }, { "parseResponsePtr", parse_response_ptr_lua }, { NULL, NULL } }; struct luaL_Reg *ptr = mmethods; // create metatable luaL_newmetatable( L, MODULE_MT ); // metamethods do { lstate_fn2tbl( L, ptr->name, ptr->func ); ptr++; } while( ptr->name ); // methods ptr = methods; lua_pushstring( L, "__index" ); lua_newtable( L ); do { lstate_fn2tbl( L, ptr->name, ptr->func ); ptr++; } while( ptr->name ); lua_rawset( L, -3 ); // remove metatable from stack lua_pop( L, 1 ); // register allocator lua_createtable( L, 0, 1 ); lstate_fn2tbl( L, "new", new_lua ); // constants // return code lstate_num2tbl( L, "SUCCESS", HTTP_SUCCESS ); lstate_num2tbl( L, "ERROR", HTTP_ERROR ); lstate_num2tbl( L, "EAGAIN", HTTP_EAGAIN ); lstate_num2tbl( L, "EMETHOD", HTTP_EMETHOD ); lstate_num2tbl( L, "EBADURI", HTTP_EBADURI ); lstate_num2tbl( L, "EURILEN", HTTP_EURILEN ); lstate_num2tbl( L, "EVERSION", HTTP_EVERSION ); lstate_num2tbl( L, "ELINEFMT", HTTP_ELINEFMT ); lstate_num2tbl( L, "EHDRFMT", HTTP_EHDRFMT ); lstate_num2tbl( L, "ENHDR", HTTP_ENHDR ); lstate_num2tbl( L, "EHDRLEN", HTTP_EHDRLEN ); lstate_num2tbl( L, "ESTATUS", HTTP_ESTATUS ); lstate_num2tbl( L, "EREASON", HTTP_EREASON ); // methods lstate_num2tbl( L, "MGET", HTTP_MGET ); lstate_num2tbl( L, "MHEAD", HTTP_MHEAD ); lstate_num2tbl( L, "MPOST", HTTP_MPOST ); lstate_num2tbl( L, "MPUT", HTTP_MPUT ); lstate_num2tbl( L, "MDELETE", HTTP_MDELETE ); lstate_num2tbl( L, "MOPTIONS", HTTP_MOPTIONS ); lstate_num2tbl( L, "MTRACE", HTTP_MTRACE ); lstate_num2tbl( L, "MCONNECT", HTTP_MCONNECT ); // versions lstate_num2tbl( L, "V09", HTTP_V09 ); lstate_num2tbl( L, "V10", HTTP_V10 ); lstate_num2tbl( L, "V11", HTTP_V11 ); return 1; }