DNBLog.h revision 0e8147bd867e4cdaae9400f56d02c7aacd40a9b3
1//===-- DNBLog.h ------------------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// Created by Greg Clayton on 6/18/07. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef __DNBLog_h__ 15#define __DNBLog_h__ 16 17#include <stdio.h> 18#include <stdint.h> 19#include "DNBDefs.h" 20 21#ifdef __cplusplus 22extern "C" { 23#endif 24 25// Flags that get filled in automatically before calling the log callback function 26#define DNBLOG_FLAG_FATAL (1u << 0) 27#define DNBLOG_FLAG_ERROR (1u << 1) 28#define DNBLOG_FLAG_WARNING (1u << 2) 29#define DNBLOG_FLAG_DEBUG (1u << 3) 30#define DNBLOG_FLAG_VERBOSE (1u << 4) 31#define DNBLOG_FLAG_THREADED (1u << 5) 32 33#define DNBLOG_ENABLED 34 35#if defined (DNBLOG_ENABLED) 36 37#define DNB_EXPORT __attribute__((visibility("default"))) 38 39void _DNBLog(uint32_t flags, const char *format, ...) __attribute__ ((format (printf, 2, 3))) DNB_EXPORT; 40void _DNBLogDebug (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 41void _DNBLogDebugVerbose (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 42void _DNBLogThreaded (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 43void _DNBLogThreadedIf (uint32_t mask, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))) DNB_EXPORT; 44void _DNBLogError (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 45void _DNBLogFatalError (int err, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))) DNB_EXPORT; 46void _DNBLogVerbose (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 47void _DNBLogWarning (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 48void _DNBLogWarningVerbose (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT; 49bool DNBLogCheckLogBit (uint32_t bit) DNB_EXPORT; 50uint32_t DNBLogSetLogMask (uint32_t mask) DNB_EXPORT; 51uint32_t DNBLogGetLogMask () DNB_EXPORT; 52void DNBLogSetLogCallback (DNBCallbackLog callback, void *baton) DNB_EXPORT; 53bool DNBLogEnabled () DNB_EXPORT; 54bool DNBLogEnabledForAny (uint32_t mask) DNB_EXPORT; 55int DNBLogGetDebug () DNB_EXPORT; 56void DNBLogSetDebug (int g) DNB_EXPORT; 57int DNBLogGetVerbose () DNB_EXPORT; 58void DNBLogSetVerbose (int g) DNB_EXPORT; 59 60#define DNBLog(fmt, ...) do { if (DNBLogEnabled()) { _DNBLog(0, fmt, ## __VA_ARGS__); } } while (0) 61#define DNBLogDebug(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogDebug(fmt, ## __VA_ARGS__); } } while (0) 62#define DNBLogDebugVerbose(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogDebugVerbose(fmt, ## __VA_ARGS__); } } while (0) 63#define DNBLogThreaded(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogThreaded(fmt, ## __VA_ARGS__); } } while (0) 64#define DNBLogThreadedIf(mask, fmt, ...) do { if (DNBLogEnabledForAny(mask)) { _DNBLogThreaded(fmt, ## __VA_ARGS__); } } while (0) 65#define DNBLogError(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogError(fmt, ## __VA_ARGS__); } } while (0) 66#define DNBLogFatalError(err, fmt, ...) do { if (DNBLogEnabled()) { _DNBLogFatalError(err, fmt, ## __VA_ARGS__); } } while (0) 67#define DNBLogVerbose(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogVerbose(fmt, ## __VA_ARGS__); } } while (0) 68#define DNBLogWarning(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogWarning(fmt, ## __VA_ARGS__); } } while (0) 69#define DNBLogWarningVerbose(fmt, ...) do { if (DNBLogEnabled()) { _DNBLogWarningVerbose(fmt, ## __VA_ARGS__); } } while (0) 70 71#else // #if defined(DNBLOG_ENABLED) 72 73#define DNBLogDebug(...) ((void)0) 74#define DNBLogDebugVerbose(...) ((void)0) 75#define DNBLogThreaded(...) ((void)0) 76#define DNBLogThreadedIf(...) ((void)0) 77#define DNBLogError(...) ((void)0) 78#define DNBLogFatalError(...) ((void)0) 79#define DNBLogVerbose(...) ((void)0) 80#define DNBLogWarning(...) ((void)0) 81#define DNBLogWarningVerbose(...) ((void)0) 82#define DNBLogGetLogFile() ((FILE *)NULL) 83#define DNBLogSetLogFile(f) ((void)0) 84#define DNBLogCheckLogBit(bit) ((bool)false) 85#define DNBLogSetLogMask(mask) ((uint32_t)0u) 86#define DNBLogGetLogMask() ((uint32_t)0u) 87#define DNBLogToASL() ((void)0) 88#define DNBLogToFile() ((void)0) 89#define DNBLogCloseLogFile() ((void)0) 90 91#endif // #else defined(DNBLOG_ENABLED) 92 93#ifdef __cplusplus 94} 95#endif 96 97#endif // #ifndef __DNBLog_h__ 98