#include <stdlib.h>
#include <stdarg.h>
-#ifdef HAVE_STRING_H
-# include <string.h> /* strerror() */
-#endif
+#include <string.h> /* strerror() */
+#include <stdio.h>
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
+static inline void __vlc_fourcc_to_char( vlc_fourcc_t fcc, char *psz_fourcc )
+{
+#ifdef WORDS_BIGENDIAN
+ psz_fourcc[0] = (uint32_t) (fcc >> 24);
+ psz_fourcc[1] = (uint32_t) (fcc >> 16);
+ psz_fourcc[2] = (uint32_t) (fcc >> 8);
+ psz_fourcc[3] = (uint32_t) (fcc);
+#else
+ psz_fourcc[3] = (uint32_t) (fcc >> 24);
+ psz_fourcc[2] = (uint32_t) (fcc >> 16);
+ psz_fourcc[1] = (uint32_t) (fcc >> 8);
+ psz_fourcc[0] = (uint32_t) (fcc);
+#endif
+}
+
+#define vlc_fourcc_to_char( a, b ) \
+ __vlc_fourcc_to_char( (vlc_fourcc_t)(a), (char *)(b) )
+
/*****************************************************************************
* Classes declaration
*****************************************************************************/
typedef struct seekpoint_t seekpoint_t;
typedef struct info_t info_t;
typedef struct info_category_t info_category_t;
+typedef struct input_attachment_t input_attachment_t;
/* Format */
typedef struct audio_format_t audio_format_t;
typedef struct httpd_client_t httpd_client_t;
typedef struct httpd_callback_sys_t httpd_callback_sys_t;
typedef struct httpd_message_t httpd_message_t;
-typedef int (*httpd_callback_t)( httpd_callback_sys_t *, httpd_client_t *, httpd_message_t *answer, httpd_message_t *query );
+typedef int (*httpd_callback_t)( httpd_callback_sys_t *, httpd_client_t *, httpd_message_t *answer, const httpd_message_t *query );
typedef struct httpd_file_t httpd_file_t;
typedef struct httpd_file_sys_t httpd_file_sys_t;
typedef int (*httpd_file_callback_t)( httpd_file_sys_t *, httpd_file_t *, uint8_t *psz_request, uint8_t **pp_data, int *pi_data );
/* VLM */
typedef struct vlm_t vlm_t;
typedef struct vlm_message_t vlm_message_t;
-typedef struct vlm_media_t vlm_media_t;
-typedef struct vlm_schedule_t vlm_schedule_t;
/* divers */
typedef struct vlc_meta_t vlc_meta_t;
#if defined (WIN32) && defined (DLL_EXPORT)
# ifdef __cplusplus
+# define VLC_PUBLIC_API __declspec(dllexport)
+# define VLC_PRIVATE_API __declspec(dllexport)
# define VLC_EXPORT( type, name, args ) extern "C" __declspec(dllexport) type name args
# define VLC_INTERNAL( type, name, args ) extern "C" type name args
# else
+# define VLC_PUBLIC_API extern __declspec(dllexport)
+# define VLC_PRIVATE_API extern __declspec(dllexport)
# define VLC_EXPORT( type, name, args ) __declspec(dllexport) type name args
# define VLC_INTERNAL( type, name, args ) type name args
# endif
#else
-# if !defined (__PLUGIN__) || defined (HAVE_SHARED_LIBVLC)
-# ifdef __cplusplus
-# if HAVE_ATTRIBUTE_VISIBILITY
-# define VLC_EXPORT( type, name, args ) extern "C" __attribute__((visibility("default"))) type name args
-# define VLC_INTERNAL( type, name, args ) extern "C" __attribute__((visibility("hidden"))) type name args
-# else
-# define VLC_EXPORT( type, name, args ) extern "C" type name args
-# define VLC_INTERNAL( type, name, args ) extern "C" type name args
-# endif
+# ifdef __cplusplus
+# if HAVE_ATTRIBUTE_VISIBILITY
+# define VLC_PUBLIC_API __attribute__((visibility("default")))
+# define VLC_PRIVATE_API __attribute__((visibility("default")))
+# define VLC_EXPORT( type, name, args ) extern "C" __attribute__((visibility("default"))) type name args
+# define VLC_INTERNAL( type, name, args ) extern "C" __attribute__((visibility("hidden"))) type name args
# else
-# if HAVE_ATTRIBUTE_VISIBILITY
-# define VLC_EXPORT( type, name, args ) __attribute__((visibility("default"))) type name args
-# define VLC_INTERNAL( type, name, args ) __attribute__((visibility("hidden"))) type name args
-# else
-# define VLC_EXPORT( type, name, args ) type name args
-# define VLC_INTERNAL( type, name, args ) type name args
-# endif
+# define VLC_PUBLIC_API
+# define VLC_EXPORT( type, name, args ) extern "C" type name args
+# define VLC_INTERNAL( type, name, args ) extern "C" type name args
# endif
# else
-# define VLC_EXPORT( type, name, args ) struct _u_n_u_s_e_d_
-# define VLC_INTERNAL( type, name, args ) struct _u_n_u_s_e_d_
- extern module_symbols_t* p_symbols;
+# if HAVE_ATTRIBUTE_VISIBILITY
+# define VLC_PUBLIC_API extern __attribute__((visibility("default")))
+# define VLC_PRIVATE_API extern __attribute__((visibility("default")))
+# define VLC_EXPORT( type, name, args ) __attribute__((visibility("default"))) type name args
+# define VLC_INTERNAL( type, name, args ) __attribute__((visibility("hidden"))) type name args
+# else
+# define VLC_PUBLIC_API extern
+# define VLC_PRIVATE_API extern
+# define VLC_EXPORT( type, name, args ) type name args
+# define VLC_INTERNAL( type, name, args ) type name args
+# endif
# endif
#endif
#include "vlc_threads.h"
+typedef struct vlc_object_internals_t vlc_object_internals_t;
+
/*****************************************************************************
* Common structure members
*****************************************************************************/
* these members are common for all vlc objects \
*/ \
/**@{*/ \
+ vlc_object_internals_t *p_internals; \
int i_object_id; \
int i_object_type; \
const char *psz_object_type; \
char *psz_header; \
int i_flags; \
\
- /* Thread properties, if any */ \
- vlc_bool_t b_thread; \
- vlc_thread_t thread_id; \
- \
/* Object access lock */ \
vlc_mutex_t object_lock; \
vlc_cond_t object_wait; \
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 */ \
vlc_bool_t b_force; /**< set by the outside (eg. module_Need()) */ \
\
- /* Object variables */ \
- vlc_mutex_t var_lock; \
- int i_vars; \
- variable_t * p_vars; \
- \
/* Stuff related to the libvlc structure */ \
- libvlc_global_data_t *p_libvlc_global; /**< root of all evil */ \
libvlc_int_t *p_libvlc; /**< (root of all evil) - 1 */ \
\
volatile int i_refcount; /**< usage count */ \
#define GetQWBE( p ) U64_AT( p )
/* Helper writer functions */
-#define SetWLE( p, v ) _SetWLE( (uint8_t*)p, v)
+#define SetWLE( p, v ) _SetWLE( (uint8_t*)(p), v)
static inline void _SetWLE( uint8_t *p, uint16_t i_dw )
{
p[1] = ( i_dw >> 8 )&0xff;
p[0] = ( i_dw )&0xff;
}
-#define SetDWLE( p, v ) _SetDWLE( (uint8_t*)p, v)
+#define SetDWLE( p, v ) _SetDWLE( (uint8_t*)(p), v)
static inline void _SetDWLE( uint8_t *p, uint32_t i_dw )
{
p[3] = ( i_dw >> 24 )&0xff;
p[1] = ( i_dw >> 8 )&0xff;
p[0] = ( i_dw )&0xff;
}
-#define SetQWLE( p, v ) _SetQWLE( (uint8_t*)p, v)
+#define SetQWLE( p, v ) _SetQWLE( (uint8_t*)(p), v)
static inline void _SetQWLE( uint8_t *p, uint64_t i_qw )
{
SetDWLE( p, i_qw&0xffffffff );
SetDWLE( p+4, ( i_qw >> 32)&0xffffffff );
}
-#define SetWBE( p, v ) _SetWBE( (uint8_t*)p, v)
+#define SetWBE( p, v ) _SetWBE( (uint8_t*)(p), v)
static inline void _SetWBE( uint8_t *p, uint16_t i_dw )
{
p[0] = ( i_dw >> 8 )&0xff;
p[1] = ( i_dw )&0xff;
}
-#define SetDWBE( p, v ) _SetDWBE( (uint8_t*)p, v)
+#define SetDWBE( p, v ) _SetDWBE( (uint8_t*)(p), v)
static inline void _SetDWBE( uint8_t *p, uint32_t i_dw )
{
p[0] = ( i_dw >> 24 )&0xff;
p[2] = ( i_dw >> 8 )&0xff;
p[3] = ( i_dw )&0xff;
}
-#define SetQWBE( p, v ) _SetQWBE( (uint8_t*)p, v)
+#define SetQWBE( p, v ) _SetQWBE( (uint8_t*)(p), v)
static inline void _SetQWBE( uint8_t *p, uint64_t i_qw )
{
SetDWBE( p+4, i_qw&0xffffffff );
# define vlc_strndup NULL
#endif
+#ifndef HAVE_STRNLEN
+# define strnlen vlc_strnlen
+ VLC_EXPORT( size_t, vlc_strnlen, ( const char *, size_t ) );
+#elif !defined(__PLUGIN__)
+# define vlc_strnlen NULL
+#endif
+
#ifndef HAVE_STRLCPY
# define strlcpy vlc_strlcpy
VLC_EXPORT( size_t, vlc_strlcpy, ( char *, const char *, size_t ) );
VLC_INTERNAL( void, vlc_seekdir, ( void *, long ) );
VLC_INTERNAL( long, vlc_telldir, ( void * ) );
#else
- struct dirent; /* forward declaration for vlc_symbols.h */
# if !defined(__PLUGIN__)
# define vlc_opendir NULL
# define vlc_readdir NULL
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 **pp_argv, char **pp_env, char *psz_cwd, char *p_in, int i_in, char **pp_data, int *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 ) );
#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)
/*****************************************************************************
#define CPU_CAPABILITY_SSE2 (1<<7)
#define CPU_CAPABILITY_ALTIVEC (1<<16)
#define CPU_CAPABILITY_FPU (1<<31)
+VLC_EXPORT( unsigned, vlc_CPU, ( void ) );
/*****************************************************************************
* I18n stuff
*****************************************************************************/
-#if defined (WIN32) || !defined (HAVE_SHARED_LIBVLC)
+#ifdef WIN32
VLC_EXPORT( char *, vlc_dgettext, ( const char *package, const char *msgid ) );
#endif
# include <libintl.h>
# endif
# undef _
-# if defined (WIN32) || !defined (HAVE_SHARED_LIBVLC)
+# ifdef WIN32
# define _(String) vlc_dgettext (PACKAGE_NAME, String)
# else
# define _(String) dgettext(PACKAGE_NAME, String)
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 ) );
/*****************************************************************************
* Additional vlc stuff
*****************************************************************************/
-#ifndef HAVE_SHARED_LIBVLC
-# ifdef HAVE_DIRENT_H
-# include <dirent.h> /* for DIR typedef in vlc_symbols.h */
-# endif
-VLC_EXPORT( const char *, VLC_Changeset, ( void ) );
-# include "vlc_symbols.h"
-#else
-# define VLC_Changeset( ) ("exported")
-#endif
#include "vlc_os_specific.h"
#include "vlc_messages.h"
#include "vlc_variables.h"