]> git.sesse.net Git - vlc/blobdiff - include/vlc_common.h
Try to fix the obnoxious _stati64 warning
[vlc] / include / vlc_common.h
index 00b4462f0138840473630f9f7ef9cbd880393044..f829027432a5c5fc4043be6406d8268e2273fa5b 100644 (file)
@@ -58,7 +58,6 @@
 #endif
 
 #include "vlc_config.h"
-#include "modules_inner.h"
 
 /*****************************************************************************
  * Required system headers
@@ -237,6 +236,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;
@@ -327,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;
@@ -447,6 +447,13 @@ typedef struct update_iterator_t update_iterator_t;
 /* Meta engine */
 typedef struct meta_engine_t meta_engine_t;
 
+/* stat/lstat/fstat */
+#ifdef WIN32
+struct _stati64;
+#else
+struct stat;
+#endif
+
 /*****************************************************************************
  * Variable callbacks
  *****************************************************************************/
@@ -459,6 +466,9 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *,      /* variable's object */
 /*****************************************************************************
  * Plug-in stuff
  *****************************************************************************/
+
+#include "modules_inner.h"
+
 #if !defined (__PLUGIN__) || defined (HAVE_SHARED_LIBVLC)
 #   ifdef __cplusplus
 #      define VLC_EXPORT( type, name, args ) extern "C" type name args
@@ -469,6 +479,7 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *,      /* variable's object */
 #   define VLC_EXPORT( type, name, args ) struct _u_n_u_s_e_d_
     extern module_symbols_t* p_symbols;
 #endif
+#define VLC_INTERNAL( type, name, args ) VLC_EXPORT (type, name, args)
 
 /*****************************************************************************
  * OS-specific headers and thread types
@@ -498,7 +509,7 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *,      /* variable's object */
     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;                                                       \
@@ -632,174 +643,48 @@ static int64_t GCD( int64_t a, int64_t b )
 #define FREENULL(a) if( a ) { free( a ); a = NULL; }
 #define FREE(a) if( a ) { free( 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;                   \
-            }                                   \
-        }                                       \
-    }
-
-/* Binary search in an array */
-#define BSEARCH( entries, count, elem, zetype, key, answer ) {  \
-    int low = 0, high = count - 1;   \
-    answer = -1; \
-    while( low <= high ) {\
-        int mid = (low + high ) / 2; /* Just don't care about 2^30 tables */ \
-        zetype mid_val = entries[mid] elem;\
-        if( mid_val < key ) \
-            low = mid + 1; \
-        else if ( mid_val > key ) \
-            high = mid -1;  \
-        else    \
-        {   \
-            answer = mid;  break;   \
-        }\
-    } \
-}
-
-/* Dictionnary handling */
-struct dict_entry_t
-{
-    int       i_int;
-    char     *psz_string;
-    uint64_t  i_hash;
-    void     *p_data;
-};
+#define EMPTY_STR(str) (!str || !*str)
 
-struct dict_t
-{
-    dict_entry_t *p_entries;
-    int i_entries;
-};
-
-VLC_EXPORT( dict_t *, vlc_DictNew, (void) );
-VLC_EXPORT( void, vlc_DictClear, (dict_t * ) );
-VLC_EXPORT( void, vlc_DictInsert, (dict_t *, int, const char *, void * ) );
-VLC_EXPORT( void*, vlc_DictGet, (dict_t *, int, const char * ) );
-VLC_EXPORT( int, vlc_DictLookup, (dict_t *, int, const char * ) );
+#include <vlc_arrays.h>
 
 /* 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)
@@ -854,7 +739,7 @@ static inline void _SetQWBE( uint8_t *p, uint64_t i_qw )
     SetDWBE( p, ( i_qw >> 32)&0xffffffff );
 }
 
-#if WORDS_BIGENDIAN
+#ifdef WORDS_BIGENDIAN
 #   define hton16(i)   ( i )
 #   define hton32(i)   ( i )
 #   define hton64(i)   ( i )
@@ -1280,7 +1165,9 @@ VLC_EXPORT( const char *, VLC_Changeset, ( void ) );
 #endif
 
 #if defined( WIN32 ) || defined( UNDER_CE )
+#   define DIR_SEP_CHAR '\\'
 #   define DIR_SEP "\\"
 #else
+#   define DIR_SEP_CHAR '/'
 #   define DIR_SEP "/"
 #endif