ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
colors.h
Go to the documentation of this file.
1#ifndef _colors_h_INCLUDED
2#define _colors_h_INCLUDED
3
4#include <assert.h>
5#include <stdbool.h>
6#include <stdio.h>
7
8#include "keatures.h"
9
10#include "global.h"
12
13#define BLUE "\033[34m"
14#define BOLD "\033[1m"
15#define CYAN "\033[36m"
16#define GREEN "\033[32m"
17#define MAGENTA "\033[35m"
18#define NORMAL "\033[0m"
19#define RED "\033[31m"
20#define WHITE "\037[34m"
21#define YELLOW "\033[33m"
22
23#define LIGHT_GRAY "\033[1;37m"
24#define DARK_GRAY "\033[0;37m"
25
26#ifdef KISSAT_HAS_FILENO
27#define KISSAT_assert_if_has_fileno KISSAT_assert
28#else
29#define KISSAT_assert_if_has_fileno(...) \
30 do { \
31 } while (0)
32#endif
33
34#define TERMINAL(F, I) \
35 KISSAT_assert_if_has_fileno (fileno (F) == \
36 I); /* 'fileno' only in POSIX not C99 */ \
37 KISSAT_assert ((I == 1 && F == stdout) || (I == 2 && F == stderr)); \
38 bool connected_to_terminal = kissat_connected_to_terminal (I); \
39 FILE *terminal_file = F
40
41#define COLOR(CODE) \
42 do { \
43 if (!connected_to_terminal) \
44 break; \
45 fputs (CODE, terminal_file); \
46 } while (0)
47
48extern int kissat_is_terminal[3];
49
51void kissat_force_colors (void);
52void kissat_force_no_colors (void);
53
54static inline bool kissat_connected_to_terminal (int fd) {
55 KISSAT_assert (fd == 1 || fd == 2);
56 int res = kissat_is_terminal[fd];
57 if (res < 0)
59 KISSAT_assert (res == 0 || res == 1);
60 return res;
61}
62
63static inline const char *kissat_bold_green_color_code (int fd) {
64 return kissat_connected_to_terminal (fd) ? BOLD GREEN : "";
65}
66
67static inline const char *kissat_normal_color_code (int fd) {
68 return kissat_connected_to_terminal (fd) ? NORMAL : "";
69}
70
72
73#endif
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
ABC_NAMESPACE_IMPL_START int kissat_is_terminal[3]
Definition colors.c:11
#define NORMAL
Definition colors.h:18
#define BOLD
Definition colors.h:14
int kissat_initialize_terminal(int fd)
Definition colors.c:13
void kissat_force_no_colors(void)
Definition colors.c:23
void kissat_force_colors(void)
Definition colors.c:19
#define GREEN
Definition colors.h:16
#define KISSAT_assert(ignore)
Definition global.h:13