configuration.c
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:4k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * configuration.c: Generic lua<->vlc config interface
  3.  *****************************************************************************
  4.  * Copyright (C) 2007-2008 the VideoLAN team
  5.  * $Id: 77a69c6d7328e1cb6eeb2e0ae7eb984844a0f31f $
  6.  *
  7.  * Authors: Antoine Cellerier <dionoea at videolan tod org>
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22.  *****************************************************************************/
  23. /*****************************************************************************
  24.  * Preamble
  25.  *****************************************************************************/
  26. #ifndef  _GNU_SOURCE
  27. #   define  _GNU_SOURCE
  28. #endif
  29. #ifdef HAVE_CONFIG_H
  30. # include "config.h"
  31. #endif
  32. #include <vlc_common.h>
  33. #include <lua.h>        /* Low level lua C API */
  34. #include <lauxlib.h>    /* Higher level C API */
  35. #include "../vlc.h"
  36. #include "../libs.h"
  37. /*****************************************************************************
  38.  * Config handling
  39.  *****************************************************************************/
  40. static int vlclua_config_get( lua_State *L )
  41. {
  42.     vlc_object_t * p_this = vlclua_get_this( L );
  43.     const char *psz_name;
  44.     psz_name = luaL_checkstring( L, 1 );
  45.     switch( config_GetType( p_this, psz_name ) )
  46.     {
  47.         case VLC_VAR_MODULE:
  48.         case VLC_VAR_STRING:
  49.         case VLC_VAR_FILE:
  50.         case VLC_VAR_DIRECTORY:
  51.         {
  52.             char *psz = config_GetPsz( p_this, psz_name );
  53.             lua_pushstring( L, psz );
  54.             free( psz );
  55.             break;
  56.         }
  57.         case VLC_VAR_INTEGER:
  58.             lua_pushinteger( L, config_GetInt( p_this, psz_name ) );
  59.             break;
  60.         case VLC_VAR_BOOL:
  61.             lua_pushboolean( L, config_GetInt( p_this, psz_name ) );
  62.             break;
  63.         case VLC_VAR_FLOAT:
  64.             lua_pushnumber( L, config_GetFloat( p_this, psz_name ) );
  65.             break;
  66.         default:
  67.             return vlclua_error( L );
  68.     }
  69.     return 1;
  70. }
  71. static int vlclua_config_set( lua_State *L )
  72. {
  73.     vlc_object_t *p_this = vlclua_get_this( L );
  74.     const char *psz_name;
  75.     psz_name = luaL_checkstring( L, 1 );
  76.     switch( config_GetType( p_this, psz_name ) )
  77.     {
  78.         case VLC_VAR_MODULE:
  79.         case VLC_VAR_STRING:
  80.         case VLC_VAR_FILE:
  81.         case VLC_VAR_DIRECTORY:
  82.             config_PutPsz( p_this, psz_name, luaL_checkstring( L, 2 ) );
  83.             break;
  84.         case VLC_VAR_INTEGER:
  85.             config_PutInt( p_this, psz_name, luaL_checkint( L, 2 ) );
  86.             break;
  87.         case VLC_VAR_BOOL:
  88.             config_PutInt( p_this, psz_name, luaL_checkboolean( L, 2 ) );
  89.             break;
  90.         case VLC_VAR_FLOAT:
  91.             config_PutFloat( p_this, psz_name,
  92.                              luaL_checknumber( L, 2 ) );
  93.             break;
  94.         default:
  95.             return vlclua_error( L );
  96.     }
  97.     return 0;
  98. }
  99. /*****************************************************************************
  100.  *
  101.  *****************************************************************************/
  102. static const luaL_Reg vlclua_config_reg[] = {
  103.     { "get", vlclua_config_get },
  104.     { "set", vlclua_config_set },
  105.     { NULL, NULL }
  106. };
  107. void luaopen_config( lua_State *L )
  108. {
  109.     lua_newtable( L );
  110.     luaL_register( L, NULL, vlclua_config_reg );
  111.     lua_setfield( L, -2, "config" );
  112. }