Blame include/cdio/logging.h

Packit dd8086
/*
Packit dd8086
    Copyright (C) 2003, 2004, 2008, 2012 Rocky Bernstein <rocky@gnu.org>
Packit dd8086
    Copyright (C) 2000 Herbert Valerio Riedel <hvr@gnu.org>
Packit dd8086
Packit dd8086
    This program is free software: you can redistribute it and/or modify
Packit dd8086
    it under the terms of the GNU General Public License as published by
Packit dd8086
    the Free Software Foundation, either version 3 of the License, or
Packit dd8086
    (at your option) any later version.
Packit dd8086
Packit dd8086
    This program is distributed in the hope that it will be useful,
Packit dd8086
    but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit dd8086
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit dd8086
    GNU General Public License for more details.
Packit dd8086
Packit dd8086
    You should have received a copy of the GNU General Public License
Packit dd8086
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit dd8086
*/
Packit dd8086
Packit dd8086
/** \file logging.h
Packit dd8086
 *  \brief Header to control logging and level of detail of output.
Packit dd8086
 *
Packit dd8086
 */
Packit dd8086

Packit dd8086
#ifndef CDIO_LOGGING_H_
Packit dd8086
#define CDIO_LOGGING_H_
Packit dd8086
Packit dd8086
#include <cdio/types.h>
Packit dd8086
Packit dd8086
#ifdef __cplusplus
Packit dd8086
extern "C" {
Packit dd8086
#endif
Packit dd8086
Packit dd8086
/**
Packit dd8086
 * The different log levels supported.
Packit dd8086
 */
Packit dd8086
typedef enum {
Packit dd8086
  CDIO_LOG_DEBUG = 1, /**< Debug-level messages - helps debug what's up. */
Packit dd8086
  CDIO_LOG_INFO,      /**< Informational - indicates perhaps something of
Packit dd8086
                           interest. */
Packit dd8086
  CDIO_LOG_WARN,      /**< Warning conditions - something that looks funny. */
Packit dd8086
  CDIO_LOG_ERROR,     /**< Error conditions - may terminate program.  */
Packit dd8086
  CDIO_LOG_ASSERT     /**< Critical conditions - may abort program. */
Packit dd8086
} cdio_log_level_t;
Packit dd8086
Packit dd8086
/**
Packit dd8086
 * The place to save the preference concerning how much verbosity
Packit dd8086
 * is desired. This is used by the internal default log handler, but
Packit dd8086
 * it could be use by applications which provide their own log handler.
Packit dd8086
 */
Packit dd8086
extern cdio_log_level_t cdio_loglevel_default;
Packit dd8086
Packit dd8086
/**
Packit dd8086
 * This type defines the signature of a log handler.  For every
Packit dd8086
 * message being logged, the handler will receive the log level and
Packit dd8086
 * the message string.
Packit dd8086
 *
Packit dd8086
 * @see cdio_log_set_handler
Packit dd8086
 * @see cdio_log_level_t
Packit dd8086
 *
Packit dd8086
 * @param level   The log level.
Packit dd8086
 * @param message The log message.
Packit dd8086
 */
Packit dd8086
typedef void (*cdio_log_handler_t) (cdio_log_level_t level,
Packit dd8086
                                    const char message[]);
Packit dd8086
Packit dd8086
/**
Packit dd8086
 * The initial or default log handler in effect.
Packit dd8086
 *
Packit dd8086
 * @param level   The log level.
Packit dd8086
 * @param message The log message.
Packit dd8086
 */
Packit dd8086
extern void cdio_default_log_handler(cdio_log_level_t level, const char message[]);
Packit dd8086
Packit dd8086
/**
Packit dd8086
 * Set a custom log handler for libcdio.  The return value is the log
Packit dd8086
 * handler being replaced.  If the provided parameter is NULL, then
Packit dd8086
 * the handler will be reset to the default handler.
Packit dd8086
 *
Packit dd8086
 * @see cdio_log_handler_t
Packit dd8086
 *
Packit dd8086
 * @param new_handler The new log handler.
Packit dd8086
 * @return The previous log handler.
Packit dd8086
 */
Packit dd8086
cdio_log_handler_t cdio_log_set_handler (cdio_log_handler_t new_handler);
Packit dd8086
Packit dd8086
/**
Packit dd8086
 * Handle an message with the given log level.
Packit dd8086
 *
Packit dd8086
 * @see cdio_debug
Packit dd8086
 * @see cdio_info
Packit dd8086
 * @see cdio_warn
Packit dd8086
 * @see cdio_error
Packit dd8086
Packit dd8086
 * @param level   The log level.
Packit dd8086
 * @param format  printf-style format string
Packit dd8086
 * @param ...     remaining arguments needed by format string
Packit dd8086
 */
Packit dd8086
void cdio_log (cdio_log_level_t level,
Packit dd8086
               const char format[], ...) GNUC_PRINTF(2, 3);
Packit dd8086
Packit dd8086
/**
Packit dd8086
 * Handle a debugging message.
Packit dd8086
 *
Packit dd8086
 * @see cdio_log for a more generic routine
Packit dd8086
 */
Packit dd8086
void cdio_debug (const char format[], ...) GNUC_PRINTF(1,2);
Packit dd8086
Packit dd8086
/**
Packit dd8086
 * Handle an informative message.
Packit dd8086
 *
Packit dd8086
 * @see cdio_log for a more generic routine
Packit dd8086
 */
Packit dd8086
void cdio_info (const char format[], ...) GNUC_PRINTF(1,2);
Packit dd8086
Packit dd8086
/**
Packit dd8086
 * Handle a warning message.
Packit dd8086
 *
Packit dd8086
 * @see cdio_log for a more generic routine
Packit dd8086
 */
Packit dd8086
void cdio_warn (const char format[], ...) GNUC_PRINTF(1,2);
Packit dd8086
Packit dd8086
/**
Packit dd8086
 * Handle an error message. Execution is terminated.
Packit dd8086
 *
Packit dd8086
 * @see cdio_log for a more generic routine.
Packit dd8086
 */
Packit dd8086
void cdio_error (const char format[], ...) GNUC_PRINTF(1,2);
Packit dd8086
Packit dd8086
#ifdef __cplusplus
Packit dd8086
}
Packit dd8086
#endif
Packit dd8086
Packit dd8086
#endif /* CDIO_LOGGING_H_ */
Packit dd8086
Packit dd8086

Packit dd8086
/*
Packit dd8086
 * Local variables:
Packit dd8086
 *  c-file-style: "gnu"
Packit dd8086
 *  tab-width: 8
Packit dd8086
 *  indent-tabs-mode: nil
Packit dd8086
 * End:
Packit dd8086
 */