| 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 *; /**< 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 | |