gulong xg_scanner_get_next_token_int (GScanner *scanner) { g_scanner_get_next_token (scanner); if (scanner->token != G_TOKEN_INT) { g_scanner_critical (__func__, G_TOKEN_INT, scanner->token); return 0; } return g_scanner_cur_value (scanner).v_int; }
gchar * xg_scanner_get_next_token_identifier (GScanner *scanner) { g_scanner_get_next_token (scanner); if (scanner->token != G_TOKEN_IDENTIFIER) { g_scanner_critical (__func__, G_TOKEN_IDENTIFIER, scanner->token); return NULL; } return g_scanner_cur_value (scanner).v_identifier; }
gdouble xg_scanner_get_next_token_float (GScanner *scanner) { g_scanner_get_next_token (scanner); if (scanner->token != G_TOKEN_FLOAT) { g_scanner_critical (__func__, G_TOKEN_FLOAT, scanner->token); return 0; } return g_scanner_cur_value (scanner).v_float; }
/* print the token in a friendly form */ void print_token(GScanner * scan, GTokenType tok) { if (tok < G_TOKEN_NONE) d3_printf("tok: %c\n", tok); else { if (tok == G_TOKEN_STRING) d3_printf("tok: string val: %s\n", g_scanner_cur_value(scan).v_string); else if (tok == G_TOKEN_IDENTIFIER) d3_printf("tok: ident val: %s\n", g_scanner_cur_value(scan).v_string); else if (tok == G_TOKEN_SYMBOL) d3_printf("tok: symbol [%s] val: %d\n", symname[g_scanner_cur_value(scan).v_int], (int)g_scanner_cur_value(scan).v_int); else if (tok == G_TOKEN_INT) d3_printf("tok: int val: %d\n", (int)g_scanner_cur_value(scan).v_int); else if (tok == G_TOKEN_FLOAT) d3_printf("tok: float val: %f\n", g_scanner_cur_value(scan).v_float); else d3_printf("tok: %d\n", tok); } }
static guint theme_parse_int(GScanner *scanner, GTokenType wanted_token, guint *retval) { guint token; token = g_scanner_get_next_token(scanner); if (token != wanted_token) return wanted_token; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_EQUAL_SIGN) return wanted_token; token = g_scanner_get_next_token(scanner); if (token != G_TOKEN_INT) return G_TOKEN_INT; *retval = g_scanner_cur_value(scanner).v_int; return G_TOKEN_NONE; }