1 /* 2 Copyright (C) 2016 Paul Brossier <piem@aubio.org> 3 4 This file is part of aubio. 5 6 aubio is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 aubio is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with aubio. If not, see <http://www.gnu.org/licenses/>. 18 19 */ 20 21 #ifndef AUBIO_LOG_H 22 #define AUBIO_LOG_H 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif 27 28 /** \file 29 30 Logging features 31 32 This file specifies ::aubio_log_set_function and 33 ::aubio_log_set_level_function, which let you define one or several custom 34 logging functions to redirect warnings and errors from aubio to your 35 application. The custom function should have the prototype defined in 36 ::aubio_log_function_t. 37 38 After a call to ::aubio_log_set_level_function, ::aubio_log_reset can be used 39 to reset each logging functions to the default ones. 40 41 \example utils/test-log.c 42 43 */ 44 45 /** list of logging levels */ 46 enum aubio_log_level { 47 AUBIO_LOG_ERR, /**< critical errors */ 48 AUBIO_LOG_INF, /**< infos */ 49 AUBIO_LOG_MSG, /**< general messages */ 50 AUBIO_LOG_DBG, /**< debug messages */ 51 AUBIO_LOG_WRN, /**< warnings */ 52 AUBIO_LOG_LAST_LEVEL, /**< number of valid levels */ 53 }; 54 55 /** Logging function prototype, to be passed to ::aubio_log_set_function 56 57 \param level log level 58 \param message text to log 59 \param data optional closure used by the callback 60 61 See @ref utils/test-log.c for an example of logging function. 62 63 */ 64 typedef void (*aubio_log_function_t)(sint_t level, const char_t *message, void 65 *data); 66 67 /** Set logging function for all levels 68 69 \param fun the function to be used to log, of type ::aubio_log_function_t 70 \param data optional closure to be passed to the function (can be NULL if 71 nothing to pass) 72 73 */ 74 void aubio_log_set_function(aubio_log_function_t fun, void* data); 75 76 /** Set logging function for a given level 77 78 \param level the level for which to set the logging function 79 \param fun the function to be used to log, of type ::aubio_log_function_t 80 \param data optional closure to be passed to the function (can be NULL if 81 nothing to pass) 82 83 */ 84 aubio_log_function_t aubio_log_set_level_function(sint_t level, 85 aubio_log_function_t fun, void* data); 86 87 /** Reset all logging functions to the default one 88 89 After calling this function, the default logging function will be used to 90 print error, warning, normal, and debug messages to `stdout` or `stderr`. 91 92 */ 93 void aubio_log_reset(void); 94 95 #ifdef __cplusplus 96 } 97 #endif 98 99 #endif /* AUBIO_LOG_H */ 100