/*****************************************************************************
* variables.c: Generic lua<->vlc variables interface
*****************************************************************************
- * Copyright (C) 2007-2008 the VideoLAN team
+ * Copyright (C) 2007-2010 the VideoLAN team
* $Id$
*
* Authors: Antoine Cellerier <dionoea at videolan tod org>
case VLC_VAR_MUTEX:
vlclua_error( L );
break;
- case VLC_VAR_LIST:
- {
- int i_count = val.p_list->i_count;
- int i;
- lua_createtable( L, i_count, 0 );
- for( i = 0; i < i_count; i++ )
- {
- lua_pushinteger( L, i+1 );
- if( !vlclua_pushvalue( L, val.p_list->pi_types[i],
- val.p_list->p_values[i] ) )
- lua_pushnil( L );
- lua_settable( L, -3 );
- }
- }
- break;
default:
vlclua_error( L );
}
return 1;
}
+static int vlclua_pushlist( lua_State *L, vlc_list_t *p_list )
+{
+ int i_count = p_list->i_count;
+
+ lua_createtable( L, i_count, 0 );
+ for( int i = 0; i < i_count; i++ )
+ {
+ lua_pushinteger( L, i+1 );
+ if( !vlclua_pushvalue( L, p_list->pi_types[i],
+ p_list->p_values[i] ) )
+ lua_pushnil( L );
+ lua_settable( L, -3 );
+ }
+ return 1;
+}
+
static int vlclua_tovalue( lua_State *L, int i_type, vlc_value_t *val )
{
switch( i_type & VLC_VAR_CLASS )
case VLC_VAR_MUTEX:
vlclua_error( L );
break;
- case VLC_VAR_LIST:
- vlclua_error( L );
- break;
default:
vlclua_error( L );
}
const char *psz_var = luaL_checkstring( L, 2 );
int i_ret = var_Change( *pp_obj, psz_var, VLC_VAR_GETLIST, &val, &text );
if( i_ret < 0 ) return vlclua_push_ret( L, i_ret );
- vlclua_pushvalue( L, VLC_VAR_LIST, val );
- vlclua_pushvalue( L, VLC_VAR_LIST, text );
+ vlclua_pushlist( L, val.p_list );
+ vlclua_pushlist( L, text.p_list );
var_FreeList( &val, &text );
return 2;
}
}
else
{
- lua_pushstring( L, "" );
+ lua_pushliteral( L, "" );
}
return vlclua_push_ret( L, ret ) + 1;
}
b_bool = !var_GetBool( p_obj, psz_name );
else /* lua_gettop( L ) == 1 */
{
- b_bool = luaL_checkboolean( L, -1 )?true:false;
+ b_bool = luaL_checkboolean( L, -1 );
lua_pop( L, 1 );
}
{
/* errormessage */
const char *psz_err = lua_tostring( L, -1 );
- msg_Err( p_this, "Error while runing lua interface callback: %s",
+ msg_Err( p_this, "Error while running lua interface callback: %s",
psz_err );
/* empty the stack (should only contain the error message) */
lua_settop( L, 0 );
case VLC_VAR_ADDRESS:
case VLC_VAR_VOID:
case VLC_VAR_MUTEX:
- case VLC_VAR_LIST:
default:
return vlclua_error( L );
}