X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_common.h;h=502bd08b85d986776730b962e5f1dce60aeb9fc4;hb=be50cf5ba79d4e1203b87d9b32e7b921d1bc4854;hp=661f72c39dbd9574d2cc331bab0822a9610aa5a2;hpb=8f973a0b05db90ef8f602ca8863563e0724e8581;p=vlc diff --git a/include/vlc_common.h b/include/vlc_common.h index 661f72c39d..502bd08b85 100644 --- a/include/vlc_common.h +++ b/include/vlc_common.h @@ -24,7 +24,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ - /** * \file * This file is a collection of common definitions and types @@ -58,7 +57,6 @@ #endif #include "vlc_config.h" -#include "modules_inner.h" /***************************************************************************** * Required system headers @@ -199,11 +197,12 @@ typedef uint32_t vlc_fourcc_t; *****************************************************************************/ /* Internal types */ -typedef struct libvlc_t libvlc_t; -typedef struct vlc_t vlc_t; +typedef struct libvlc_global_data_t libvlc_global_data_t; +typedef struct libvlc_int_t libvlc_int_t; typedef struct variable_t variable_t; typedef struct date_t date_t; -typedef struct hashtable_entry_t hashtable_entry_t; +typedef struct dict_entry_t dict_entry_t; +typedef struct dict_t dict_t; typedef struct gc_object_t gc_object_t ; /* Messages */ @@ -236,6 +235,7 @@ typedef struct services_discovery_t services_discovery_t; typedef struct services_discovery_sys_t services_discovery_sys_t; typedef struct playlist_add_t playlist_add_t; typedef struct playlist_preparse_t playlist_preparse_t; +typedef struct playlist_fetcher_t playlist_fetcher_t; /* Modules */ typedef struct module_bank_t module_bank_t; @@ -272,6 +272,7 @@ typedef struct es_descriptor_t es_descriptor_t; typedef struct seekpoint_t seekpoint_t; typedef struct info_t info_t; typedef struct info_category_t info_category_t; +typedef struct input_attachment_t input_attachment_t; /* Format */ typedef struct audio_format_t audio_format_t; @@ -326,7 +327,7 @@ typedef struct sout_mux_sys_t sout_mux_sys_t; typedef struct sout_stream_t sout_stream_t; typedef struct sout_stream_sys_t sout_stream_sys_t; -typedef struct sout_cfg_t sout_cfg_t; +typedef struct config_chain_t config_chain_t; typedef struct sap_session_t sap_session_t; typedef struct sap_address_t sap_address_t; typedef struct session_descriptor_t session_descriptor_t; @@ -334,6 +335,18 @@ typedef struct announce_method_t announce_method_t; typedef struct announce_handler_t announce_handler_t; typedef struct sap_handler_t sap_handler_t; +typedef struct sout_param_t sout_param_t; +typedef struct sout_pcat_t sout_pcat_t; +typedef struct sout_std_t sout_std_t; +typedef struct sout_display_t sout_display_t; +typedef struct sout_duplicate_t sout_duplicate_t; +typedef struct sout_transcode_t sout_transcode_t; +typedef struct sout_chain_t sout_chain_t; +typedef struct streaming_profile_t streaming_profile_t; +typedef struct sout_module_t sout_module_t; +typedef struct sout_gui_descr_t sout_gui_descr_t; +typedef struct profile_parser_t profile_parser_t; + /* Decoders */ typedef struct decoder_t decoder_t; typedef struct decoder_sys_t decoder_sys_t; @@ -355,6 +368,9 @@ typedef struct vlc_acl_t vlc_acl_t; /* Misc */ typedef struct iso639_lang_t iso639_lang_t; +typedef struct device_t device_t; +typedef struct device_probe_t device_probe_t; +typedef struct probe_sys_t probe_sys_t; /* block */ typedef struct block_t block_t; @@ -410,11 +426,10 @@ typedef struct osd_menu_state_t osd_menu_state_t; /* VLM */ typedef struct vlm_t vlm_t; typedef struct vlm_message_t vlm_message_t; -typedef struct vlm_media_t vlm_media_t; -typedef struct vlm_schedule_t vlm_schedule_t; /* divers */ typedef struct vlc_meta_t vlc_meta_t; +typedef struct meta_export_t meta_export_t; /* Stats */ typedef struct counter_t counter_t; @@ -427,6 +442,20 @@ typedef struct global_stats_t global_stats_t; typedef struct update_t update_t; typedef struct update_iterator_t update_iterator_t; +/* Meta engine */ +typedef struct meta_engine_t meta_engine_t; + +/* stat/lstat/fstat */ +#ifdef WIN32 +#include +struct _stati64; +#define stat _stati64 +#define fstat _fstati64 +/* You should otherwise use utf8_stat and utf8_lstat. */ +#else +struct stat; +#endif + /***************************************************************************** * Variable callbacks *****************************************************************************/ @@ -439,15 +468,46 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *, /* variable's object */ /***************************************************************************** * Plug-in stuff *****************************************************************************/ -#if !defined (__PLUGIN__) || defined (HAVE_SHARED_LIBVLC) -# ifdef __cplusplus -# define VLC_EXPORT( type, name, args ) extern "C" type name args -# else -# define VLC_EXPORT( type, name, args ) type name args -# endif + +#include "vlc_modules_macros.h" + +#if defined (WIN32) && defined (DLL_EXPORT) +# ifdef __cplusplus +# define VLC_PUBLIC_API __declspec(dllexport) +# define VLC_PRIVATE_API __declspec(dllexport) +# define VLC_EXPORT( type, name, args ) extern "C" __declspec(dllexport) type name args +# define VLC_INTERNAL( type, name, args ) extern "C" type name args +# else +# define VLC_PUBLIC_API extern __declspec(dllexport) +# define VLC_PRIVATE_API extern __declspec(dllexport) +# define VLC_EXPORT( type, name, args ) __declspec(dllexport) type name args +# define VLC_INTERNAL( type, name, args ) type name args +# endif #else -# define VLC_EXPORT( type, name, args ) struct _u_n_u_s_e_d_ - extern module_symbols_t* p_symbols; +# ifdef __cplusplus +# if HAVE_ATTRIBUTE_VISIBILITY +# define VLC_PUBLIC_API __attribute__((visibility("default"))) +# define VLC_PRIVATE_API __attribute__((visibility("default"))) +# define VLC_EXPORT( type, name, args ) extern "C" __attribute__((visibility("default"))) type name args +# define VLC_INTERNAL( type, name, args ) extern "C" __attribute__((visibility("hidden"))) type name args +# else +# define VLC_PUBLIC_API +# define VLC_EXPORT( type, name, args ) extern "C" type name args +# define VLC_INTERNAL( type, name, args ) extern "C" type name args +# endif +# else +# if HAVE_ATTRIBUTE_VISIBILITY +# define VLC_PUBLIC_API extern __attribute__((visibility("default"))) +# define VLC_PRIVATE_API extern __attribute__((visibility("default"))) +# define VLC_EXPORT( type, name, args ) __attribute__((visibility("default"))) type name args +# define VLC_INTERNAL( type, name, args ) __attribute__((visibility("hidden"))) type name args +# else +# define VLC_PUBLIC_API extern +# define VLC_PRIVATE_API extern +# define VLC_EXPORT( type, name, args ) type name args +# define VLC_INTERNAL( type, name, args ) type name args +# endif +# endif #endif /***************************************************************************** @@ -465,6 +525,8 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *, /* variable's object */ #include "vlc_threads.h" +typedef struct vlc_object_internals_t vlc_object_internals_t; + /***************************************************************************** * Common structure members *****************************************************************************/ @@ -475,19 +537,16 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *, /* variable's object */ * these members are common for all vlc objects \ */ \ /**@{*/ \ + vlc_object_internals_t *p_internals; \ int i_object_id; \ int i_object_type; \ const char *psz_object_type; \ - char *psz_object_name; \ + const char *psz_object_name; \ \ /* Messages header */ \ char *psz_header; \ int i_flags; \ \ - /* Thread properties, if any */ \ - vlc_bool_t b_thread; \ - vlc_thread_t thread_id; \ - \ /* Object access lock */ \ vlc_mutex_t object_lock; \ vlc_cond_t object_wait; \ @@ -499,14 +558,8 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *, /* variable's object */ volatile vlc_bool_t b_attached; /**< set by the object */ \ vlc_bool_t b_force; /**< set by the outside (eg. module_Need()) */ \ \ - /* Object variables */ \ - vlc_mutex_t var_lock; \ - int i_vars; \ - variable_t * p_vars; \ - \ /* Stuff related to the libvlc structure */ \ - libvlc_t * p_libvlc; /**< root of all evil */ \ - vlc_t * p_vlc; /**< (root of all evil) - 1 */ \ + libvlc_int_t *p_libvlc; /**< (root of all evil) - 1 */ \ \ volatile int i_refcount; /**< usage count */ \ vlc_object_t * p_parent; /**< our parent */ \ @@ -593,149 +646,76 @@ static int64_t GCD( int64_t a, int64_t b ) else return a; } -/* Dynamic array handling: realloc array, move data, increment position */ -#if defined( _MSC_VER ) && _MSC_VER < 1300 && !defined( UNDER_CE ) -# define VLCCVP (void**) /* Work-around for broken compiler */ -#else -# define VLCCVP -#endif -#define INSERT_ELEM( p_ar, i_oldsize, i_pos, elem ) \ - do \ - { \ - if( !i_oldsize ) (p_ar) = NULL; \ - (p_ar) = VLCCVP realloc( p_ar, ((i_oldsize) + 1) * sizeof(*(p_ar)) ); \ - if( (i_oldsize) - (i_pos) ) \ - { \ - memmove( (p_ar) + (i_pos) + 1, (p_ar) + (i_pos), \ - ((i_oldsize) - (i_pos)) * sizeof( *(p_ar) ) ); \ - } \ - (p_ar)[i_pos] = elem; \ - (i_oldsize)++; \ - } \ - while( 0 ) - -#define REMOVE_ELEM( p_ar, i_oldsize, i_pos ) \ - do \ - { \ - if( (i_oldsize) - (i_pos) - 1 ) \ - { \ - memmove( (p_ar) + (i_pos), \ - (p_ar) + (i_pos) + 1, \ - ((i_oldsize) - (i_pos) - 1) * sizeof( *(p_ar) ) ); \ - } \ - if( i_oldsize > 1 ) \ - { \ - (p_ar) = realloc( p_ar, ((i_oldsize) - 1) * sizeof( *(p_ar) ) ); \ - } \ - else \ - { \ - free( p_ar ); \ - (p_ar) = NULL; \ - } \ - (i_oldsize)--; \ - } \ - while( 0 ) - - -#define TAB_APPEND( count, tab, p ) \ - if( (count) > 0 ) \ - { \ - (tab) = realloc( tab, sizeof( void ** ) * ( (count) + 1 ) ); \ - } \ - else \ - { \ - (tab) = malloc( sizeof( void ** ) ); \ - } \ - (tab)[count] = (p); \ - (count)++ - -#define TAB_FIND( count, tab, p, index ) \ - { \ - int _i_; \ - (index) = -1; \ - for( _i_ = 0; _i_ < (count); _i_++ ) \ - { \ - if( (tab)[_i_] == (p) ) \ - { \ - (index) = _i_; \ - break; \ - } \ - } \ - } - -#define TAB_REMOVE( count, tab, p ) \ - { \ - int _i_index_; \ - TAB_FIND( count, tab, p, _i_index_ ); \ - if( _i_index_ >= 0 ) \ - { \ - if( (count) > 1 ) \ - { \ - memmove( ((void**)(tab) + _i_index_), \ - ((void**)(tab) + _i_index_+1), \ - ( (count) - _i_index_ - 1 ) * sizeof( void* ) );\ - } \ - (count)--; \ - if( (count) == 0 ) \ - { \ - free( tab ); \ - (tab) = NULL; \ - } \ - } \ - } - -/* Hash tables handling */ -struct hashtable_entry_t +/* function imported from libavutil/common.h */ +static inline uint8_t clip_uint8_vlc( int32_t a ) { - int i_id; - char *psz_name; - uint64_t i_hash; - void *p_data; -}; + if( a&(~255) ) return (-a)>>31; + else return a; +} + +/* Malloc with automatic error */ +#define MALLOC_VOID( var, type ) { var = (type*)malloc( sizeof( type) ); \ + if( !var ) return; } +#define MALLOC_NULL( var, type ) { var = (type*)malloc( sizeof( type) ); \ + if( !var ) return NULL; } +#define MALLOC_ERR( var, type ) { var = (type*)malloc( sizeof( type) ); \ + if( !var ) return VLC_ENOMEM; } +#define MALLOC_GOTOERR( var, type ) { var = (type*)malloc( sizeof( type) ); \ + if( !var ) goto error; } +#define DECMALLOC_VOID( var, type ) type* var = (type*)malloc( sizeof(type) );\ + if( !var ) return; +#define DECMALLOC_ERR( var, type ) type* var = (type*)malloc( sizeof(type) );\ + if( !var ) return VLC_ENOMEM; +#define DECMALLOC_NULL( var, type ) type* var = (type*)malloc( sizeof(type) );\ + if( !var ) return NULL; -VLC_EXPORT( void, vlc_HashInsert, (hashtable_entry_t **, int *, int, const char *, void *)); -VLC_EXPORT( void*, vlc_HashRetrieve, (hashtable_entry_t*, int, int, const char *) ); -VLC_EXPORT( int, vlc_HashLookup, (hashtable_entry_t *, int, int, const char *) ); +#define FREENULL(a) if( a ) { free( a ); a = NULL; } +#define FREE(a) if( a ) { free( a ); } +#define EMPTY_STR(str) (!str || !*str) + +VLC_EXPORT( char const *, vlc_error, ( int ) ); + +#include /* MSB (big endian)/LSB (little endian) conversions - network order is always * MSB, and should be used for both network communications and files. Note that * byte orders other than little and big endians are not supported, but only * the VAX seems to have such exotic properties. */ -static inline uint16_t U16_AT( void const * _p ) +static inline uint16_t U16_AT( const void * _p ) { - uint8_t * p = (uint8_t *)_p; + const uint8_t * p = (const uint8_t *)_p; return ( ((uint16_t)p[0] << 8) | p[1] ); } -static inline uint32_t U32_AT( void const * _p ) +static inline uint32_t U32_AT( const void * _p ) { - uint8_t * p = (uint8_t *)_p; + const uint8_t * p = (const uint8_t *)_p; return ( ((uint32_t)p[0] << 24) | ((uint32_t)p[1] << 16) | ((uint32_t)p[2] << 8) | p[3] ); } -static inline uint64_t U64_AT( void const * _p ) +static inline uint64_t U64_AT( const void * _p ) { - uint8_t * p = (uint8_t *)_p; + const uint8_t * p = (const uint8_t *)_p; return ( ((uint64_t)p[0] << 56) | ((uint64_t)p[1] << 48) | ((uint64_t)p[2] << 40) | ((uint64_t)p[3] << 32) | ((uint64_t)p[4] << 24) | ((uint64_t)p[5] << 16) | ((uint64_t)p[6] << 8) | p[7] ); } -static inline uint16_t GetWLE( void const * _p ) +static inline uint16_t GetWLE( const void * _p ) { - uint8_t * p = (uint8_t *)_p; + const uint8_t * p = (const uint8_t *)_p; return ( ((uint16_t)p[1] << 8) | p[0] ); } -static inline uint32_t GetDWLE( void const * _p ) +static inline uint32_t GetDWLE( const void * _p ) { - uint8_t * p = (uint8_t *)_p; + const uint8_t * p = (const uint8_t *)_p; return ( ((uint32_t)p[3] << 24) | ((uint32_t)p[2] << 16) | ((uint32_t)p[1] << 8) | p[0] ); } -static inline uint64_t GetQWLE( void const * _p ) +static inline uint64_t GetQWLE( const void * _p ) { - uint8_t * p = (uint8_t *)_p; + const uint8_t * p = (const uint8_t *)_p; return ( ((uint64_t)p[7] << 56) | ((uint64_t)p[6] << 48) | ((uint64_t)p[5] << 40) | ((uint64_t)p[4] << 32) | ((uint64_t)p[3] << 24) | ((uint64_t)p[2] << 16) @@ -747,14 +727,14 @@ static inline uint64_t GetQWLE( void const * _p ) #define GetQWBE( p ) U64_AT( p ) /* Helper writer functions */ -#define SetWLE( p, v ) _SetWLE( (uint8_t*)p, v) +#define SetWLE( p, v ) _SetWLE( (uint8_t*)(p), v) static inline void _SetWLE( uint8_t *p, uint16_t i_dw ) { p[1] = ( i_dw >> 8 )&0xff; p[0] = ( i_dw )&0xff; } -#define SetDWLE( p, v ) _SetDWLE( (uint8_t*)p, v) +#define SetDWLE( p, v ) _SetDWLE( (uint8_t*)(p), v) static inline void _SetDWLE( uint8_t *p, uint32_t i_dw ) { p[3] = ( i_dw >> 24 )&0xff; @@ -762,20 +742,20 @@ static inline void _SetDWLE( uint8_t *p, uint32_t i_dw ) p[1] = ( i_dw >> 8 )&0xff; p[0] = ( i_dw )&0xff; } -#define SetQWLE( p, v ) _SetQWLE( (uint8_t*)p, v) +#define SetQWLE( p, v ) _SetQWLE( (uint8_t*)(p), v) static inline void _SetQWLE( uint8_t *p, uint64_t i_qw ) { SetDWLE( p, i_qw&0xffffffff ); SetDWLE( p+4, ( i_qw >> 32)&0xffffffff ); } -#define SetWBE( p, v ) _SetWBE( (uint8_t*)p, v) +#define SetWBE( p, v ) _SetWBE( (uint8_t*)(p), v) static inline void _SetWBE( uint8_t *p, uint16_t i_dw ) { p[0] = ( i_dw >> 8 )&0xff; p[1] = ( i_dw )&0xff; } -#define SetDWBE( p, v ) _SetDWBE( (uint8_t*)p, v) +#define SetDWBE( p, v ) _SetDWBE( (uint8_t*)(p), v) static inline void _SetDWBE( uint8_t *p, uint32_t i_dw ) { p[0] = ( i_dw >> 24 )&0xff; @@ -783,14 +763,14 @@ static inline void _SetDWBE( uint8_t *p, uint32_t i_dw ) p[2] = ( i_dw >> 8 )&0xff; p[3] = ( i_dw )&0xff; } -#define SetQWBE( p, v ) _SetQWBE( (uint8_t*)p, v) +#define SetQWBE( p, v ) _SetQWBE( (uint8_t*)(p), v) static inline void _SetQWBE( uint8_t *p, uint64_t i_qw ) { SetDWBE( p+4, i_qw&0xffffffff ); SetDWBE( p, ( i_qw >> 32)&0xffffffff ); } -#if WORDS_BIGENDIAN +#ifdef WORDS_BIGENDIAN # define hton16(i) ( i ) # define hton32(i) ( i ) # define hton64(i) ( i ) @@ -883,6 +863,13 @@ static inline void _SetQWBE( uint8_t *p, uint64_t i_qw ) # define vlc_strndup NULL #endif +#ifndef HAVE_STRNLEN +# define strnlen vlc_strnlen + VLC_EXPORT( size_t, vlc_strnlen, ( const char *, size_t ) ); +#elif !defined(__PLUGIN__) +# define vlc_strnlen NULL +#endif + #ifndef HAVE_STRLCPY # define strlcpy vlc_strlcpy VLC_EXPORT( size_t, vlc_strlcpy, ( char *, const char *, size_t ) ); @@ -917,7 +904,8 @@ static inline void _SetQWBE( uint8_t *p, uint64_t i_qw ) # define vlc_strtoll NULL #endif -#if defined(SYS_BEOS) +#if defined(SYS_BEOS) \ + || (defined (__FreeBSD__) && (__FreeBSD__ < 5)) typedef struct { long long quot; /* Quotient. */ long long rem; /* Remainder. */ @@ -1003,11 +991,16 @@ static inline void _SetQWBE( uint8_t *p, uint64_t i_qw ) # define opendir vlc_opendir # define readdir vlc_readdir # define closedir vlc_closedir +# define rewinddir vlc_rewindir +# define seekdir vlc_seekdir +# define telldir vlc_telldir VLC_EXPORT( void *, vlc_opendir, ( const char * ) ); VLC_EXPORT( void *, vlc_readdir, ( void * ) ); VLC_EXPORT( int, vlc_closedir, ( void * ) ); + VLC_INTERNAL( void, vlc_rewinddir, ( void * ) ); + VLC_INTERNAL( void, vlc_seekdir, ( void *, long ) ); + VLC_INTERNAL( long, vlc_telldir, ( void * ) ); #else - struct dirent; /* forward declaration for vlc_symbols.h */ # if !defined(__PLUGIN__) # define vlc_opendir NULL # define vlc_readdir NULL @@ -1015,9 +1008,26 @@ static inline void _SetQWBE( uint8_t *p, uint64_t i_qw ) # endif #endif - VLC_EXPORT( void *, vlc_opendir_wrapper, ( const char * ) ); - VLC_EXPORT( struct dirent *, vlc_readdir_wrapper, ( void * ) ); - VLC_EXPORT( int, vlc_closedir_wrapper, ( void * ) ); +#if defined (WIN32) +# include +VLC_INTERNAL( void *, vlc_wopendir, ( const wchar_t * ) ); +VLC_INTERNAL( struct _wdirent *, vlc_wreaddir, ( void * ) ); +VLC_EXPORT( int, vlc_wclosedir, ( void * ) ); +VLC_INTERNAL( void, vlc_rewinddir, ( void * ) ); +VLC_INTERNAL( void, vlc_seekdir, ( void *, long ) ); +VLC_INTERNAL( long, vlc_telldir, ( void * ) ); +# define opendir Use_utf8_opendir_or_vlc_wopendir_instead! +# define readdir Use_utf8_readdir_or_vlc_wreaddir_instead! +# define closedir vlc_wclosedir +# define _wopendir vlc_wopendir +# define _wreaddir vlc_wreaddir +# define _wclosedir vlc_wclosedir +# define rewinddir vlc_rewinddir +# define seekdir vlc_seekdir +# define telldir vlc_telldir +#elif !defined(__PLUGIN__) +# define vlc_wclosedir NULL +#endif /* Format type specifiers for 64 bits numbers */ #if defined(__CYGWIN32__) || (!defined(WIN32) && !defined(UNDER_CE)) @@ -1133,7 +1143,7 @@ VLC_EXPORT( size_t, vlc_iconv, ( vlc_iconv_t, const char **, size_t *, char **, VLC_EXPORT( int, vlc_iconv_close, ( vlc_iconv_t ) ); /* execve wrapper (defined in src/extras/libc.c) */ -VLC_EXPORT( int, __vlc_execve, ( vlc_object_t *p_object, int i_argc, char **pp_argv, char **pp_env, char *psz_cwd, char *p_in, int i_in, char **pp_data, int *pi_data ) ); +VLC_EXPORT( int, __vlc_execve, ( vlc_object_t *p_object, int i_argc, char *const *pp_argv, char *const *pp_env, const char *psz_cwd, const char *p_in, size_t i_in, char **pp_data, size_t *pi_data ) ); #define vlc_execve(a,b,c,d,e,f,g,h,i) __vlc_execve(VLC_OBJECT(a),b,c,d,e,f,g,h,i) /***************************************************************************** @@ -1150,11 +1160,12 @@ VLC_EXPORT( int, __vlc_execve, ( vlc_object_t *p_object, int i_argc, char **pp_a #define CPU_CAPABILITY_SSE2 (1<<7) #define CPU_CAPABILITY_ALTIVEC (1<<16) #define CPU_CAPABILITY_FPU (1<<31) +VLC_EXPORT( unsigned, vlc_CPU, ( void ) ); /***************************************************************************** * I18n stuff *****************************************************************************/ -#if defined (WIN32) || !defined (HAVE_SHARED_LIBVLC) +#ifdef WIN32 VLC_EXPORT( char *, vlc_dgettext, ( const char *package, const char *msgid ) ); #endif @@ -1170,15 +1181,15 @@ VLC_EXPORT( char *, vlc_dgettext, ( const char *package, const char *msgid ) ); # include # endif # undef _ -# if defined (WIN32) || !defined (HAVE_SHARED_LIBVLC) +# ifdef WIN32 # define _(String) vlc_dgettext (PACKAGE_NAME, String) # else # define _(String) dgettext(PACKAGE_NAME, String) # endif -# define N_(String) ((char*)(String)) +# define N_(String) (String) #else -# define _(String) ((char*)(String)) -# define N_(String) ((char*)(String)) +# define _(String) (String) +# define N_(String) (String) #endif /***************************************************************************** @@ -1190,28 +1201,38 @@ VLC_EXPORT( const char *, VLC_CompileHost, ( void ) ); VLC_EXPORT( const char *, VLC_CompileDomain, ( void ) ); VLC_EXPORT( const char *, VLC_Compiler, ( void ) ); VLC_EXPORT( const char *, VLC_Error, ( int ) ); +VLC_EXPORT( const char *, VLC_Changeset, ( void ) ); /***************************************************************************** * Additional vlc stuff *****************************************************************************/ -#ifndef HAVE_SHARED_LIBVLC -VLC_EXPORT( const char *, VLC_Changeset, ( void ) ); -# include "vlc_symbols.h" -#else -# define VLC_Changeset( ) ("exported") -#endif -#include "os_specific.h" +#include "vlc_os_specific.h" #include "vlc_messages.h" -#include "variables.h" +#include "vlc_variables.h" #include "vlc_objects.h" #include "vlc_threads_funcs.h" -#include "mtime.h" -#include "modules.h" +#include "vlc_mtime.h" +#include "vlc_modules.h" #include "main.h" -#include "configuration.h" +#include "vlc_configuration.h" + +/** The global thread var for msg stack context + * We store this as a static global variable so we don't need a vlc_object_t + * everywhere. + * This key is created in vlc_threads_init and is therefore ready to use at + * the very beginning of the universe */ +extern vlc_threadvar_t msg_context_global_key; + #if defined( __BORLANDC__ ) # undef PACKAGE # define PACKAGE #endif +#if defined( WIN32 ) || defined( UNDER_CE ) +# define DIR_SEP_CHAR '\\' +# define DIR_SEP "\\" +#else +# define DIR_SEP_CHAR '/' +# define DIR_SEP "/" +#endif