Program Listing for File debug.h

Return to documentation for file (server/utils/debug.h)

#ifndef DEBUG_MODE_H
    #define DEBUG_MODE_H

// IWYU pragma: always_keep



    #ifndef COLORS_H
        #define COLORS_H

        #define COL_FMT(n) "\033[" #n "m"

        #define RESET COL_FMT(0)
        #define BOLD COL_FMT(1)

        #define RED COL_FMT(31)
        #define GREEN COL_FMT(32)
        #define YELLOW COL_FMT(33)
        #define BLUE COL_FMT(34)
        #define PURPLE COL_FMT(35)
        #define CYAN COL_FMT(36)

    #endif

    #ifdef DEBUG_MODE

        #include <stdio.h>  // IWYU pragma: keep

        #define HEAD __FILE_NAME__, __LINE__

        #define HEAD_FMT_FILE BOLD BLUE "%-24s" RESET
        #define HEAD_FMT_LINE ": " BOLD PURPLE "%-3d" RESET ":"

        #define HEAD_FMT(fmt) HEAD_FMT_FILE HEAD_FMT_LINE "  " fmt "\n"

        #define DEBUG_MSG(msg) printf(HEAD_FMT("%s"), HEAD, msg)
        #define DEBUG(fmt, ...) printf(HEAD_FMT(fmt), HEAD, __VA_ARGS__)
        #define DEBUG_RAW_MSG(msg) printf("%s", msg)
        #define DEBUG_RAW(fmt, ...) printf(fmt, __VA_ARGS__)

        #define DEBUG_CALL(func, ...) func(__VA_ARGS__)

        #define DEBUG_USED

        #define _TODO_HEAD YELLOW "TODO" RESET " `%s`"
        #define TODO(...) DEBUG(_TODO_HEAD, #__VA_ARGS__)

    #else
        #define DEBUG_MODE 0

        #define OMIT /* omitted */

        #define DEBUG_MSG(msg) OMIT
        #define DEBUG(fmt, ...) OMIT
        #define DEBUG_RAW_MSG(msg) OMIT
        #define DEBUG_RAW(fmt, ...) OMIT

        #define DEBUG_CALL(func, ...) OMIT
        #define DEBUG_USED [[gnu::unused]]

        #define TODO(...) OMIT
    #endif

#endif