## Debug Debug — Printing and formatting debug information |

## Synopsis

    void                (*OilDebugPrintFunc)                (int level,
                                                             const char *file,
                                                             const char *func,
                                                             int line,
                                                             const char *format,
                                                             va_list varargs);
    enum                OilDebugLevel;
    void                oil_debug_set_print_function        (OilDebugPrintFunc func);
    int                 oil_debug_get_level                 (void);
    void                oil_debug_set_level                 (int level);
    #define             OIL_ERROR                           (...)
    #define             OIL_WARNING                         (...)
    #define             OIL_INFO                            (...)
    #define             OIL_DEBUG                           (...)
    #define             OIL_LOG                             (...)
    #define             OIL_FUNCTION
    #define             OIL_DEBUG_PRINT                     (level, ...)

## Description

## Details

### OilDebugPrintFunc ()

    void                (*OilDebugPrintFunc)                (int level,
                                                             const char *file,
                                                             const char *func,
                                                             int line,
                                                             const char *format,
                                                             va_list varargs);

Typedef describing functions that can be registered using `oil_debug_set_print_function()` so that it is called to print debugging messages.

`level` : | the debug level
`file` : | name of the file where the debug message occurs
`func` : | name of the function where the debug message occurs
`line` : | line in the file where the debug message occurs
`format` : | a printf format
`varargs` : | varargs for the printf format

### enum OilDebugLevel

    typedef enum {
      OIL_DEBUG_NONE = 0,
      OIL_DEBUG_ERROR,
      OIL_DEBUG_WARNING,
      OIL_DEBUG_INFO,
      OIL_DEBUG_DEBUG,
      OIL_DEBUG_LOG
    } OilDebugLevel;

Enumeration describing debug levels in Liboil.

### oil_debug_set_print_function ()

    void                oil_debug_set_print_function        (OilDebugPrintFunc func);

Sets the function to call when outputting debugging information. A value of NULL for `func` will restore the default handler, which prints debugging information to stderr.

`func` : |

### oil_debug_get_level ()

    int                 oil_debug_get_level                 (void);

Gets the current debug level.

Returns : | the current debug level

### oil_debug_set_level ()

    void                oil_debug_set_level                 (int level);

Sets the current debug level.

`level` : | the new debug level

### OIL_ERROR()

    #define OIL_ERROR(...) OIL_DEBUG_PRINT(OIL_DEBUG_ERROR, __VA_ARGS__)

Macro to call `OIL_DEBUG_PRINT()` with a level of OIL_DEBUG_ERROR.

`...` : |

### OIL_WARNING()

    #define OIL_WARNING(...) OIL_DEBUG_PRINT(OIL_DEBUG_WARNING, __VA_ARGS__)

Macro to call `OIL_DEBUG_PRINT()` with a level of OIL_DEBUG_WARNING.

`...` : |

### OIL_INFO()

    #define OIL_INFO(...) OIL_DEBUG_PRINT(OIL_DEBUG_INFO, __VA_ARGS__)

Macro to call `OIL_DEBUG_PRINT()` with a level of OIL_DEBUG_INFO.

`...` : |

### OIL_DEBUG()

    #define OIL_DEBUG(...) OIL_DEBUG_PRINT(OIL_DEBUG_DEBUG, __VA_ARGS__)

Macro to call `OIL_DEBUG_PRINT()` with a level of OIL_DEBUG_DEBUG.

`...` : |

### OIL_LOG()

    #define OIL_LOG(...) OIL_DEBUG_PRINT(OIL_DEBUG_LOG, __VA_ARGS__)

Macro to call `OIL_DEBUG_PRINT()` with a level of OIL_DEBUG_LOG.

`...` : |

### OIL_FUNCTION

    #define             OIL_FUNCTION

Internal macro that points to __PRETTY_FUNCTION__ or __func__ if the former is not available.

### OIL_DEBUG_PRINT()

    #define             OIL_DEBUG_PRINT(level, ...)

Macro to call `oil_debug_print()` with the correct values for the name of the source file, line of source file, and function.

`level` : |
`...` : |