static gboolean java_prolog(TreeState *state) { int len, i; state->priv = calloc(1, sizeof(struct java_priv_data)); if (!state->priv) return FALSE; TYPEDEFS(state) = 0; TYPEDEFS(state) = g_hash_table_new(g_str_hash, g_str_equal); if (!TYPEDEFS(state)) { /* XXX report error */ free(state->priv); return FALSE; } KEYWORDS(state) = 0; KEYWORDS(state) = g_hash_table_new(g_str_hash, g_str_equal); if (!KEYWORDS(state)) { g_hash_table_destroy(TYPEDEFS(state)); free(state->priv); return FALSE; } len = sizeof(javaKeywords)/sizeof(*javaKeywords); for (i = 0; i < len; i++) { g_hash_table_insert(KEYWORDS(state), javaKeywords[i], javaKeywords[i]); } return TRUE; }
char* subscriptIdentifier(TreeState *state, char *str) { char *sstr = NULL; char *keyword = g_hash_table_lookup(KEYWORDS(state), str); if (keyword) { sstr = g_strdup_printf("%s_", keyword); return sstr; } return str; }
static gboolean java_epilog(TreeState *state) { /* points to other elements of the tree, so just destroy the table */ g_hash_table_destroy(TYPEDEFS(state)); g_hash_table_destroy(KEYWORDS(state)); free(state->priv); state->priv = NULL; return TRUE; }