]> git.draconx.ca Git - gob-dx.git/blobdiff - src/main.c
Release 2.0.3
[gob-dx.git] / src / main.c
index 7ece9fb6481228e7757add93c2ed5cced65667d0..d22a7da7a9a6262d6201d590fefc1e60832d54cc 100644 (file)
@@ -310,7 +310,7 @@ make_method_nongnu_aliases(Class *c)
 }
 
 static void
-add_bad_hack_to_avoid_unused_warnings(Class *c)
+add_bad_hack_to_avoid_unused_warnings(const Class *c)
 {
        GList *li;
 
@@ -356,7 +356,7 @@ add_bad_hack_to_avoid_unused_warnings(Class *c)
 }
 
 static void
-put_variable(Variable *v, FILE *fp)
+put_variable(const Variable *v, FILE *fp)
 {
        out_printf(fp, "\t");
        print_type(fp, v->vtype, FALSE);
@@ -526,7 +526,7 @@ put_prot_method(const Method *m)
 }
 
 static void
-put_priv_method_prot(Method *m)
+put_priv_method_prot(const Method *m)
 {
        if(m->method == SIGNAL_LAST_METHOD ||
           m->method == SIGNAL_FIRST_METHOD ||
@@ -636,7 +636,7 @@ make_inits(Class *cl)
 }
 
 static void
-find_dispose(Class *cl)
+find_dispose(const Class *cl)
 {
        GList *li;
 
@@ -667,7 +667,7 @@ find_dispose(Class *cl)
 }
 
 static void
-find_finalize(Class *cl)
+find_finalize(const Class *cl)
 {
        GList *li;
 
@@ -708,7 +708,7 @@ static GList *eq_signal_methods = NULL;
 
 /* compare a list of strings */
 static gboolean
-is_list_equal(GList *a, GList *b)
+is_list_equal(const GList *a, const GList *b)
 {
        for(;a && b; a=a->next, b=b->next) {
                if(strcmp(a->data, b->data)!=0) {
@@ -722,7 +722,7 @@ is_list_equal(GList *a, GList *b)
 }
 
 static Method *
-find_same_type_signal(Method *m)
+find_same_type_signal(const Method *m)
 {
        GList *li;
        for(li=eq_signal_methods;li;li=li->next) {
@@ -734,7 +734,7 @@ find_same_type_signal(Method *m)
 }
 
 static void
-print_signal_marsal_args (Method *m)
+print_signal_marsal_args (const Method *m)
 {
        if (strcmp (m->gtktypes->next->data, "NONE") != 0) {
                GList *li;
@@ -742,8 +742,15 @@ print_signal_marsal_args (Method *m)
                for (i = 0, li = m->gtktypes->next;
                     li != NULL;
                     i++, li = li->next) {
-                       char *get_func = g_strdup_printf
-                               ("g_value_get_%s", (char *)li->data);
+                       char *get_func;
+
+                       if (strcmp (li->data, "UNICHAR") == 0)
+                               /* hack because glib is braindamaged */
+                               get_func = g_strdup ("g_value_get_uint");
+                       else
+                               get_func = g_strdup_printf
+                                       ("g_value_get_%s", (char *)li->data);
+
                        g_strdown (get_func);
                        out_printf (out, ",\n\t\t(%s) "
                                    "%s (param_values + %d)",
@@ -857,9 +864,16 @@ add_signal_prots(Method *m)
                gboolean take_ownership = 
                        (strcmp ((char *)m->gtktypes->data, "STRING") == 0 ||
                         strcmp ((char *)m->gtktypes->data, "BOXED") == 0);
-               char *set_func = g_strdup_printf ("g_value_set_%s%s",
-                                                 (char *)m->gtktypes->data,
-                                                 take_ownership ?
+               char *set_func;
+
+
+               if (strcmp (m->gtktypes->data, "UNICHAR") == 0)
+                       /* hack because glib is braindamaged */
+                       set_func = g_strdup ("g_value_set_uint");
+               else
+                       set_func = g_strdup_printf ("g_value_set_%s%s",
+                                                   (char *)m->gtktypes->data,
+                                                   take_ownership ?
                                                    "_take_ownership" : ""); 
                g_strdown (set_func);
 
@@ -1299,7 +1313,7 @@ add_signals(Class *c)
                if(strcmp(m->gtktypes->data, "NONE") != 0 ||
                   ! is_none) {
                        GList *gl, *al;
-                       char *sep = "";
+                       const char *sep = "";
                        out_printf(out, "\tif(");
                        if(strcmp(m->gtktypes->data, "NONE") != 0) {
                                out_printf(out, "%s sizeof(", sep);
@@ -1954,7 +1968,7 @@ print_initializer(Method *m, Variable *v)
 static void
 print_destructor (Variable *v)
 {
-       char *root;
+       const char *root;
 
        if(v->destructor == NULL)
                return;
@@ -2295,6 +2309,12 @@ add_argument (Argument *a, gboolean is_set)
        the_type_lower = g_strdup (a->gtktype);
        g_strdown (the_type_lower);
 
+       /* HACK because there is no g_value_set/get for unichar */
+       if (strcmp (the_type_lower, "unichar") == 0) {
+               g_free (the_type_lower);
+               the_type_lower = g_strdup ("uint");
+       }
+
        if (is_set) {
                char *cast;
 
@@ -2570,9 +2590,13 @@ put_signal_args (Method *m)
                            "\tg_value_init (&___param_values[%d], G_TYPE_%s);\n",
                            i, i, (char *)ali->data);
 
-               set_func = g_strdup_printf ("g_value_set%s_%s",
-                                           do_static ? "_static" : "",
-                                           (char *)ali->data);
+               if (strcmp (ali->data, "UNICHAR") == 0)
+                       /* hack because glib is braindamaged */
+                       set_func = g_strdup ("g_value_set_uint");
+               else
+                       set_func = g_strdup_printf ("g_value_set%s_%s",
+                                                   do_static ? "_static" : "",
+                                                   (char *)ali->data);
                g_strdown (set_func);
 
                out_printf (out, "\t%s (&___param_values[%d], (%s) %s);\n\n",
@@ -2584,20 +2608,18 @@ put_signal_args (Method *m)
 }
 
 static char *
-get_arg_names_for_macro(Method *m)
+get_arg_names_for_macro (Method *m)
 {
-       char *p;
+       const char *sep;
        GList *li;
        GString *gs = g_string_new(NULL);
-       p = "";
+       sep = "";
        for(li=m->args;li;li=g_list_next(li)) {
                FuncArg *arg = li->data;
-               g_string_sprintfa(gs, "%s___%s", p, arg->name);
-               p = ",";
+               g_string_sprintfa (gs, "%s___%s", sep, arg->name);
+               sep = ",";
        }
-       p = gs->str;
-       g_string_free(gs, FALSE);
-       return p;
+       return g_string_free (gs, FALSE);
 }
 
 static void
@@ -2679,9 +2701,13 @@ put_method(Method *m)
                                if (cast == NULL)
                                        cast = get_type (m->mtype, TRUE);
 
-                               set_func = g_strdup_printf ("g_value_set%s_%s",
-                                                           do_static ? "_static" : "",
-                                                           (char *)m->gtktypes->data);
+                               if (strcmp (m->gtktypes->data, "UNICHAR") == 0)
+                                       /* hack because glib is braindamaged */
+                                       set_func = g_strdup ("g_value_set_uint");
+                               else
+                                       set_func = g_strdup_printf ("g_value_set%s_%s",
+                                                                   do_static ? "_static" : "",
+                                                                   (char *)m->gtktypes->data);
                                g_strdown (set_func);
 
                                out_printf (out, "\t%s (&___return_val, (%s) (%s));\n",
@@ -2705,8 +2731,14 @@ put_method(Method *m)
 
                if (strcmp (m->gtktypes->data, "NONE") != 0) {
                        char *cast = g_strdup (get_cast (m->gtktypes->data, FALSE));
-                       char *getfunc = g_strdup_printf ("g_value_get_%s",
-                                                        (char *)m->gtktypes->data);
+                       char *getfunc;
+
+                       if (strcmp (m->gtktypes->data, "UNICHAR") == 0)
+                               /* hack because glib is braindamaged */
+                               getfunc = g_strdup ("g_value_get_uint");
+                       else
+                               getfunc = g_strdup_printf ("g_value_get_%s",
+                                                          (char *)m->gtktypes->data);
                        g_strdown (getfunc);
 
                        if (cast == NULL)
@@ -3249,12 +3281,7 @@ print_class_block(Class *c)
                    " */\n");
 
        if ( ! overrode_get_type) {
-               out_printf (outh, "GType\t%s_get_type\t(void)", funcbase);
-               if ( ! no_gnu) {
-                       out_printf (outh, " G_GNUC_CONST;\n");
-               } else {
-                       out_printf (outh, ";\n");
-               }
+               out_printf (outh, "GType\t%s_get_type\t(void);", funcbase);
        }
 
        for(li = c->nodes; li != NULL; li = li->next) {