124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- DNBLog.h ------------------------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//  Created by Greg Clayton on 6/18/07.
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef __DNBLog_h__
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define __DNBLog_h__
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <stdio.h>
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <stdint.h>
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "DNBDefs.h"
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifdef __cplusplus
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerextern "C" {
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Flags that get filled in automatically before calling the log callback function
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_FLAG_FATAL       (1u << 0)
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_FLAG_ERROR       (1u << 1)
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_FLAG_WARNING     (1u << 2)
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_FLAG_DEBUG       (1u << 3)
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_FLAG_VERBOSE     (1u << 4)
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_FLAG_THREADED    (1u << 5)
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNBLOG_ENABLED
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#if defined (DNBLOG_ENABLED)
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define DNB_EXPORT __attribute__((visibility("default")))
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
390e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid        _DNBLog(uint32_t flags, const char *format, ...) __attribute__ ((format (printf, 2, 3))) DNB_EXPORT;
400e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid        _DNBLogDebug (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT;
410e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid        _DNBLogDebugVerbose (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT;
420e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid        _DNBLogThreaded (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT;
430e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid        _DNBLogThreadedIf (uint32_t mask, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))) DNB_EXPORT;
440e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid        _DNBLogError (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT;
450e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid        _DNBLogFatalError (int err, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))) DNB_EXPORT;
460e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid        _DNBLogVerbose (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT;
470e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid        _DNBLogWarning (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT;
480e8147bd867e4cdaae9400f56d02c7aacd40a9b3Greg Claytonvoid        _DNBLogWarningVerbose (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))) DNB_EXPORT;
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool        DNBLogCheckLogBit (uint32_t bit) DNB_EXPORT;
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t    DNBLogSetLogMask (uint32_t mask) DNB_EXPORT;
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t    DNBLogGetLogMask () DNB_EXPORT;
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid        DNBLogSetLogCallback (DNBCallbackLog callback, void *baton) DNB_EXPORT;
539c81c3322b68e49530b5c2180f8a0db8c6a494fbGreg ClaytonDNBCallbackLog DNBLogGetLogCallback () DNB_EXPORT;
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool        DNBLogEnabled () DNB_EXPORT;
5524bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Claytonbool        DNBLogEnabledForAny (uint32_t mask) DNB_EXPORT;
5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerint         DNBLogGetDebug () DNB_EXPORT;
5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid        DNBLogSetDebug (int g) DNB_EXPORT;
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerint         DNBLogGetVerbose () DNB_EXPORT;
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid        DNBLogSetVerbose (int g) DNB_EXPORT;
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLog(fmt, ...)                    do { if (DNBLogEnabled()) { _DNBLog(0, fmt, ## __VA_ARGS__);                 } } while (0)
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogDebug(fmt, ...)               do { if (DNBLogEnabled()) { _DNBLogDebug(fmt, ## __VA_ARGS__);               } } while (0)
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogDebugVerbose(fmt, ...)        do { if (DNBLogEnabled()) { _DNBLogDebugVerbose(fmt, ## __VA_ARGS__);        } } while (0)
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogThreaded(fmt, ...)            do { if (DNBLogEnabled()) { _DNBLogThreaded(fmt, ## __VA_ARGS__);            } } while (0)
6524bc5d9bfad2a1c562c27e7cf37e1c56d85c45e7Greg Clayton#define     DNBLogThreadedIf(mask, fmt, ...)    do { if (DNBLogEnabledForAny(mask)) { _DNBLogThreaded(fmt, ## __VA_ARGS__);  } } while (0)
6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogError(fmt, ...)               do { if (DNBLogEnabled()) { _DNBLogError(fmt, ## __VA_ARGS__);               } } while (0)
6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogFatalError(err, fmt, ...)     do { if (DNBLogEnabled()) { _DNBLogFatalError(err, fmt, ## __VA_ARGS__);     } } while (0)
6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogVerbose(fmt, ...)             do { if (DNBLogEnabled()) { _DNBLogVerbose(fmt, ## __VA_ARGS__);             } } while (0)
6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogWarning(fmt, ...)             do { if (DNBLogEnabled()) { _DNBLogWarning(fmt, ## __VA_ARGS__);             } } while (0)
7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogWarningVerbose(fmt, ...)      do { if (DNBLogEnabled()) { _DNBLogWarningVerbose(fmt, ## __VA_ARGS__);      } } while (0)
7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#else   // #if defined(DNBLOG_ENABLED)
7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogDebug(...)            ((void)0)
7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogDebugVerbose(...)     ((void)0)
7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogThreaded(...)         ((void)0)
7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogThreadedIf(...)       ((void)0)
7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogError(...)            ((void)0)
7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogFatalError(...)       ((void)0)
8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogVerbose(...)          ((void)0)
8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogWarning(...)          ((void)0)
8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogWarningVerbose(...)   ((void)0)
8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogGetLogFile()          ((FILE *)NULL)
8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogSetLogFile(f)         ((void)0)
8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogCheckLogBit(bit)      ((bool)false)
8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogSetLogMask(mask)      ((uint32_t)0u)
8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogGetLogMask()          ((uint32_t)0u)
8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogToASL()               ((void)0)
8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogToFile()              ((void)0)
9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define     DNBLogCloseLogFile()        ((void)0)
9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // #else defined(DNBLOG_ENABLED)
9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifdef __cplusplus
9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}
9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif
9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // #ifndef __DNBLog_h__
99