aheinecke@252: #ifndef COMMON_LOGGING_H aheinecke@252: #define COMMON_LOGGING_H aheinecke@252: aheinecke@252: #ifdef __cplusplus aheinecke@252: extern "C" { aheinecke@252: #endif aheinecke@252: aheinecke@252: /* aheinecke@252: * @file aheinecke@252: * @brief Logging and debugging functions aheinecke@252: */ aheinecke@252: aheinecke@252: #ifdef WIN32 aheinecke@252: aheinecke@252: #include aheinecke@252: aheinecke@252: /** @brief Gets the localized error message for the last error aheinecke@252: * returned by GetLastError aheinecke@252: * aheinecke@252: * @returns utf8 error message that needs to be freed by the caller. aheinecke@252: **/ aheinecke@252: aheinecke@252: char *getLastErrorMsg(); aheinecke@252: aheinecke@252: #endif aheinecke@252: aheinecke@252: /** aheinecke@252: * @def DEBUGOUTPUT aheinecke@252: * @brief If defined code for extra debugging output will be generated. aheinecke@252: * aheinecke@252: * Will be defined if current build is not an RELEASE_BUILD. aheinecke@252: */ aheinecke@252: #ifndef RELEASE_BUILD aheinecke@252: #define DEBUGOUTPUT aheinecke@252: #endif aheinecke@252: aheinecke@252: /** aheinecke@252: * @def DEBUGPREFIX aheinecke@252: * @brief A string prepended to debug output. aheinecke@252: * aheinecke@252: * Should be defined to indicate which module created the output. aheinecke@252: */ aheinecke@252: #ifndef DEBUGPREFIX aheinecke@252: #define DEBUGPREFIX "" aheinecke@252: #endif aheinecke@252: aheinecke@252: /** aheinecke@252: * @def DEBUGPRINTF(fmt, ...) aheinecke@252: * @brief Debug printf aheinecke@252: * aheinecke@252: * Prints to stderr if DEBUGOUTPUT is defined. aheinecke@252: */ aheinecke@252: #ifdef DEBUGOUTPUT aheinecke@252: #define DEBUGPRINTF(fmt, ...) fprintf(stderr, DEBUGPREFIX "DEBUG: " fmt, ##__VA_ARGS__); aheinecke@252: #else aheinecke@252: #define DEBUGPRINTF(fmt, ...) aheinecke@252: #endif aheinecke@252: aheinecke@252: #ifdef __cplusplus aheinecke@252: } aheinecke@252: #endif aheinecke@252: aheinecke@252: #endif /* COMMON_LOGGING_H */