+
+char *
+get_type (const Type *t, gboolean postfix_to_stars)
+{
+ char *ret, *s;
+ int i;
+ int extra;
+ GString *gs;
+
+ s = remove_sep(t->name);
+ gs = g_string_new(s);
+ g_free(s);
+
+ extra = 0;
+ if (postfix_to_stars) {
+ const char *p;
+ /*XXX: this is ugly perhaps we can do this whole postfix thing
+ in a nicer way, we just count the number of '[' s and from
+ that we deduce the number of dimensions, so that we can print
+ that many stars */
+ for (p = t->postfix; p && *p; p++)
+ if(*p == '[') extra++;
+ }
+ g_string_append_c(gs, ' ');
+
+ if (t->pointer != NULL) {
+ g_string_append (gs, t->pointer);
+ for (i=0; i < extra; i++)
+ g_string_append_c (gs, '*');
+ g_string_append_c (gs, ' ');
+ }
+ ret = gs->str;
+ g_string_free(gs, FALSE);
+ return ret;
+}
+
+#if HAVE_G_ASCII_STRCASECMP
+char *gob_strup(char *str)
+{
+ char *s;
+
+ for (s = str; *s; s++)
+ *s = g_ascii_toupper(*s);
+
+ return str;
+}
+
+char *gob_strdown(char *str)
+{
+ char *s;
+
+ for (s = str; *s; s++)
+ *s = g_ascii_tolower(*s);
+
+ return str;
+}
+#endif
+
+char *
+gob_str_delete_quotes(char *str)
+{
+ char *p, *i;
+ p=i=str;
+ while(*p!='\0')
+ {
+ if(*p=='\"')
+ {
+ p++;
+ continue;
+ }
+ *i=*p;
+ p++; i++;
+ }
+ *i=*p;
+ return str;
+}
+
+char *
+make_me_type (const char *type, const char *alt)
+{
+ if (type == NULL)
+ return g_strdup (alt);
+ /* HACK! just in case someone made this
+ * work with 2.0.0 by using the TYPE
+ * macro directly */
+ if ((strstr (type, "_TYPE_") != NULL ||
+ strstr (type, "TYPE_") == type) &&
+ strchr (type, ':') == NULL)
+ return g_strdup (type);
+ return make_pre_macro (type, "TYPE");
+}