From 6ac306a515e560e01fdfd36495afb034ea6a5080 Mon Sep 17 00:00:00 2001 From: Nicolas Pennequin Date: Tue, 24 Apr 2007 23:58:57 +0000 Subject: Add a new commandline switch to the simulator: "--debugwps". It enables printing of advanced (and very verbose) WPS debugging information. Also make the debugging code a bit cleaner. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13257 a1c6a512-1295-4272-9138-f99709370657 --- apps/gui/wps_debug.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 5 deletions(-) (limited to 'apps/gui/wps_debug.c') diff --git a/apps/gui/wps_debug.c b/apps/gui/wps_debug.c index ad9395b05d..335c994881 100644 --- a/apps/gui/wps_debug.c +++ b/apps/gui/wps_debug.c @@ -24,11 +24,19 @@ #include "gwps.h" #include "debug.h" +#define PARSE_FAIL_UNCLOSED_COND 1 +#define PARSE_FAIL_INVALID_CHAR 2 +#define PARSE_FAIL_COND_SYNTAX_ERROR 3 + +#ifdef SIMULATOR +extern bool debug_wps; +#endif + static char *next_str(bool next) { - return next ? "next" : ""; + return next ? "next " : ""; } -void dump_wps_tokens(struct wps_data *data) +static void dump_wps_tokens(struct wps_data *data) { struct wps_token *token; int i, j; @@ -358,7 +366,7 @@ void dump_wps_tokens(struct wps_data *data) DEBUGF("\n"); } -void print_line_info(struct wps_data *data) +static void print_line_info(struct wps_data *data) { int i, j; struct wps_line *line; @@ -395,7 +403,7 @@ void print_line_info(struct wps_data *data) DEBUGF("\n"); } -void print_wps_strings(struct wps_data *data) +static void print_wps_strings(struct wps_data *data) { int i, len, total_len = 0, buf_used = 0; @@ -414,7 +422,7 @@ void print_wps_strings(struct wps_data *data) } #ifdef HAVE_LCD_BITMAP -void print_img_cond_indexes(struct wps_data *data) +static void print_img_cond_indexes(struct wps_data *data) { DEBUGF("Image conditional indexes:\n"); int i; @@ -427,4 +435,39 @@ void print_img_cond_indexes(struct wps_data *data) } #endif /*HAVE_LCD_BITMAP */ +void print_debug_info(struct wps_data *data, int fail, int line) +{ +#ifdef SIMULATOR + if (debug_wps) + { + dump_wps_tokens(data); + print_line_info(data); + print_wps_strings(data); +#ifdef HAVE_LCD_BITMAP + print_img_cond_indexes(data); +#endif + } +#endif /* SIMULATOR */ + + if (fail) + { + DEBUGF("Failed parsing on line %d : ", line); + switch (fail) + { + case PARSE_FAIL_UNCLOSED_COND: + DEBUGF("Unclosed conditional"); + break; + + case PARSE_FAIL_INVALID_CHAR: + DEBUGF("Invalid conditional char (not in an open conditional)"); + break; + + case PARSE_FAIL_COND_SYNTAX_ERROR: + DEBUGF("Conditional syntax error"); + break; + } + DEBUGF("\n"); + } +} + #endif /* DEBUG */ -- cgit v1.2.3