Пример #1
0
LUALIB_API int luaopen_lsass( lua_State *L )
{
    
    // register allocator
    lua_createtable( L, 0, 1 );
    lstate_fn2tbl( L, "version", version_lua );

    return 1;
}
Пример #2
0
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;
}
Пример #3
0
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;
}