/* Branch prediction */
#ifdef __GNUC__
-# define likely(p) __builtin_expect(!!(p), 1)
-# define unlikely(p) __builtin_expect(!!(p), 0)
+# define likely(p) __builtin_expect(!!(p), 1)
+# define unlikely(p) __builtin_expect(!!(p), 0)
+# define unreachable() __builtin_unreachable()
#else
-# define likely(p) (!!(p))
-# define unlikely(p) (!!(p))
+# define likely(p) (!!(p))
+# define unlikely(p) (!!(p))
+# define unreachable() ((void)0)
#endif
+#define vlc_assert_unreachable() (assert(!"unreachable"), unreachable())
+
/* Linkage */
#ifdef __cplusplus
# define VLC_EXTERN extern "C"
# define VLC_EXTERN
#endif
-#if defined (WIN32) && defined (DLL_EXPORT)
+#if defined (_WIN32) && defined (DLL_EXPORT)
# define VLC_EXPORT __declspec(dllexport)
#elif VLC_GCC_VERSION(4,0)
# define VLC_EXPORT __attribute__((visibility("default")))
/* Playlist */
-/* FIXME */
-/**
- * Playlist commands
- */
-typedef enum {
- PLAYLIST_PLAY, /**< No arg. res=can fail*/
- PLAYLIST_VIEWPLAY, /**< arg1= playlist_item_t*,*/
- /** arg2 = playlist_item_t* , res=can fail */
- PLAYLIST_PAUSE, /**< No arg res=can fail*/
- PLAYLIST_STOP, /**< No arg res=can fail*/
- PLAYLIST_SKIP, /**< arg1=int, res=can fail*/
-} playlist_command_t;
-
-
typedef struct playlist_t playlist_t;
typedef struct playlist_item_t playlist_item_t;
typedef struct services_discovery_t services_discovery_t;
/* misc */
typedef struct vlc_meta_t vlc_meta_t;
typedef struct input_stats_t input_stats_t;
+typedef struct addon_entry_t addon_entry_t;
/* Update */
typedef struct update_t update_t;
float f_float;
char * psz_string;
void * p_address;
- vlc_object_t * p_object;
vlc_list_t * p_list;
mtime_t i_time;
struct { int32_t x; int32_t y; } coords;
*/
struct vlc_list_t
{
- int i_count;
- vlc_value_t * p_values;
- int * pi_types;
-
+ int i_type;
+ int i_count;
+ vlc_value_t *p_values;
};
/*****************************************************************************
#define VLC_ENOITEM (-8) /**< Item not found */
/*****************************************************************************
- * Variable callbacks
+ * Variable callbacks: called when the value is modified
*****************************************************************************/
typedef int ( * vlc_callback_t ) ( vlc_object_t *, /* variable's object */
char const *, /* variable name */
vlc_value_t, /* new value */
void * ); /* callback data */
+/*****************************************************************************
+ * List callbacks: called when elements are added/removed from the list
+ *****************************************************************************/
+typedef int ( * vlc_list_callback_t ) ( vlc_object_t *, /* variable's object */
+ char const *, /* variable name */
+ int, /* VLC_VAR_* action */
+ vlc_value_t *, /* new/deleted value */
+ void *); /* callback data */
+
+typedef enum
+{
+ vlc_value_callback,
+ vlc_list_callback
+} vlc_callback_type_t;
+
/*****************************************************************************
* OS-specific headers and thread types
*****************************************************************************/
-#if defined( WIN32 )
+#if defined( _WIN32 )
# include <malloc.h>
# ifndef PATH_MAX
# define PATH_MAX MAX_PATH
# define OS2EMX_PLAIN_CHAR
# define INCL_BASE
# define INCL_PM
+# include <os2safe.h>
# include <os2.h>
#endif
/* Stuff defined in src/extras/libc.c */
-#if defined(WIN32)
+#if defined(_WIN32)
/* several type definitions */
# if defined( __MINGW32__ )
# if !defined( _OFF_T_ )
# endif
# include <tchar.h>
-#endif /* WIN32 */
+#endif /* _WIN32 */
VLC_API bool vlc_ureduce( unsigned *, unsigned *, uint64_t, uint64_t, uint64_t );
#include <AvailabilityMacros.h>
#endif
-#ifdef WIN32
+#ifdef __MINGW32__
# define vlc_memalign(align, size) (__mingw_aligned_malloc(size, align))
# define vlc_free(base) (__mingw_aligned_free(base))
+#elif defined(_MSC_VER)
+# define vlc_memalign(align, size) (_aligned_malloc(size, align))
+# define vlc_free(base) (_aligned_free(base))
#elif defined(__APPLE__) && !defined(MAC_OS_X_VERSION_10_6)
static inline void *vlc_memalign(size_t align, size_t size)
{
#include "vlc_main.h"
#include "vlc_configuration.h"
-#if defined( WIN32 ) || defined( __SYMBIAN32__ ) || defined( __OS2__ )
+#if defined( _WIN32 ) || defined( __SYMBIAN32__ ) || defined( __OS2__ )
# define DIR_SEP_CHAR '\\'
# define DIR_SEP "\\"
# define PATH_SEP_CHAR ';'