X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_common.h;h=3190e669db5c6d907ab653290bac12fd1f4d02d6;hb=d62129ac74220d751b528a24c12e4dfb3a764f2e;hp=1e7bbf16b622677f1cde6b7d65eede018a8b1594;hpb=56aefe318680e438e57c11ee330c4d1528019a38;p=vlc diff --git a/include/vlc_common.h b/include/vlc_common.h index 1e7bbf16b6..3190e669db 100644 --- a/include/vlc_common.h +++ b/include/vlc_common.h @@ -55,6 +55,15 @@ # include #endif +/* Format string sanity checks */ +#ifdef __GNUC__ +# define LIBVLC_FORMAT(x,y) __attribute__ ((format(printf,x,y))) +# define LIBVLC_USED __attribute__ ((warn_unused_result)) +#else +# define LIBVLC_FORMAT(x,y) +# define LIBVLC_USED +#endif + /***************************************************************************** * Basic types definitions *****************************************************************************/ @@ -106,6 +115,13 @@ typedef uint32_t vlc_fourcc_t; #endif +/** + * Translate a vlc_fourcc into its string representation. This function + * assumes there is enough room in psz_fourcc to store 4 characters in. + * + * \param fcc a vlc_fourcc_t + * \param psz_fourcc string to store string representation of vlc_fourcc in + */ static inline void __vlc_fourcc_to_char( vlc_fourcc_t fcc, char *psz_fourcc ) { memcpy( psz_fourcc, &fcc, 4 ); @@ -154,8 +170,6 @@ typedef struct playlist_export_t playlist_export_t; 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; @@ -247,12 +261,8 @@ typedef struct sout_stream_t sout_stream_t; typedef struct sout_stream_sys_t sout_stream_sys_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; 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; @@ -367,10 +377,18 @@ typedef struct meta_engine_t meta_engine_t; /* stat/lstat/fstat */ #ifdef WIN32 +# ifdef UNDER_CE +# undef _STAT_DEFINED +# endif #include +# ifndef UNDER_CE struct _stati64; #define stat _stati64 #define fstat _fstati64 +# else +# define stat _stat +# define fstat _fstat +# endif /* You should otherwise use utf8_stat and utf8_lstat. */ #else struct stat; @@ -469,6 +487,9 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *, /* variable's object */ # define LIBVLC_EXTERN extern #endif #if defined (WIN32) && defined (DLL_EXPORT) +#if defined (UNDER_CE) +# include +#endif # define LIBVLC_EXPORT __declspec(dllexport) #else # define LIBVLC_EXPORT @@ -532,8 +553,12 @@ typedef struct vlc_object_internals_t vlc_object_internals_t; /**@}*/ \ /* VLC_OBJECT: attempt at doing a clever cast */ -#define VLC_OBJECT( x ) \ - (((vlc_object_t *)(x))+0*(x)->be_sure_to_add_VLC_COMMON_MEMBERS_to_struct) +#ifdef __GNUC__ +# define VLC_OBJECT( x ) \ + (((vlc_object_t *)(x))+0*(((typeof(x))0)->be_sure_to_add_VLC_COMMON_MEMBERS_to_struct)) +#else +# define VLC_OBJECT( x ) ((vlc_object_t *)(x)) +#endif #define VLC_GC_MEMBERS \ /** \name VLC_GC_MEMBERS \ @@ -578,7 +603,8 @@ VLC_EXPORT(void, __vlc_gc_init, ( gc_object_t * p_gc, # define __MIN(a, b) ( ((a) < (b)) ? (a) : (b) ) #endif -static inline int64_t GCD( int64_t a, int64_t b ) +LIBVLC_USED +static inline int64_t GCD ( int64_t a, int64_t b ) { while( b ) { @@ -590,6 +616,7 @@ static inline int64_t GCD( int64_t a, int64_t b ) } /* function imported from libavutil/common.h */ +LIBVLC_USED static inline uint8_t clip_uint8_vlc( int32_t a ) { if( a&(~255) ) return (-a)>>31; @@ -616,23 +643,28 @@ static inline uint8_t clip_uint8_vlc( int32_t a ) #define EMPTY_STR(str) (!str || !*str) -VLC_EXPORT( char const *, vlc_error, ( int ) ); +VLC_EXPORT( char const *, vlc_error, ( int ) LIBVLC_USED ); #include /* MSB (big endian)/LSB (little endian) conversions - network order is always * MSB, and should be used for both network communications and files. */ +LIBVLC_USED static inline uint16_t U16_AT( const void * _p ) { const uint8_t * p = (const uint8_t *)_p; return ( ((uint16_t)p[0] << 8) | p[1] ); } + +LIBVLC_USED static inline uint32_t U32_AT( const void * _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] ); } + +LIBVLC_USED static inline uint64_t U64_AT( const void * _p ) { const uint8_t * p = (const uint8_t *)_p; @@ -642,17 +674,22 @@ static inline uint64_t U64_AT( const void * _p ) | ((uint64_t)p[6] << 8) | p[7] ); } +LIBVLC_USED static inline uint16_t GetWLE( const void * _p ) { const uint8_t * p = (const uint8_t *)_p; return ( ((uint16_t)p[1] << 8) | p[0] ); } + +LIBVLC_USED static inline uint32_t GetDWLE( const void * _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] ); } + +LIBVLC_USED static inline uint64_t GetQWLE( const void * _p ) { const uint8_t * p = (const uint8_t *)_p; @@ -715,6 +752,7 @@ static inline void _SetQWBE( uint8_t *p, uint64_t i_qw ) #define ntoh16(i) ntohs(i) #define ntoh32(i) ntohl(i) +LIBVLC_USED static inline uint64_t ntoh64 (uint64_t ll) { union { uint64_t qw; uint8_t b[16]; } v = { ll }; @@ -729,21 +767,15 @@ static inline uint64_t ntoh64 (uint64_t ll) } #define hton64(i) ntoh64(i) -/* Format string sanity checks */ -#ifdef __GNUC__ -# define LIBVLC_FORMAT(x,y) __attribute__ ((format(printf,x,y))) -#else -# define LIBVLC_FORMAT(x,y) -#endif - /* */ #define VLC_UNUSED(x) (void)(x) /* Stuff defined in src/extras/libc.c */ VLC_EXPORT( size_t, vlc_strlcpy, ( char *, const char *, size_t ) ); -VLC_EXPORT( long long, vlc_strtoll, ( const char *nptr, char **endptr, int base ) ); +VLC_EXPORT( long long, vlc_strtoll, ( const char *nptr, char **endptr, int base ) LIBVLC_USED ); -VLC_EXPORT( char *, vlc_strcasestr, ( const char *s1, const char *s2 ) ); +VLC_EXPORT( char *, vlc_strcasestr, ( const char *s1, const char *s2 ) LIBVLC_USED ); +char *vlc_strsep( char **, const char * ); #if defined(WIN32) || defined(UNDER_CE) /* win32, cl and icl support */ @@ -809,16 +841,16 @@ VLC_EXPORT( bool, vlc_ureduce, ( unsigned *, unsigned *, uint64_t, uint64_t, uin /* vlc_wraptext (defined in src/extras/libc.c) */ #define wraptext vlc_wraptext -VLC_EXPORT( char *, vlc_wraptext, ( const char *, int ) ); +VLC_EXPORT( char *, vlc_wraptext, ( const char *, int ) LIBVLC_USED ); /* iconv wrappers (defined in src/extras/libc.c) */ typedef void *vlc_iconv_t; -VLC_EXPORT( vlc_iconv_t, vlc_iconv_open, ( const char *, const char * ) ); -VLC_EXPORT( size_t, vlc_iconv, ( vlc_iconv_t, const char **, size_t *, char **, size_t * ) ); +VLC_EXPORT( vlc_iconv_t, vlc_iconv_open, ( const char *, const char * ) LIBVLC_USED ); +VLC_EXPORT( size_t, vlc_iconv, ( vlc_iconv_t, const char **, size_t *, char **, size_t * ) LIBVLC_USED ); 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 *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 ) ); +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 ) LIBVLC_USED ); #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) /* dir wrappers (defined in src/extras/libc.c) */ @@ -850,18 +882,18 @@ VLC_EXPORT( void *, vlc_memset, ( void *, int, size_t ) ); /***************************************************************************** * I18n stuff *****************************************************************************/ -VLC_EXPORT( char *, vlc_gettext, ( const char *msgid ) ); +VLC_EXPORT( char *, vlc_gettext, ( const char *msgid ) LIBVLC_USED ); /***************************************************************************** * libvlc features *****************************************************************************/ -VLC_EXPORT( const char *, VLC_Version, ( void ) ); -VLC_EXPORT( const char *, VLC_CompileBy, ( void ) ); -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 ) ); +VLC_EXPORT( const char *, VLC_Version, ( void ) LIBVLC_USED ); +VLC_EXPORT( const char *, VLC_CompileBy, ( void ) LIBVLC_USED ); +VLC_EXPORT( const char *, VLC_CompileHost, ( void ) LIBVLC_USED ); +VLC_EXPORT( const char *, VLC_CompileDomain, ( void ) LIBVLC_USED ); +VLC_EXPORT( const char *, VLC_Compiler, ( void ) LIBVLC_USED ); +VLC_EXPORT( const char *, VLC_Error, ( int ) LIBVLC_USED ); +VLC_EXPORT( const char *, VLC_Changeset, ( void ) LIBVLC_USED ); /***************************************************************************** * Additional vlc stuff