1 /***************************************************************************** 2 * vlc_messages.h: messages interface 3 * This library provides basic functions for threads to interact with user 4 * interface, such as message output. 5 ***************************************************************************** 6 * Copyright (C) 1999, 2000, 2001, 2002 VLC authors and VideoLAN 7 * $Id: 63f9476cd5e6d6d4e274b4d4a7b947ec59d2843e $ 8 * 9 * Authors: Vincent Seguin <seguin@via.ecp.fr> 10 * Samuel Hocevar <sam@zoy.org> 11 * 12 * This program is free software; you can redistribute it and/or modify it 13 * under the terms of the GNU Lesser General Public License as published by 14 * the Free Software Foundation; either version 2.1 of the License, or 15 * (at your option) any later version. 16 * 17 * This program is distributed in the hope that it will be useful, 18 * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 * GNU Lesser General Public License for more details. 21 * 22 * You should have received a copy of the GNU Lesser General Public License 23 * along with this program; if not, write to the Free Software Foundation, 24 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. 25 *****************************************************************************/ 26 27 #ifndef VLC_MESSAGES_H_ 28 #define VLC_MESSAGES_H_ 29 30 #include <stdarg.h> 31 32 /** 33 * \defgroup messages Logging 34 * \brief Message logs 35 * 36 * Functions for modules to emit log messages. 37 * 38 * @{ 39 * \file 40 * Logging functions 41 */ 42 43 /** Message types */ 44 enum vlc_log_type 45 { 46 VLC_MSG_INFO=0, /**< Important information */ 47 VLC_MSG_ERR, /**< Error */ 48 VLC_MSG_WARN, /**< Warning */ 49 VLC_MSG_DBG, /**< Debug */ 50 }; 51 52 /** 53 * Log message 54 */ 55 typedef struct vlc_log_t 56 { 57 uintptr_t i_object_id; /**< Emitter (temporarily) unique object ID or 0 */ 58 const char *psz_object_type; /**< Emitter object type name */ 59 const char *psz_module; /**< Emitter module (source code) */ 60 const char *psz_header; /**< Additional header (used by VLM media) */ 61 const char *file; /**< Source code file name or NULL */ 62 int line; /**< Source code file line number or -1 */ 63 const char *func; /**< Source code calling function name or NULL */ 64 unsigned long tid; /**< Emitter thread ID */ 65 } vlc_log_t; 66 67 VLC_API void vlc_Log(vlc_object_t *obj, int prio, const char *module, 68 const char *file, unsigned line, const char *func, 69 const char *format, ...) VLC_FORMAT(7, 8); 70 VLC_API void vlc_vaLog(vlc_object_t *obj, int prio, const char *module, 71 const char *file, unsigned line, const char *func, 72 const char *format, va_list ap); 73 #define msg_GenericVa(o, p, fmt, ap) \ 74 vlc_vaLog(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \ 75 __func__, fmt, ap) 76 77 #define msg_Generic(o, p, ...) \ 78 vlc_Log(VLC_OBJECT(o), p, vlc_module_name, __FILE__, __LINE__, \ 79 __func__, __VA_ARGS__) 80 #define msg_Info(p_this, ...) \ 81 msg_Generic(p_this, VLC_MSG_INFO, __VA_ARGS__) 82 #define msg_Err(p_this, ...) \ 83 msg_Generic(p_this, VLC_MSG_ERR, __VA_ARGS__) 84 #define msg_Warn(p_this, ...) \ 85 msg_Generic(p_this, VLC_MSG_WARN, __VA_ARGS__) 86 #define msg_Dbg(p_this, ...) \ 87 msg_Generic(p_this, VLC_MSG_DBG, __VA_ARGS__) 88 89 extern const char vlc_module_name[]; 90 91 VLC_API const char *vlc_strerror(int); 92 VLC_API const char *vlc_strerror_c(int); 93 94 /** 95 * Message logging callback signature. 96 * \param data data pointer as provided to vlc_msg_SetCallback(). 97 * \param type message type (VLC_MSG_* values from enum vlc_log_type) 98 * \param item meta information 99 * \param fmt format string 100 * \param args format string arguments 101 */ 102 typedef void (*vlc_log_cb) (void *data, int type, const vlc_log_t *item, 103 const char *fmt, va_list args); 104 105 /** 106 * @} 107 */ 108 #endif 109