GHOST  1.1.2
General, Hybrid, and Optimized Sparse Toolkit
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros
log.h File Reference

Macros for logging. More...

#include "config.h"
#include <stdio.h>
#include <string.h>
Include dependency graph for log.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define GHOST_ANSI_COLOR_RED   "\x1b[31m"
 
#define GHOST_ANSI_COLOR_GREEN   "\x1b[32m"
 
#define GHOST_ANSI_COLOR_YELLOW   "\x1b[33m"
 
#define GHOST_ANSI_COLOR_BLUE   "\x1b[34m"
 
#define GHOST_ANSI_COLOR_MAGENTA   "\x1b[35m"
 
#define GHOST_ANSI_COLOR_CYAN   "\x1b[36m"
 
#define GHOST_ANSI_COLOR_RESET   "\x1b[0m"
 
#define GHOST_IF_DEBUG(level)   if(GHOST_VERBOSITY > level)
 
#define GHOST_FILE_BASENAME   (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
 
#define GHOST_FIRST(...)   GHOST_FIRST_HELPER(__VA_ARGS__, throwaway)
 
#define GHOST_FIRST_HELPER(first,...)   first
 
#define REST(...)   REST_HELPER(NUM(__VA_ARGS__), __VA_ARGS__)
 
#define REST_HELPER(qty,...)   REST_HELPER2(qty, __VA_ARGS__)
 
#define REST_HELPER2(qty,...)   REST_HELPER_##qty(__VA_ARGS__)
 
#define REST_HELPER_ONE(first)
 
#define REST_HELPER_TWOORMORE(first,...)   , __VA_ARGS__
 
#define NUM(...)
 
#define SELECT_20TH(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20,...)   a20
 
#define GHOST_LOG(type, color,...)
 
#define GHOST_DEBUG_LOG(level,...)   {if(GHOST_VERBOSITY > level) { GHOST_LOG(DEBUG,GHOST_ANSI_COLOR_RESET,__VA_ARGS__) }}
 
#define GHOST_INFO_LOG(...)   {if (GHOST_VERBOSITY) { GHOST_LOG(INFO,GHOST_ANSI_COLOR_BLUE,__VA_ARGS__); }}
 
#define GHOST_WARNING_LOG(...)   {if (GHOST_VERBOSITY) { GHOST_LOG(WARNING,GHOST_ANSI_COLOR_YELLOW,__VA_ARGS__); }}
 
#define GHOST_PERFWARNING_LOG(...)   {if (GHOST_VERBOSITY) { GHOST_LOG(PERFWARNING,GHOST_ANSI_COLOR_MAGENTA,__VA_ARGS__); }}
 
#define GHOST_ERROR_LOG(...)   {if (GHOST_VERBOSITY) { GHOST_LOG(ERROR,GHOST_ANSI_COLOR_RED,__VA_ARGS__); }}
 

Detailed Description

Macros for logging.

Author
Moritz Kreutzer morit.nosp@m.z.kr.nosp@m.eutze.nosp@m.r@fa.nosp@m.u.de

Macro Definition Documentation

#define GHOST_ANSI_COLOR_BLUE   "\x1b[34m"
#define GHOST_ANSI_COLOR_CYAN   "\x1b[36m"
#define GHOST_ANSI_COLOR_GREEN   "\x1b[32m"
#define GHOST_ANSI_COLOR_MAGENTA   "\x1b[35m"
#define GHOST_ANSI_COLOR_RED   "\x1b[31m"
#define GHOST_ANSI_COLOR_RESET   "\x1b[0m"
#define GHOST_ANSI_COLOR_YELLOW   "\x1b[33m"
#define GHOST_DEBUG_LOG (   level,
  ... 
)    {if(GHOST_VERBOSITY > level) { GHOST_LOG(DEBUG,GHOST_ANSI_COLOR_RESET,__VA_ARGS__) }}
#define GHOST_ERROR_LOG (   ...)    {if (GHOST_VERBOSITY) { GHOST_LOG(ERROR,GHOST_ANSI_COLOR_RED,__VA_ARGS__); }}
#define GHOST_FILE_BASENAME   (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
#define GHOST_FIRST (   ...)    GHOST_FIRST_HELPER(__VA_ARGS__, throwaway)
#define GHOST_FIRST_HELPER (   first,
  ... 
)    first
#define GHOST_IF_DEBUG (   level)    if(GHOST_VERBOSITY > level)
#define GHOST_INFO_LOG (   ...)    {if (GHOST_VERBOSITY) { GHOST_LOG(INFO,GHOST_ANSI_COLOR_BLUE,__VA_ARGS__); }}
#define GHOST_LOG (   type,
  color,
  ... 
)
Value:
{\
fprintf(stderr, color "[GHOST] " #type " at %s() <%s:%d>: " GHOST_FIRST(__VA_ARGS__) GHOST_ANSI_COLOR_RESET "\n", __func__, GHOST_FILE_BASENAME, __LINE__ REST(__VA_ARGS__));\
}\
#define REST(...)
Definition: log.h:49
#define GHOST_ANSI_COLOR_RESET
Definition: log.h:33
#define GHOST_FIRST(...)
Definition: log.h:40
#define GHOST_FILE_BASENAME
Definition: log.h:36
#define GHOST_PERFWARNING_LOG (   ...)    {if (GHOST_VERBOSITY) { GHOST_LOG(PERFWARNING,GHOST_ANSI_COLOR_MAGENTA,__VA_ARGS__); }}
#define GHOST_WARNING_LOG (   ...)    {if (GHOST_VERBOSITY) { GHOST_LOG(WARNING,GHOST_ANSI_COLOR_YELLOW,__VA_ARGS__); }}
#define NUM (   ...)
Value:
SELECT_20TH(__VA_ARGS__, TWOORMORE, TWOORMORE, TWOORMORE, TWOORMORE,\
TWOORMORE, TWOORMORE, TWOORMORE, TWOORMORE, TWOORMORE, TWOORMORE, TWOORMORE, TWOORMORE, TWOORMORE, TWOORMORE, TWOORMORE, TWOORMORE, TWOORMORE, TWOORMORE, ONE, throwaway)
#define SELECT_20TH(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20,...)
Definition: log.h:57
#define REST (   ...)    REST_HELPER(NUM(__VA_ARGS__), __VA_ARGS__)
#define REST_HELPER (   qty,
  ... 
)    REST_HELPER2(qty, __VA_ARGS__)
#define REST_HELPER2 (   qty,
  ... 
)    REST_HELPER_##qty(__VA_ARGS__)
#define REST_HELPER_ONE (   first)
#define REST_HELPER_TWOORMORE (   first,
  ... 
)    , __VA_ARGS__
#define SELECT_20TH (   a1,
  a2,
  a3,
  a4,
  a5,
  a6,
  a7,
  a8,
  a9,
  a10,
  a11,
  a12,
  a13,
  a14,
  a15,
  a16,
  a17,
  a18,
  a19,
  a20,
  ... 
)    a20