static int vlclua_var_create( lua_State *L ) { int i_type, i_ret; vlc_object_t **pp_obj = luaL_checkudata( L, 1, "vlc_object" ); const char *psz_var = luaL_checkstring( L, 2 ); switch( lua_type( L, 3 ) ) { case LUA_TNUMBER: i_type = VLC_VAR_FLOAT; break; case LUA_TBOOLEAN: i_type = VLC_VAR_BOOL; break; case LUA_TSTRING: i_type = VLC_VAR_STRING; break; case LUA_TNIL: i_type = VLC_VAR_VOID; break; default: return 0; } if( ( i_ret = var_Create( *pp_obj, psz_var, i_type ) ) != VLC_SUCCESS ) return vlclua_push_ret( L, i_ret ); // Special case for void variables if( i_type == VLC_VAR_VOID ) return 0; vlc_value_t val; vlclua_tovalue( L, i_type, &val ); return vlclua_push_ret( L, var_Set( *pp_obj, psz_var, val ) ); }
static int vlclua_var_set( lua_State *L ) { int i_type; vlc_value_t val; vlc_object_t **pp_obj = luaL_checkudata( L, 1, "vlc_object" ); const char *psz_var = luaL_checkstring( L, 2 ); int i_ret; i_type = var_Type( *pp_obj, psz_var ); vlclua_tovalue( L, i_type, &val ); i_ret = var_Set( *pp_obj, psz_var, val ); lua_pop( L, 3 ); return vlclua_push_ret( L, i_ret ); }