ptypebase = remove_sep (((Class *)class)->ptype);
}
-static char *
-get_type (const Type *t, gboolean postfix_to_stars)
-{
- char *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, ' ');
- }
-
- s = gs->str;
- g_string_free (gs, FALSE);
- return s;
-}
-
static char *
get_gtk_doc (const char *id)
{
#define value_for_print(str, alt) (str != NULL ? str : alt)
+static 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");
+}
+
static void
make_property (Property *p)
{
g_string_append (flags, ")");
- if (strcmp (p->gtktype, "CHAR") == 0)
+ if (strcmp (p->gtktype, "CHAR") == 0) {
out_printf (out, "\tparam_spec = g_param_spec_char\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
value_for_print (p->maximum, "127"),
value_for_print (p->default_value, "0"),
flags->str);
- else if (strcmp (p->gtktype, "UCHAR") == 0)
+ } else if (strcmp (p->gtktype, "UCHAR") == 0) {
out_printf (out, "\tparam_spec = g_param_spec_uchar\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
value_for_print (p->maximum, "0xFF"),
value_for_print (p->default_value, "0"),
flags->str);
- else if (strcmp (p->gtktype, "BOOLEAN") == 0)
+ } else if (strcmp (p->gtktype, "BOOLEAN") == 0) {
out_printf (out, "\tparam_spec = g_param_spec_boolean\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
value_for_print (p->blurb, "NULL"),
value_for_print (p->default_value, "FALSE"),
flags->str);
- else if (strcmp (p->gtktype, "INT") == 0)
+ } else if (strcmp (p->gtktype, "INT") == 0) {
out_printf (out, "\tparam_spec = g_param_spec_int\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
value_for_print (p->maximum, "G_MAXINT"),
value_for_print (p->default_value, "0"),
flags->str);
- else if (strcmp (p->gtktype, "UINT") == 0)
+ } else if (strcmp (p->gtktype, "UINT") == 0) {
out_printf (out, "\tparam_spec = g_param_spec_uint\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
value_for_print (p->maximum, "G_MAXUINT"),
value_for_print (p->default_value, "0"),
flags->str);
- else if (strcmp (p->gtktype, "LONG") == 0)
+ } else if (strcmp (p->gtktype, "LONG") == 0) {
out_printf (out, "\tparam_spec = g_param_spec_long\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
value_for_print (p->maximum, "G_MAXLONG"),
value_for_print (p->default_value, "0"),
flags->str);
- else if (strcmp (p->gtktype, "ULONG") == 0)
+ } else if (strcmp (p->gtktype, "ULONG") == 0) {
out_printf (out, "\tparam_spec = g_param_spec_ulong\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
value_for_print (p->maximum, "G_MAXULONG"),
value_for_print (p->default_value, "0"),
flags->str);
- else if (strcmp (p->gtktype, "UNICHAR") == 0)
+ } else if (strcmp (p->gtktype, "UNICHAR") == 0) {
out_printf (out, "\tparam_spec = g_param_spec_unichar\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
value_for_print (p->blurb, "NULL"),
value_for_print (p->default_value, "0"),
flags->str);
- else if (strcmp (p->gtktype, "ENUM") == 0)
+ } else if (strcmp (p->gtktype, "ENUM") == 0) {
+ char *type = make_me_type (p->extra_gtktype,
+ "G_TYPE_ENUM");
out_printf (out, "\tparam_spec = g_param_spec_enum\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
p->name,
value_for_print (p->nick, "NULL"),
value_for_print (p->blurb, "NULL"),
- value_for_print (p->extra_gtktype, "G_TYPE_ENUM"),
+ type,
value_for_print (p->default_value, "0"),
flags->str);
- else if (strcmp (p->gtktype, "FLAGS") == 0)
+ g_free (type);
+ } else if (strcmp (p->gtktype, "FLAGS") == 0) {
+ char *type = make_me_type (p->extra_gtktype,
+ "G_TYPE_FLAGS");
out_printf (out, "\tparam_spec = g_param_spec_flags\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
p->name,
value_for_print (p->nick, "NULL"),
value_for_print (p->blurb, "NULL"),
- value_for_print (p->extra_gtktype, "G_TYPE_FLAGS"),
+ type,
value_for_print (p->default_value, "0"),
flags->str);
- else if (strcmp (p->gtktype, "FLOAT") == 0)
+ g_free (type);
+ } else if (strcmp (p->gtktype, "FLOAT") == 0) {
out_printf (out, "\tparam_spec = g_param_spec_float\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
value_for_print (p->maximum, "G_MAXFLOAT"),
value_for_print (p->default_value, "0.0"),
flags->str);
- else if (strcmp (p->gtktype, "DOUBLE") == 0)
+ } else if (strcmp (p->gtktype, "DOUBLE") == 0) {
out_printf (out, "\tparam_spec = g_param_spec_double\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
value_for_print (p->maximum, "G_MAXDOUBLE"),
value_for_print (p->default_value, "0.0"),
flags->str);
- else if (strcmp (p->gtktype, "STRING") == 0)
+ } else if (strcmp (p->gtktype, "STRING") == 0) {
out_printf (out, "\tparam_spec = g_param_spec_string\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
value_for_print (p->blurb, "NULL"),
value_for_print (p->default_value, "NULL"),
flags->str);
- else if (strcmp (p->gtktype, "PARAM") == 0)
+ } else if (strcmp (p->gtktype, "PARAM") == 0) {
+ char *type = make_me_type (p->extra_gtktype,
+ "G_TYPE_PARAM");
out_printf (out, "\tparam_spec = g_param_spec_param\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
p->name,
value_for_print (p->nick, "NULL"),
value_for_print (p->blurb, "NULL"),
- value_for_print (p->extra_gtktype, "G_TYPE_PARAM"),
+ type,
flags->str);
- else if (strcmp (p->gtktype, "BOXED") == 0)
+ g_free (type);
+ } else if (strcmp (p->gtktype, "BOXED") == 0) {
+ char *type = make_me_type (p->extra_gtktype,
+ "G_TYPE_BOXED");
out_printf (out, "\tparam_spec = g_param_spec_boxed\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
p->name,
value_for_print (p->nick, "NULL"),
value_for_print (p->blurb, "NULL"),
- value_for_print (p->extra_gtktype, "G_TYPE_BOXED"),
+ type,
flags->str);
- else if (strcmp (p->gtktype, "POINTER") == 0)
+ g_free (type);
+ } else if (strcmp (p->gtktype, "POINTER") == 0) {
out_printf (out, "\tparam_spec = g_param_spec_pointer\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
value_for_print (p->blurb, "NULL"),
flags->str);
/* FIXME: VALUE_ARRAY */
- else if (strcmp (p->gtktype, "CLOSURE") == 0)
+ } else if (strcmp (p->gtktype, "CLOSURE") == 0) {
out_printf (out, "\tparam_spec = g_param_spec_pointer\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
value_for_print (p->nick, "NULL"),
value_for_print (p->blurb, "NULL"),
flags->str);
- else if (strcmp (p->gtktype, "OBJECT") == 0)
+ } else if (strcmp (p->gtktype, "OBJECT") == 0) {
+ char *type = make_me_type (p->extra_gtktype,
+ "G_TYPE_BOXED");
out_printf (out, "\tparam_spec = g_param_spec_object\n"
"\t\t(\"%s\" /* name */,\n"
"\t\t %s /* nick */,\n"
p->name,
value_for_print (p->nick, "NULL"),
value_for_print (p->blurb, "NULL"),
- value_for_print (p->extra_gtktype, "G_TYPE_OBJECT"),
+ type,
flags->str);
- else
+ g_free (type);
+ } else {
error_printf (GOB_ERROR, p->line_no,
"%s type is not supported by properties",
p->gtktype);
+ }
s = g_strdup (p->name);
g_strup (s);