]> git.draconx.ca Git - gob-dx.git/blobdiff - src/parse.y
Avoid more GLib deprecation warnings.
[gob-dx.git] / src / parse.y
index 9c880cf8af435a3b59681a009aa34f1c9764c58d..46df2d692c61dc5c217655289fdf446b49f6473c 100644 (file)
@@ -22,7 +22,7 @@
  */
 %{
 
-#include "config.h"
+#include <config.h>
 #include <glib.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -45,6 +45,7 @@ static GList *flag_vals = NULL;
 static GList *error_vals = NULL;
 
 static gboolean abstract = FALSE;
+static gboolean dynamic = FALSE;
 static char *chunk_size = NULL;
 static char *bonobo_object_class = NULL;
 static int glade_xml = FALSE;
@@ -70,6 +71,7 @@ static char *onerror = NULL;
 static char *defreturn = NULL;
 
 static GList *gtktypes = NULL;
+static char *signal_name=NULL;
 
 static Property *property = NULL;
 
@@ -202,6 +204,13 @@ push_function (int scope, int method, char *oid, char *id,
        } else
                c_cbuf = NULL;
 
+       if (signal_name == NULL )
+       {
+               GString * buffer=g_string_new("");
+               g_string_printf(buffer, "\"%s\"", id);
+               signal_name = buffer->str;
+               g_string_free(buffer, FALSE);
+       }
        node = node_new (METHOD_NODE,
                         "scope", scope,
                         "method", method,
@@ -210,6 +219,7 @@ push_function (int scope, int method, char *oid, char *id,
                         "gtktypes:steal", gtktypes,
                         "flags:steal", flags,
                         "id:steal", id,
+                        "signal_name:steal", signal_name,
                         "args:steal", funcargs,
                         "funcattrs:steal", funcattrs,
                         "onerror:steal", onerror,
@@ -229,8 +239,8 @@ push_function (int scope, int method, char *oid, char *id,
                                above */
                              c_cbuf?FALSE:TRUE);
        gtktypes = NULL;
+       signal_name = NULL;
        funcargs = NULL;
-
        funcattrs = NULL;
        onerror = NULL;
        defreturn = NULL;
@@ -406,15 +416,15 @@ export_accessors (const char *var_name,
                                        "pointer", "*",
                                        NULL);
 
-               g_string_sprintf (get_cbuf,
-                                 "\t%s%s val; "
-                                 "g_object_get (G_OBJECT (self), \"%s\", "
-                                 "&val, NULL); "
-                                 "return val;\n",
-                                 the_type->name, 
-                                 the_type->pointer ? the_type->pointer : "",
-                                 var_name);
-               
+               g_string_printf(get_cbuf,
+                               "\t%s%s val; "
+                               "g_object_get (G_OBJECT (self), \"%s\", "
+                               "&val, NULL); "
+                               "return val;\n",
+                               the_type->name,
+                               the_type->pointer ? the_type->pointer : "",
+                               var_name);
+
                typestack = g_list_prepend (typestack, node1);
                typestack = g_list_prepend (typestack, node3);
                
@@ -441,10 +451,10 @@ export_accessors (const char *var_name,
                                        "pointer", "*",
                                        NULL);
 
-               g_string_sprintf (set_cbuf,
-                                 "\tg_object_set (G_OBJECT (self), "
-                                 "\"%s\", val, NULL);\n",
-                                 var_name);
+               g_string_printf(set_cbuf,
+                               "\tg_object_set (G_OBJECT (self), "
+                               "\"%s\", val, NULL);\n",
+                               var_name);
 
                typestack = g_list_prepend (typestack, node2);
                typestack = g_list_prepend (typestack, node1);
@@ -604,9 +614,9 @@ property_link_and_export (Node *node)
                        const char *setcast = "";
                        char *to_free = NULL;
                        set_func = g_strdup_printf ("g_value_set_%s", prop->gtktype);
-                       g_strdown (set_func);
+                       gob_strdown (set_func);
                        get_func = g_strdup_printf ("g_value_get_%s", prop->gtktype);
-                       g_strdown (get_func);
+                       gob_strdown (get_func);
 
                        if (for_cpp) {
                                if (strcmp (prop->gtktype, "FLAGS") == 0) {
@@ -693,10 +703,10 @@ ensure_property (void)
 %token SIGNED UNSIGNED LONG SHORT INT FLOAT DOUBLE CHAR
 
 %token <id> TOKEN NUMBER TYPETOKEN ARRAY_DIM SINGLE_CHAR
-%token <cbuf> CCODE ADCODE HTCODE PHCODE HCODE ACODE ATCODE STRING
+%token <cbuf> CCODE CTCODE ADCODE HTCODE PHCODE HCODE ACODE ATCODE STRING
 %token <line> PUBLIC PRIVATE PROTECTED CLASSWIDE PROPERTY ARGUMENT
 %token <line> VIRTUAL SIGNAL OVERRIDE
-%token <line> NICK BLURB MAXIMUM MINIMUM DEFAULT_VALUE ERROR FLAGS TYPE
+%token <line> NAME NICK BLURB MAXIMUM MINIMUM DEFAULT_VALUE ERROR FLAGS TYPE
 %token <line> FLAGS_TYPE ENUM_TYPE PARAM_TYPE BOXED_TYPE OBJECT_TYPE
 
 %%
@@ -770,6 +780,15 @@ ccode:             CCODE                   {
                        nodes = g_list_append(nodes,node);
                        g_string_free($<cbuf>1,FALSE);
                                        }
+       |       CTCODE                  {
+                       Node *node = node_new (CCODE_NODE,
+                                              "cctype", CT_CCODE,
+                                              "cbuf:steal", ($<cbuf>1)->str,
+                                              "line_no", ccode_line,
+                                              NULL);
+                       nodes = g_list_append(nodes,node);
+                       g_string_free($<cbuf>1,FALSE);
+                                       }
        ;
 
 ccodes:                ccodes ccode            { ; }
@@ -803,6 +822,7 @@ classdec:   CLASS TYPETOKEN FROM TYPETOKEN  classflags {
                                          "interfaces:steal", interfaces,
                                          "chunk_size:steal", chunk_size,
                                          "abstract", abstract,
+                                         "dynamic", dynamic,
                                          NULL);
                        bonobo_object_class = NULL;
                        glade_xml = FALSE;
@@ -815,6 +835,8 @@ classflags:
        | '(' TOKEN ')' classflags {
                        if(strcmp($<id>2,"abstract") == 0) {
                                abstract = TRUE;
+                       } else if(strcmp($<id>2,"dynamic") == 0) {
+                               dynamic = TRUE;
                        } else {
                                yyerror(_("parse error"));
                                YYERROR;
@@ -1360,7 +1382,13 @@ anyval:          numtok          { $<id>$ = $<id>1; }
        |       string          { $<id>$ = $<id>1; }
        ;
 
-param_spec_value: NICK '=' string              {
+param_spec_value: NAME '=' string              {
+               ensure_property ();
+               node_set ((Node *)property,
+                         "canonical_name:steal", gob_str_delete_quotes($<id>3),
+                         NULL);
+                 }
+       |       NICK '=' string         {
                ensure_property ();
                node_set ((Node *)property,
                          "nick:steal", $<id>3,
@@ -1674,6 +1702,10 @@ fullsigtype:     scope TOKEN sigtype     {
 sigtype:       TOKEN '(' tokenlist ')'         {
                        gtktypes = g_list_prepend(gtktypes, debool ($<id>1));
                                                }
+       |       TOKEN STRING '(' tokenlist ')'          {
+                       gtktypes = g_list_prepend(gtktypes, debool ($<id>1));
+                       signal_name=$<id>2;
+                                               }
        ;
 
 tokenlist:     tokenlist ',' TOKEN             {