/* 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"
/* 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;
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
*****************************************************************************/
# define OS2EMX_PLAIN_CHAR
# define INCL_BASE
# define INCL_PM
+# include <os2safe.h>
# include <os2.h>
#endif