X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_messages.h;h=537c624b5549e7a6277b7d3e4639a6f0f24772e3;hb=e23ba2420c956ede8abd22010f7d206b3303df76;hp=319f6e6545b76a33743f43a7b0abf37c715ca3d0;hpb=976dfc3eb46069ea3b920dec899e0c13ccf17c96;p=vlc diff --git a/include/vlc_messages.h b/include/vlc_messages.h index 319f6e6545..537c624b55 100644 --- a/include/vlc_messages.h +++ b/include/vlc_messages.h @@ -4,7 +4,7 @@ * interface, such as message output. ***************************************************************************** * Copyright (C) 1999, 2000, 2001, 2002 VideoLAN - * $Id: vlc_messages.h,v 1.5 2002/07/31 20:56:50 sam Exp $ + * $Id: vlc_messages.h,v 1.11 2004/01/25 18:17:08 zorglub Exp $ * * Authors: Vincent Seguin * Samuel Hocevar @@ -13,7 +13,7 @@ * 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 @@ -25,18 +25,25 @@ *****************************************************************************/ #include +/** + * \defgroup messages Messages + * This library provides basic functions for threads to interact with user + * interface, such as message output. + * + * @{ + */ -/***************************************************************************** - * msg_item_t - ***************************************************************************** + +/** * Store a single message. - *****************************************************************************/ + */ typedef struct { - int i_type; /* message type, see below */ + int i_type; /**< message type, see below */ int i_object_id; + int i_object_type; char * psz_module; - char * psz_msg; /* the message itself */ + char * psz_msg; /**< the message itself */ #if 0 mtime_t date; /* date of the message */ @@ -47,38 +54,43 @@ typedef struct } msg_item_t; /* Message types */ -#define VLC_MSG_INFO 0 /* standard messages */ -#define VLC_MSG_ERR 1 /* error messages */ -#define VLC_MSG_WARN 2 /* warning messages */ -#define VLC_MSG_DBG 3 /* debug messages */ - -/***************************************************************************** - * msg_bank_t - ***************************************************************************** +/** standard messages */ +#define VLC_MSG_INFO 0 +/** error messages */ +#define VLC_MSG_ERR 1 +/** warning messages */ +#define VLC_MSG_WARN 2 +/** debug messages */ +#define VLC_MSG_DBG 3 + +/** * Store all data requiered by messages interfaces. - *****************************************************************************/ + */ struct msg_bank_t { - /* Message queue lock */ + /** Message queue lock */ vlc_mutex_t lock; vlc_bool_t b_configured; vlc_bool_t b_overflow; /* Message queue */ - msg_item_t msg[VLC_MSG_QSIZE]; /* message queue */ + msg_item_t msg[VLC_MSG_QSIZE]; /**< message queue */ int i_start; int i_stop; /* Subscribers */ int i_sub; msg_subscription_t **pp_sub; + + /* Logfile for WinCE */ +#ifdef UNDER_CE + FILE *logfile; +#endif }; -/***************************************************************************** - * msg_subscription_t - ***************************************************************************** +/** * Used by interface plugins which subscribe to the message bank. - *****************************************************************************/ + */ struct msg_subscription_t { int i_start; @@ -91,11 +103,12 @@ struct msg_subscription_t /***************************************************************************** * Prototypes *****************************************************************************/ -VLC_EXPORT( void, __msg_Generic, ( vlc_object_t *, int, const char *, const char *, ... ) ); -VLC_EXPORT( void, __msg_Info, ( void *, const char *, ... ) ); -VLC_EXPORT( void, __msg_Err, ( void *, const char *, ... ) ); -VLC_EXPORT( void, __msg_Warn, ( void *, const char *, ... ) ); -VLC_EXPORT( void, __msg_Dbg, ( void *, const char *, ... ) ); +VLC_EXPORT( void, __msg_Generic, ( vlc_object_t *, int, const char *, const char *, ... ) ATTRIBUTE_FORMAT( 4, 5 ) ); +VLC_EXPORT( void, __msg_GenericVa, ( vlc_object_t *, int, const char *, const char *, va_list args ) ); +VLC_EXPORT( void, __msg_Info, ( vlc_object_t *, const char *, ... ) ATTRIBUTE_FORMAT( 2, 3 ) ); +VLC_EXPORT( void, __msg_Err, ( vlc_object_t *, const char *, ... ) ATTRIBUTE_FORMAT( 2, 3 ) ); +VLC_EXPORT( void, __msg_Warn, ( vlc_object_t *, const char *, ... ) ATTRIBUTE_FORMAT( 2, 3 ) ); +VLC_EXPORT( void, __msg_Dbg, ( vlc_object_t *, const char *, ... ) ATTRIBUTE_FORMAT( 2, 3 ) ); #ifdef HAVE_VARIADIC_MACROS @@ -115,7 +128,42 @@ VLC_EXPORT( void, __msg_Dbg, ( void *, const char *, ... ) ); __msg_Generic( VLC_OBJECT(p_this), VLC_MSG_DBG, MODULE_STRING, \ psz_format, ## args ) -#else /* HAVE_VARIADIC_MACROS */ +#elif defined(_MSC_VER) /* To avoid warnings and even errors with c++ files */ + +inline void msg_Info( void *p_this, const char *psz_format, ... ) +{ + va_list ap; + va_start( ap, psz_format ); + __msg_GenericVa( ( vlc_object_t *)p_this, VLC_MSG_INFO, MODULE_STRING, + psz_format, ap ); + va_end(ap); +} +inline void msg_Err( void *p_this, const char *psz_format, ... ) +{ + va_list ap; + va_start( ap, psz_format ); + __msg_GenericVa( ( vlc_object_t *)p_this, VLC_MSG_ERR, MODULE_STRING, + psz_format, ap ); + va_end(ap); +} +inline void msg_Warn( void *p_this, const char *psz_format, ... ) +{ + va_list ap; + va_start( ap, psz_format ); + __msg_GenericVa( ( vlc_object_t *)p_this, VLC_MSG_WARN, MODULE_STRING, + psz_format, ap ); + va_end(ap); +} +inline void msg_Dbg( void *p_this, const char *psz_format, ... ) +{ + va_list ap; + va_start( ap, psz_format ); + __msg_GenericVa( ( vlc_object_t *)p_this, VLC_MSG_DBG, MODULE_STRING, + psz_format, ap ); + va_end(ap); +} + +#else /* _MSC_VER */ # define msg_Info __msg_Info # define msg_Err __msg_Err @@ -136,3 +184,7 @@ void __msg_Destroy ( vlc_object_t * ); VLC_EXPORT( msg_subscription_t*, __msg_Subscribe, ( vlc_object_t * ) ); VLC_EXPORT( void, __msg_Unsubscribe, ( vlc_object_t *, msg_subscription_t * ) ); + +/** + * @} + */