@type bool { .ctype = unsigned : 1; .check = (luaL_checkinteger($L, $$) != 0); .push = lua_pushboolean($L, $$); }; @type int { .ctype = int; .check = luaL_checkinteger($L, $$); .push = lua_pushinteger($L, $$); }; @type quadopt_t { .ctype = unsigned : 2; .check = luaM_checkquadopt($L, $$); .push = luaM_pushquadopt($L, $$); }; @type string_t { .ctype = char *; .check = luaL_checkstring($L, $$); .push = lua_pushstring($L, $$); .ctor = m_strdup($$); .dtor = p_delete($$); }; @type path_t : string_t { .ctor = luaM_pathnew($$); }; @type rx_t { .ctype = rx_t *; .check = luaM_checkrx($L, $$); .push = lua_pushstring($L, $$ ? ($$)->pattern : NULL); .ctor = luaM_rxnew($$); .dtor = rx_delete($$); }; @type address_t { .ctype = address_t *; .check = luaL_checkstring($L, $$); .push = luaM_pushaddr($L, $$); .ctor = rfc822_parse_adrlist(NULL, $$); .dtor = address_list_wipe($$); }; /* vim:set ft=c: */