
#ifndef COLORS_H_
#define COLORS_H_

#define ANSI_ENABLED 1
#define ASNI_DISABLED 0

// Common escape codes
// can be used to print colored text
extern char *RED;
extern char *YELLOW;
extern char *MAGENTA;
extern char *CYAN;
extern char *GREEN;
extern char *RESET;
extern char *BOLD;
extern char *FAINT;

/**
 * @brief Initialize global state
 */
void col_init(void);

/**
 * @brief Enable ANSI escape codes. This will set the correct escape codes to
 *        the global strings above.
 */
void enable_ansi_colors();

/**
 * @brief Disable ANSI escape codes. This will set all the above global strings to be empty.
 */
void disable_ansi_colors();

/**
 * @brief Check if stdout may support ANSI escape codes.
 * @attention This function may report escape codes to be unavailable even if they actually are.
 * @return ANSI_ENABLED if escape sequences are supported ASNI_DISABLED otherwise 
 */
[[nodiscard]]
int stdout_supports_ansi_esc();

#endif // COLORS_H_
