* Collection of useful common types and macros definitions
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
- * $Id: vlc_common.h,v 1.38 2002/11/13 15:28:24 sam Exp $
+ * $Id: vlc_common.h,v 1.68 2003/07/14 20:36:55 sigmunau Exp $
*
* Authors: Samuel Hocevar <sam@via.ecp.fr>
* Vincent Seguin <seguin@via.ecp.fr>
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#if defined( __BORLANDC__ )
# undef HAVE_VARIADIC_MACROS
# undef HAVE_STDINT_H
+# undef HAVE_INTTYPES_H
+# undef off_t
#endif
#include "vlc_config.h"
# endif
#endif
+#if defined( WIN32 )
+# include <malloc.h>
+#endif
+
#if defined( WIN32 ) || defined( UNDER_CE )
typedef int ssize_t;
#endif
/* Audio volume */
typedef uint16_t audio_volume_t;
+#ifndef HAVE_SOCKLEN_T
+typedef int socklen_t;
+#endif
+
/*****************************************************************************
* Old types definitions
*****************************************************************************
/* Internal types */
typedef struct libvlc_t libvlc_t;
typedef struct vlc_t vlc_t;
-typedef struct vlc_list_t vlc_list_t;
-typedef struct vlc_object_t vlc_object_t;
typedef struct variable_t variable_t;
/* Messages */
typedef struct picture_heap_t picture_heap_t;
typedef struct subpicture_t subpicture_t;
typedef struct subpicture_sys_t subpicture_sys_t;
+typedef struct vout_synchro_t vout_synchro_t;
+typedef struct text_renderer_sys_t text_renderer_sys_t;
+typedef struct text_style_t text_style_t;
/* Stream output */
typedef struct sout_instance_t sout_instance_t;
typedef struct sout_fifo_t sout_fifo_t;
-
+typedef struct sout_input_t sout_input_t;
+typedef struct sout_packetizer_input_t sout_packetizer_input_t;
+typedef struct sout_buffer_t sout_buffer_t;
+typedef struct sout_access_out_t sout_access_out_t;
+typedef struct sout_mux_t sout_mux_t;
+typedef struct sout_stream_t sout_stream_t;
+typedef struct sout_cfg_t sout_cfg_t;
+typedef struct sout_format_t sout_format_t;
+typedef struct sap_session_t sap_session_t;
/* Decoders */
typedef struct decoder_fifo_t decoder_fifo_t;
#if defined( WIN32 ) || defined( UNDER_CE )
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
+# define IS_WINNT ( GetVersion() < 0x80000000 )
#endif
#include "vlc_threads.h"
/* VLC_COMMON_MEMBERS : members common to all basic vlc objects */
#define VLC_COMMON_MEMBERS \
+/** \name VLC_COMMON_MEMBERS \
+ * these members are common for all vlc objects \
+ */ \
+/**@{*/ \
int i_object_id; \
int i_object_type; \
char *psz_object_type; \
vlc_cond_t object_wait; \
\
/* Object properties */ \
- volatile vlc_bool_t b_error; /* set by the object */ \
- volatile vlc_bool_t b_die; /* set by the outside */ \
- volatile vlc_bool_t b_dead; /* set by the object */ \
- volatile vlc_bool_t b_attached; /* set by the object */ \
+ volatile vlc_bool_t b_error; /**< set by the object */ \
+ volatile vlc_bool_t b_die; /**< set by the outside */ \
+ volatile vlc_bool_t b_dead; /**< set by the object */ \
+ volatile vlc_bool_t b_attached; /**< set by the object */ \
\
/* Object variables */ \
vlc_mutex_t var_lock; \
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_t * p_libvlc; /**< root of all evil */ \
+ vlc_t * p_vlc; /**< (root of all evil) - 1 */ \
\
- volatile int i_refcount; /* usage count */ \
- vlc_object_t * p_parent; /* our parent */ \
- vlc_object_t ** pp_children; /* our children */ \
+ volatile int i_refcount; /**< usage count */ \
+ vlc_object_t * p_parent; /**< our parent */ \
+ vlc_object_t ** pp_children; /**< our children */ \
volatile int i_children; \
\
/* Private data */ \
void * p_private; \
\
- /* Just a reminder so that people don't cast garbage */ \
+ /** Just a reminder so that people don't cast garbage */ \
int be_sure_to_add_VLC_COMMON_MEMBERS_to_struct; \
+/**@}*/ \
/* VLC_OBJECT: attempt at doing a clever cast */
#define VLC_OBJECT( x ) \
{ \
(p_ar) = malloc( ((i_oldsize) + 1) * sizeof( *(p_ar) ) ); \
} \
- memmove( (p_ar) + (i_pos) + 1, \
- (p_ar) + (i_pos), \
- ((i_oldsize) - (i_pos)) * 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)++; \
} \
#define REMOVE_ELEM( p_ar, i_oldsize, i_pos ) \
do \
{ \
- memmove( (p_ar) + (i_pos), \
- (p_ar) + (i_pos) + 1, \
- ((i_oldsize) - (i_pos) - 1) * sizeof( *(p_ar) ) ); \
+ 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) ) ); \
# define ntoh64(i) U64_AT(&i)
#endif
+/* Format string sanity checks */
+#ifdef HAVE_ATTRIBUTE_FORMAT
+# define ATTRIBUTE_FORMAT(x,y) __attribute__ ((format(printf,x,y)))
+#else
+# define ATTRIBUTE_FORMAT(x,y)
+#endif
+
/* Alignment of critical static data structures */
#ifdef ATTRIBUTE_ALIGNED_MAX
# define ATTR_ALIGN(align) __attribute__ ((__aligned__ ((ATTRIBUTE_ALIGNED_MAX < align) ? ATTRIBUTE_ALIGNED_MAX : align)))
#endif
-/* strdup/strndup (defined in src/extras/libc.c) */
+/* Stuff defined in src/extras/libc.c */
#ifndef HAVE_STRDUP
- char * strdup( const char *s );
+# define strdup vlc_strdup
+ VLC_EXPORT( char *, vlc_strdup, ( const char *s ) );
+#elif !defined(__PLUGIN__)
+# define vlc_strdup NULL
#endif
+
#ifndef HAVE_STRNDUP
- char * strndup( const char *s, size_t n );
+# if defined(STRNDUP_IN_GNOME_H) && \
+ (defined(MODULE_NAME_IS_gnome)||defined(MODULE_NAME_IS_gnome_main)||\
+ defined(MODULE_NAME_IS_gnome2)||defined(MODULE_NAME_IS_gnome2_main))
+ /* Do nothing: gnome.h defines strndup for us */
+# else
+# define strndup vlc_strndup
+ VLC_EXPORT( char *, vlc_strndup, ( const char *s, size_t n ) );
+# endif
+#elif !defined(__PLUGIN__)
+# define vlc_strndup NULL
#endif
-/* atof (defined in src/extras/libc.c) */
#ifndef HAVE_ATOF
- double atof( const char *nptr );
+# define atof vlc_atof
+ VLC_EXPORT( double, vlc_atof, ( const char *nptr ) );
+#elif !defined(__PLUGIN__)
+# define vlc_atof NULL
#endif
-/* getenv - always returns NULL */
#ifndef HAVE_GETENV
- char *getenv( const char *name );
+# define getenv vlc_getenv
+ VLC_EXPORT( char *, vlc_getenv, ( const char *name ) );
+#elif !defined(__PLUGIN__)
+# define vlc_getenv NULL
#endif
-/* strncasecmp/strcasecmp (defined in src/extras/libc.c) */
#ifndef HAVE_STRCASECMP
# ifdef HAVE_STRICMP
# define strcasecmp stricmp
-# else
- int strcasecmp( const char *s1, const char *s2 );
+# if !defined(__PLUGIN__)
+# define vlc_strcasecmp NULL
+# endif
+# elif !defined(__PLUGIN__)
+# define strcasecmp vlc_strcasecmp
+ VLC_EXPORT( int, vlc_strcasecmp, ( const char *s1, const char *s2 ) );
# endif
+#elif !defined(__PLUGIN__)
+# define vlc_strcasecmp NULL
#endif
#ifndef HAVE_STRNCASECMP
# ifdef HAVE_STRNICMP
# define strncasecmp strnicmp
-# else
- int strncasecmp( const char *s1, const char *s2, size_t n );
+# if !defined(__PLUGIN__)
+# define vlc_strncasecmp NULL
+# endif
+# elif !defined(__PLUGIN__)
+# define strncasecmp vlc_strncasecmp
+ VLC_EXPORT( int, vlc_strncasecmp, ( const char *s1, const char *s2, size_t n ) );
# endif
+#elif !defined(__PLUGIN__)
+# define vlc_strncasecmp NULL
#endif
/* Format type specifiers for 64 bits numbers */
#endif /* defined(WIN32)||defined(UNDER_CE) */
/* 64 bits integer constant suffix */
-#if !defined(WIN32) && !defined(UNDER_CE)
+#if defined( __MINGW32__ ) || (!defined(WIN32) && !defined(UNDER_CE))
# define I64C(x) x##LL
#else
# define I64C(x) x##i64
typedef _off_t off_t;
# define _OFF_T_
# else
+# ifdef off_t
+# undef off_t
+# endif
# define off_t long long
# endif
# endif
# ifndef O_NONBLOCK
# define O_NONBLOCK 0
+# endif
+
+# ifndef alloca
+# define alloca _alloca
# endif
/* These two are not defined in mingw32 (bug?) */
/* lseek (defined in src/extras/libc.c) */
#ifndef HAVE_LSEEK
- off_t lseek( int fildes, off_t offset, int whence );
+# define lseek vlc_lseek
+ VLC_EXPORT( off_t, vlc_lseek, ( int fildes, off_t offset, int whence ) );
+#elif !defined(__PLUGIN__)
+# define vlc_lseek NULL
#endif
/*****************************************************************************
/*****************************************************************************
* I18n stuff
*****************************************************************************/
-#if defined( ENABLE_NLS ) \
- && ( defined(HAVE_GETTEXT) || defined(HAVE_INCLUDED_GETTEXT) )
+VLC_EXPORT( char *, vlc_dgettext, ( const char *package, const char *msgid ) );
+
+#if defined( ENABLE_NLS ) && \
+ (defined(MODULE_NAME_IS_gnome)||defined(MODULE_NAME_IS_gnome_main)||\
+ defined(MODULE_NAME_IS_gnome2)||defined(MODULE_NAME_IS_gnome2_main))
+ /* Declare nothing: gnome.h will do it for us */
+#elif defined( ENABLE_NLS )
+#if defined( HAVE_INCLUDED_GETTEXT )
+# include "libintl.h"
+#else
# include <libintl.h>
+#endif
# undef _
-# define _(String) dgettext (PACKAGE, String)
-# ifdef gettext_noop
-# define N_(String) gettext_noop (String)
-# else
-# define N_(String) (String)
-# endif
-#elif !defined( NEED_GNOMESUPPORT_H )
-# define _(String) (String)
-# define N_(String) (String)
+#if defined( __BORLANDC__ )
+#define _(String) vlc_dgettext (PACKAGE_TARNAME, String)
+#else
+# define _(String) vlc_dgettext (PACKAGE, String)
+#endif
+# define N_(String) ((char*)(String))
+#else
+# define _(String) ((char*)(String))
+# define N_(String) ((char*)(String))
#endif
/*****************************************************************************