/*****************************************************************************
- * configuration.h : configuration management module
+ * vlc_configuration.h : configuration management module
* This file describes the programming interface for the configuration module.
* It includes functions allowing to declare, get or set configuration options.
*****************************************************************************
extern "C" {
# endif
-/*****************************************************************************
- * Macros used to build the configuration structure.
- *****************************************************************************/
-
-/* Configuration hint types */
-#define CONFIG_HINT_CATEGORY 0x02 /* Start of new category */
-#define CONFIG_HINT_SUBCATEGORY 0x03 /* Start of sub-category */
-#define CONFIG_HINT_SUBCATEGORY_END 0x04 /* End of sub-category */
-#define CONFIG_HINT_USAGE 0x05 /* Usage information */
-
-#define CONFIG_CATEGORY 0x06 /* Set category */
-#define CONFIG_SUBCATEGORY 0x07 /* Set subcategory */
-#define CONFIG_SECTION 0x08 /* Start of new section */
-
-/* Configuration item types */
-#define CONFIG_ITEM_FLOAT 0x20 /* Float option */
-#define CONFIG_ITEM_INTEGER 0x40 /* Integer option */
-#define CONFIG_ITEM_RGB 0x41 /* RGB color option */
-#define CONFIG_ITEM_BOOL 0x60 /* Bool option */
-#define CONFIG_ITEM_STRING 0x80 /* String option */
-#define CONFIG_ITEM_PASSWORD 0x81 /* Password option (*) */
-#define CONFIG_ITEM_KEY 0x82 /* Hot key option */
-#define CONFIG_ITEM_MODULE 0x84 /* Module option */
-#define CONFIG_ITEM_MODULE_CAT 0x85 /* Module option */
-#define CONFIG_ITEM_MODULE_LIST 0x86 /* Module option */
-#define CONFIG_ITEM_MODULE_LIST_CAT 0x87 /* Module option */
-#define CONFIG_ITEM_LOADFILE 0x8C /* Read file option */
-#define CONFIG_ITEM_SAVEFILE 0x8D /* Written file option */
-#define CONFIG_ITEM_DIRECTORY 0x8E /* Directory option */
-#define CONFIG_ITEM_FONT 0x8F /* Font option */
-
-#define CONFIG_ITEM(x) (((x) & ~0xF) != 0)
-
-/*******************************************************************
- * All predefined categories and subcategories
- *******************************************************************/
-#define CAT_INTERFACE 1
- #define SUBCAT_INTERFACE_GENERAL 101
- #define SUBCAT_INTERFACE_MAIN 102
- #define SUBCAT_INTERFACE_CONTROL 103
- #define SUBCAT_INTERFACE_HOTKEYS 104
-
-#define CAT_AUDIO 2
- #define SUBCAT_AUDIO_GENERAL 201
- #define SUBCAT_AUDIO_AOUT 202
- #define SUBCAT_AUDIO_AFILTER 203
- #define SUBCAT_AUDIO_VISUAL 204
- #define SUBCAT_AUDIO_MISC 205
-
-#define CAT_VIDEO 3
- #define SUBCAT_VIDEO_GENERAL 301
- #define SUBCAT_VIDEO_VOUT 302
- #define SUBCAT_VIDEO_VFILTER 303
- #define SUBCAT_VIDEO_TEXT 304
- #define SUBCAT_VIDEO_SUBPIC 305
- #define SUBCAT_VIDEO_VFILTER2 306
-
-#define CAT_INPUT 4
- #define SUBCAT_INPUT_GENERAL 401
- #define SUBCAT_INPUT_ACCESS 402
- #define SUBCAT_INPUT_DEMUX 403
- #define SUBCAT_INPUT_VCODEC 404
- #define SUBCAT_INPUT_ACODEC 405
- #define SUBCAT_INPUT_SCODEC 406
- #define SUBCAT_INPUT_STREAM_FILTER 407
-
-#define CAT_SOUT 5
- #define SUBCAT_SOUT_GENERAL 501
- #define SUBCAT_SOUT_STREAM 502
- #define SUBCAT_SOUT_MUX 503
- #define SUBCAT_SOUT_ACO 504
- #define SUBCAT_SOUT_PACKETIZER 505
- #define SUBCAT_SOUT_SAP 506
- #define SUBCAT_SOUT_VOD 507
-
-#define CAT_ADVANCED 6
- #define SUBCAT_ADVANCED_CPU 601
- #define SUBCAT_ADVANCED_MISC 602
- #define SUBCAT_ADVANCED_NETWORK 603
- #define SUBCAT_ADVANCED_XML 604
-
-#define CAT_PLAYLIST 7
- #define SUBCAT_PLAYLIST_GENERAL 701
- #define SUBCAT_PLAYLIST_SD 702
- #define SUBCAT_PLAYLIST_EXPORT 703
-
-#define CAT_OSD 8
- #define SUBCAT_OSD_IMPORT 801
-
struct config_category_t
{
int i_id;
char i_short; /* Optional short option name */
/* Misc */
- unsigned b_dirty:1; /* Dirty flag to indicate a config change */
unsigned b_advanced:1; /* Flag to indicate an advanced option */
unsigned b_internal:1; /* Flag to indicate option is not to be shown */
unsigned b_unsaveable:1; /* Config should not be saved */
#define config_ResetAll(a) config_ResetAll(VLC_OBJECT(a))
VLC_API module_config_t * config_FindConfig( vlc_object_t *, const char * ) VLC_USED;
-VLC_API char * config_GetDataDir( vlc_object_t * ) VLC_USED VLC_MALLOC;
-#define config_GetDataDir(a) config_GetDataDir(VLC_OBJECT(a))
-VLC_API const char * config_GetLibDir( void ) VLC_USED;
+VLC_API char * config_GetDataDir(void) VLC_USED VLC_MALLOC;
+VLC_API char *config_GetLibDir(void) VLC_USED;
VLC_API const char * config_GetConfDir( void ) VLC_USED;
typedef enum vlc_userdir
VLC_API void config_ChainParse( vlc_object_t *, const char *psz_prefix, const char *const *ppsz_options, config_chain_t * );
#define config_ChainParse( a, b, c, d ) config_ChainParse( VLC_OBJECT(a), b, c, d )
+/**
+ * This function will parse a configuration string (psz_opts) and
+ * - set all options for this module in a chained list (*pp_cfg)
+ * - returns a pointer on the next module if any.
+ *
+ * The string format is
+ * module{option=*,option=*}
+ *
+ * The options values are unescaped using config_StringUnescape.
+ */
+VLC_API const char *config_ChainParseOptions( config_chain_t **pp_cfg, const char *ppsz_opts );
+
/**
* This function will parse a configuration string (psz_string) and
* - set the module name (*ppsz_name)