From 64659a1566d866b484b4768a870e22a7e83a3db8 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Tue, 8 Sep 2020 20:47:22 -0700 Subject: Some cool debug viz stuff --- utils.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'utils.h') diff --git a/utils.h b/utils.h index 96c6de2..58cfdc4 100644 --- a/utils.h +++ b/utils.h @@ -6,6 +6,8 @@ #define check(cond, ...) do { if (!(cond)) { fprintf(stderr, __VA_ARGS__); fwrite("\n", 1, 1, stderr); _exit(1); } } while(0) #define debug(...) do { if (verbose) fprintf(stderr, __VA_ARGS__); } while(0) +static int visualize_delay = -1; + /* * Helper function to skip past all spaces (and comments) * Returns a pointer to the first non-space character. @@ -37,3 +39,16 @@ static inline int matchchar(const char **str, char c) return 0; } } + +static void visualize(const char *source, const char *ptr, const char *msg) +{ + if (visualize_delay < 0) return; + fprintf(stderr, "\033[0;1m\r\033[2A\033[K%.*s\033[0;2m%s\033[0m\n", + (int)(ptr-source), source, ptr); + fprintf(stderr, "\033[0;1m"); + for (--ptr ; ptr > source; --ptr) putc(' ', stderr); + fprintf(stderr, "^\033[K\n"); + if (msg) + fprintf(stderr, "\033[K\033[33;1m%s\033[0m", msg); + usleep(visualize_delay); +} -- cgit v1.2.3