+ }
+ break;
+
+ case 28:
+
+/* Line 1455 of yacc.c */
+#line 844 "parse.y"
+ {
+ if(strcmp((yyvsp[(2) - (5)].id),"chunks") == 0) {
+ g_free (chunk_size);
+ if(atoi((yyvsp[(3) - (5)].id)) != 0)
+ chunk_size = g_strdup((yyvsp[(3) - (5)].id));
+ else
+ chunk_size = NULL;
+ } else {
+ yyerror(_("parse error"));
+ YYERROR;
+ }
+ }
+ break;
+
+ case 29:
+
+/* Line 1455 of yacc.c */
+#line 856 "parse.y"
+ {
+ if (strcmp ((yyvsp[(2) - (6)].id), "GladeXML") == 0) {
+ glade_xml = TRUE;
+ add_construct_glade((yyvsp[(3) - (6)].id), (yyvsp[(4) - (6)].id), NULL);
+ } else {
+ yyerror(_("parse error"));
+ YYERROR;
+ }
+ }
+ break;
+
+ case 30:
+
+/* Line 1455 of yacc.c */
+#line 865 "parse.y"
+ {
+ if (strcmp ((yyvsp[(2) - (7)].id), "GladeXML") == 0) {
+ glade_xml = TRUE;
+ add_construct_glade((yyvsp[(3) - (7)].id), (yyvsp[(4) - (7)].id), (yyvsp[(5) - (7)].id));
+ } else {
+ yyerror(_("parse error"));
+ YYERROR;
+ }
+ }
+ break;
+
+ case 31:
+
+/* Line 1455 of yacc.c */
+#line 874 "parse.y"
+ {
+ if (strcmp ((yyvsp[(2) - (6)].id), "GladeXML") == 0) {
+ glade_xml = TRUE;
+ add_construct_glade((yyvsp[(3) - (6)].id), (yyvsp[(4) - (6)].id), NULL);
+ } else {
+ yyerror(_("parse error"));
+ YYERROR;
+ }
+ }
+ break;
+
+ case 32:
+
+/* Line 1455 of yacc.c */
+#line 883 "parse.y"
+ {
+ if (strcmp ((yyvsp[(2) - (7)].id), "GladeXML") == 0) {
+ glade_xml = TRUE;
+ add_construct_glade((yyvsp[(3) - (7)].id), (yyvsp[(4) - (7)].id), (yyvsp[(5) - (7)].id));
+ } else {
+ yyerror(_("parse error"));
+ YYERROR;
+ }
+ }
+ break;
+
+ case 33:
+
+/* Line 1455 of yacc.c */
+#line 894 "parse.y"
+ { ; }
+ break;
+
+ case 34:
+
+/* Line 1455 of yacc.c */
+#line 895 "parse.y"
+ { ; }
+ break;
+
+ case 35:
+
+/* Line 1455 of yacc.c */
+#line 898 "parse.y"
+ { ; }
+ break;
+
+ case 36:
+
+/* Line 1455 of yacc.c */
+#line 899 "parse.y"
+ {
+ if (strcmp ((yyvsp[(1) - (2)].id), "BonoboObject") != 0) {
+ g_free ((yyvsp[(1) - (2)].id));
+ yyerror (_("parse error"));
+ YYERROR;
+ }
+ g_free ((yyvsp[(1) - (2)].id));
+ last_added_method->bonobo_object_func = TRUE;
+ }
+ break;
+
+ case 37:
+
+/* Line 1455 of yacc.c */
+#line 908 "parse.y"
+ {
+ if (strcmp ((yyvsp[(1) - (3)].id), "interface") != 0) {
+ g_free ((yyvsp[(1) - (3)].id));
+ g_free ((yyvsp[(2) - (3)].id));
+ yyerror (_("parse error"));
+ YYERROR;
+ }
+ g_free ((yyvsp[(1) - (3)].id));
+ node_set ((Node *)last_added_method,
+ "interface:steal", (yyvsp[(2) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 38:
+
+/* Line 1455 of yacc.c */
+#line 920 "parse.y"
+ { ; }
+ break;
+
+ case 39:
+
+/* Line 1455 of yacc.c */
+#line 921 "parse.y"
+ { ; }
+ break;
+
+ case 40:
+
+/* Line 1455 of yacc.c */
+#line 922 "parse.y"
+ { ; }
+ break;
+
+ case 41:
+
+/* Line 1455 of yacc.c */
+#line 923 "parse.y"
+ { ; }
+ break;
+
+ case 42:
+
+/* Line 1455 of yacc.c */
+#line 926 "parse.y"
+ { the_scope = PUBLIC_SCOPE; }
+ break;
+
+ case 43:
+
+/* Line 1455 of yacc.c */
+#line 927 "parse.y"
+ { the_scope = PRIVATE_SCOPE; }
+ break;
+
+ case 44:
+
+/* Line 1455 of yacc.c */
+#line 928 "parse.y"
+ { the_scope = PROTECTED_SCOPE; }
+ break;
+
+ case 45:
+
+/* Line 1455 of yacc.c */
+#line 929 "parse.y"
+ { the_scope = CLASS_SCOPE; }
+ break;
+
+ case 46:
+
+/* Line 1455 of yacc.c */
+#line 932 "parse.y"
+ {
+ if (strcmp ((yyvsp[(1) - (2)].id), "destroywith") == 0) {
+ g_free ((yyvsp[(1) - (2)].id));
+ destructor_unref = FALSE;
+ destructor = (yyvsp[(2) - (2)].id);
+ destructor_line = line_no;
+ destructor_simple = TRUE;
+ } else if (strcmp ((yyvsp[(1) - (2)].id), "unrefwith") == 0) {
+ g_free ((yyvsp[(1) - (2)].id));
+ destructor_unref = TRUE;
+ destructor = (yyvsp[(2) - (2)].id);
+ destructor_line = line_no;
+ destructor_simple = TRUE;
+ } else {
+ g_free ((yyvsp[(1) - (2)].id));
+ g_free ((yyvsp[(2) - (2)].id));
+ yyerror (_("parse error"));
+ YYERROR;
+ }
+ }
+ break;
+
+ case 47:
+
+/* Line 1455 of yacc.c */
+#line 952 "parse.y"
+ {
+ if (strcmp ((yyvsp[(1) - (3)].id), "destroy") == 0) {
+ g_free((yyvsp[(1) - (3)].id));
+ destructor_unref = FALSE;
+ destructor = ((yyvsp[(3) - (3)].cbuf))->str;
+ g_string_free((yyvsp[(3) - (3)].cbuf), FALSE);
+ destructor_line = ccode_line;
+ destructor_simple = FALSE;
+ } else if (strcmp ((yyvsp[(1) - (3)].id), "unref") == 0) {
+ g_free ((yyvsp[(1) - (3)].id));
+ destructor_unref = TRUE;
+ destructor = ((yyvsp[(3) - (3)].cbuf))->str;
+ g_string_free ((yyvsp[(3) - (3)].cbuf), FALSE);
+ destructor_line = ccode_line;
+ destructor_simple = FALSE;
+ } else {
+ g_free ((yyvsp[(1) - (3)].id));
+ g_string_free ((yyvsp[(3) - (3)].cbuf), TRUE);
+ yyerror (_("parse error"));
+ YYERROR;
+ }
+ }
+ break;
+
+ case 48:
+
+/* Line 1455 of yacc.c */
+#line 976 "parse.y"
+ {
+ initializer = (yyvsp[(2) - (2)].id);
+ initializer_line = ccode_line;
+ }
+ break;
+
+ case 49:
+
+/* Line 1455 of yacc.c */
+#line 980 "parse.y"
+ {
+ initializer = ((yyvsp[(3) - (3)].cbuf))->str;
+ initializer_line = ccode_line;
+ g_string_free((yyvsp[(3) - (3)].cbuf), FALSE);
+ }
+ break;
+
+ case 50:
+
+/* Line 1455 of yacc.c */
+#line 988 "parse.y"
+ { ; }
+ break;
+
+ case 51:
+
+/* Line 1455 of yacc.c */
+#line 989 "parse.y"
+ { ; }
+ break;
+
+ case 52:
+
+/* Line 1455 of yacc.c */
+#line 990 "parse.y"
+ { destructor = NULL; }
+ break;
+
+ case 53:
+
+/* Line 1455 of yacc.c */
+#line 991 "parse.y"
+ { initializer = NULL; }
+ break;
+
+ case 54:
+
+/* Line 1455 of yacc.c */
+#line 992 "parse.y"
+ {
+ if (strcmp ((yyvsp[(1) - (1)].id), "GladeXML") == 0) {
+ glade_widget = TRUE;
+ } else {
+ yyerror(_("parse error"));
+ YYERROR;
+ }
+ }
+ break;
+
+ case 55:
+
+/* Line 1455 of yacc.c */
+#line 1000 "parse.y"
+ {
+ destructor = NULL;
+ initializer = NULL;
+ }
+ break;
+
+ case 56:
+
+/* Line 1455 of yacc.c */
+#line 1006 "parse.y"
+ {
+ push_variable((yyvsp[(3) - (5)].id), the_scope,(yyvsp[(1) - (5)].line), NULL);
+ }
+ break;
+
+ case 57:
+
+/* Line 1455 of yacc.c */
+#line 1009 "parse.y"
+ {
+ push_variable((yyvsp[(3) - (6)].id), the_scope, (yyvsp[(1) - (6)].line), (yyvsp[(4) - (6)].id));
+ }
+ break;
+
+ case 58:
+
+/* Line 1455 of yacc.c */
+#line 1014 "parse.y"
+ {
+ Node *node = NULL;
+ if(strcmp((yyvsp[(6) - (12)].id),"get")==0 &&
+ strcmp((yyvsp[(9) - (12)].id),"set")==0) {
+ Type *type = pop_type();
+ g_free ((yyvsp[(6) - (12)].id));
+ g_free ((yyvsp[(9) - (12)].id));
+ node = node_new (ARGUMENT_NODE,
+ "gtktype:steal", (yyvsp[(3) - (12)].id),
+ "atype:steal", type,
+ "flags:steal", (yyvsp[(2) - (12)].list),
+ "name:steal", (yyvsp[(4) - (12)].id),
+ "get:steal", ((yyvsp[(8) - (12)].cbuf))->str,
+ "get_line", (yyvsp[(7) - (12)].line),
+ "set:steal", ((yyvsp[(11) - (12)].cbuf))->str,
+ "set_line", (yyvsp[(10) - (12)].line),
+ "line_no", (yyvsp[(1) - (12)].line),
+ NULL);
+
+ class_nodes = g_list_append(class_nodes,node);
+
+ g_string_free ((yyvsp[(8) - (12)].cbuf), FALSE);
+ g_string_free ((yyvsp[(11) - (12)].cbuf), FALSE);
+
+ } else if(strcmp((yyvsp[(6) - (12)].id),"set")==0 &&
+ strcmp((yyvsp[(9) - (12)].id),"get")==0) {
+ Type *type = pop_type();
+ g_free ((yyvsp[(6) - (12)].id));
+ g_free ((yyvsp[(9) - (12)].id));
+ node = node_new (ARGUMENT_NODE,
+ "gtktype:steal", (yyvsp[(3) - (12)].id),
+ "atype:steal", type,
+ "flags:steal", (yyvsp[(2) - (12)].list),
+ "name:steal", (yyvsp[(4) - (12)].id),
+ "get:steal", ((yyvsp[(11) - (12)].cbuf))->str,
+ "get_line", (yyvsp[(10) - (12)].line),
+ "set:steal", ((yyvsp[(8) - (12)].cbuf))->str,
+ "set_line", (yyvsp[(7) - (12)].line),
+ "line_no", (yyvsp[(1) - (12)].line),
+ NULL);
+ g_string_free ((yyvsp[(11) - (12)].cbuf), FALSE);
+ g_string_free ((yyvsp[(8) - (12)].cbuf), FALSE);
+ class_nodes = g_list_append(class_nodes,node);
+ } else {
+ g_free ((yyvsp[(3) - (12)].id));
+ g_free ((yyvsp[(4) - (12)].id));
+ g_free ((yyvsp[(6) - (12)].id));
+ g_free ((yyvsp[(9) - (12)].id));
+ g_list_foreach ((yyvsp[(2) - (12)].list), (GFunc)g_free, NULL);
+ g_list_free ((yyvsp[(2) - (12)].list));
+ g_string_free ((yyvsp[(11) - (12)].cbuf), TRUE);
+ g_string_free ((yyvsp[(8) - (12)].cbuf), TRUE);
+ yyerror (_("parse error"));
+ YYERROR;
+ }
+
+ if ((yyvsp[(5) - (12)].id) != NULL) {
+ Argument *arg = (Argument *)node;
+ export_accessors (arg->name,
+ arg->get != NULL, arg->get_line,
+ arg->set != NULL, arg->set_line,
+ arg->atype,
+ arg->gtktype,
+ arg->line_no);
+ g_free ((yyvsp[(5) - (12)].id));
+ }
+
+ }
+ break;
+
+ case 59:
+
+/* Line 1455 of yacc.c */
+#line 1082 "parse.y"
+ {
+ Node *node = NULL;
+ if(strcmp((yyvsp[(6) - (9)].id), "get") == 0) {
+ Type *type = pop_type();
+ g_free ((yyvsp[(6) - (9)].id));
+ node = node_new (ARGUMENT_NODE,
+ "gtktype:steal", (yyvsp[(3) - (9)].id),
+ "atype:steal", type,
+ "flags:steal", (yyvsp[(2) - (9)].list),
+ "name:steal", (yyvsp[(4) - (9)].id),
+ "get:steal", ((yyvsp[(8) - (9)].cbuf))->str,
+ "get_line", (yyvsp[(7) - (9)].line),
+ "line_no", (yyvsp[(1) - (9)].line),
+ NULL);
+
+ g_string_free ((yyvsp[(8) - (9)].cbuf), FALSE);
+ class_nodes = g_list_append(class_nodes, node);
+ } else if(strcmp((yyvsp[(6) - (9)].id), "set") == 0) {
+ Type *type = pop_type();
+ g_free ((yyvsp[(6) - (9)].id));
+ node = node_new (ARGUMENT_NODE,
+ "gtktype:steal", (yyvsp[(3) - (9)].id),
+ "atype:steal", type,
+ "flags:steal", (yyvsp[(2) - (9)].list),
+ "name:steal", (yyvsp[(4) - (9)].id),
+ "set:steal", ((yyvsp[(8) - (9)].cbuf))->str,
+ "set_line", (yyvsp[(7) - (9)].line),
+ "line_no", (yyvsp[(1) - (9)].line),
+ NULL);
+
+ g_string_free ((yyvsp[(8) - (9)].cbuf), FALSE);
+ class_nodes = g_list_append (class_nodes, node);
+ } else {
+ g_free ((yyvsp[(6) - (9)].id));
+ g_free ((yyvsp[(3) - (9)].id));
+ g_free ((yyvsp[(4) - (9)].id));
+ g_list_foreach ((yyvsp[(2) - (9)].list), (GFunc)g_free, NULL);
+ g_list_free ((yyvsp[(2) - (9)].list));
+ g_string_free ((yyvsp[(8) - (9)].cbuf), TRUE);
+ yyerror(_("parse error"));
+ YYERROR;
+ }
+
+ if ((yyvsp[(5) - (9)].id) != NULL) {
+ Argument *arg = (Argument *)node;
+ export_accessors (arg->name,
+ arg->get != NULL, arg->get_line,
+ arg->set != NULL, arg->set_line,
+ arg->atype,
+ arg->gtktype,
+ arg->line_no);
+ g_free ((yyvsp[(5) - (9)].id));
+ }
+ }
+ break;
+
+ case 60:
+
+/* Line 1455 of yacc.c */
+#line 1136 "parse.y"
+ {
+ Node *node;
+ char *get, *set = NULL;
+ Variable *var;
+ Type *type;
+ const char *root;
+
+ if(strcmp((yyvsp[(6) - (6)].id), "link")!=0 &&
+ strcmp((yyvsp[(6) - (6)].id), "stringlink")!=0 &&
+ strcmp((yyvsp[(6) - (6)].id), "objectlink")!=0) {
+ g_free((yyvsp[(6) - (6)].id));
+ g_free((yyvsp[(3) - (6)].id));
+ g_free((yyvsp[(4) - (6)].id));
+ g_list_foreach((yyvsp[(2) - (6)].list),(GFunc)g_free,NULL);
+ g_list_free((yyvsp[(2) - (6)].list));
+ yyerror(_("parse error"));
+ YYERROR;
+ }
+
+ type = pop_type();
+
+ var = find_var_or_die((yyvsp[(4) - (6)].id), (yyvsp[(1) - (6)].line));
+ if(var->scope == PRIVATE_SCOPE) {
+ root = "self->_priv";
+ } else if(var->scope == CLASS_SCOPE) {
+ root = "SELF_GET_CLASS(self)";
+ if(no_self_alias)
+ error_print(GOB_ERROR, (yyvsp[(1) - (6)].line),
+ _("Self aliases needed when autolinking to a classwide member"));
+ } else {
+ root = "self";
+ }
+
+ if(strcmp((yyvsp[(6) - (6)].id), "link")==0) {
+ set = g_strdup_printf("%s->%s = ARG;",
+ root, (yyvsp[(4) - (6)].id));
+ } else if(strcmp((yyvsp[(6) - (6)].id), "stringlink")==0) {
+ set = g_strdup_printf("g_free (%s->%s); "
+ "%s->%s = g_strdup (ARG);",
+ root, (yyvsp[(4) - (6)].id),
+ root, (yyvsp[(4) - (6)].id));
+ } else if(strcmp((yyvsp[(6) - (6)].id), "objectlink")==0) {
+ set = g_strdup_printf(
+ "if (ARG != NULL) "
+ "g_object_ref (G_OBJECT (ARG)); "
+ "if (%s->%s != NULL) "
+ "g_object_unref (G_OBJECT (%s->%s)); "
+ "%s->%s = ARG;",
+ root, (yyvsp[(4) - (6)].id),
+ root, (yyvsp[(4) - (6)].id),
+ root, (yyvsp[(4) - (6)].id));
+ } else {
+ g_assert_not_reached();
+ }
+
+ get = g_strdup_printf("ARG = %s->%s;", root, (yyvsp[(4) - (6)].id));
+
+ g_free ((yyvsp[(6) - (6)].id));
+
+ if (type == NULL)
+ type = (Type *)node_copy ((Node *)var->vtype);
+
+ node = node_new (ARGUMENT_NODE,
+ "gtktype:steal", (yyvsp[(3) - (6)].id),
+ "atype:steal", type,
+ "flags:steal", (yyvsp[(2) - (6)].list),
+ "name:steal", (yyvsp[(4) - (6)].id),
+ "get:steal", get,
+ "get_line", (yyvsp[(1) - (6)].line),
+ "set:steal", set,
+ "set_line", (yyvsp[(1) - (6)].line),
+ "line_no", (yyvsp[(1) - (6)].line),
+ NULL);
+
+ if ((yyvsp[(5) - (6)].id) != NULL) {
+ Argument *arg = (Argument *)node;
+ export_accessors (arg->name,
+ arg->get != NULL, arg->get_line,
+ arg->set != NULL, arg->set_line,
+ arg->atype,
+ arg->gtktype,
+ arg->line_no);
+ g_free ((yyvsp[(5) - (6)].id));
+ }
+
+ class_nodes = g_list_append (class_nodes, node);
+ }
+ break;
+
+ case 61:
+
+/* Line 1455 of yacc.c */
+#line 1225 "parse.y"
+ {
+ if (strcmp ((yyvsp[(2) - (3)].id), "export")!=0) {
+ g_free ((yyvsp[(2) - (3)].id));
+ yyerror (_("parse error"));
+ YYERROR;
+ }
+ (yyval.id) = (yyvsp[(2) - (3)].id);
+ }
+ break;
+
+ case 62:
+
+/* Line 1455 of yacc.c */
+#line 1233 "parse.y"
+ {
+ (yyval.id) = NULL;
+ }
+ break;
+
+ case 63:
+
+/* Line 1455 of yacc.c */
+#line 1238 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "line_no", (yyvsp[(1) - (11)].line),
+ "gtktype:steal", debool ((yyvsp[(2) - (11)].id)),
+ "name:steal", (yyvsp[(3) - (11)].id),
+ NULL);
+ if (strcmp ((yyvsp[(5) - (11)].id), "get") == 0 &&
+ strcmp ((yyvsp[(8) - (11)].id), "set") == 0) {
+ node_set ((Node *)property,
+ "get:steal", ((yyvsp[(7) - (11)].cbuf))->str,
+ "get_line", (yyvsp[(6) - (11)].line),
+ "set:steal", ((yyvsp[(10) - (11)].cbuf))->str,
+ "set_line", (yyvsp[(9) - (11)].line),
+ NULL);
+ g_string_free ((yyvsp[(7) - (11)].cbuf), FALSE);
+ g_string_free ((yyvsp[(10) - (11)].cbuf), FALSE);
+ g_free ((yyvsp[(5) - (11)].id));
+ g_free ((yyvsp[(8) - (11)].id));
+ } else if (strcmp ((yyvsp[(5) - (11)].id), "set") == 0 &&
+ strcmp ((yyvsp[(8) - (11)].id), "get") == 0) {
+ node_set ((Node *)property,
+ "get:steal", ((yyvsp[(10) - (11)].cbuf))->str,
+ "get_line", (yyvsp[(9) - (11)].line),
+ "set:steal", ((yyvsp[(7) - (11)].cbuf))->str,
+ "set_line", (yyvsp[(6) - (11)].line),
+ NULL);
+ g_string_free ((yyvsp[(7) - (11)].cbuf), FALSE);
+ g_string_free ((yyvsp[(10) - (11)].cbuf), FALSE);
+ g_free ((yyvsp[(5) - (11)].id));
+ g_free ((yyvsp[(8) - (11)].id));
+ } else {
+ g_string_free ((yyvsp[(7) - (11)].cbuf), TRUE);
+ g_string_free ((yyvsp[(10) - (11)].cbuf), TRUE);
+ g_free ((yyvsp[(5) - (11)].id));
+ g_free ((yyvsp[(8) - (11)].id));
+ node_free ((Node *)property);
+ property = NULL;
+ yyerror (_("parse error"));
+ YYERROR;
+ }
+ property_link_and_export ((Node *)property);
+ if (property != NULL) {
+ class_nodes = g_list_append (class_nodes,
+ property);
+ property = NULL;
+ }
+ }
+ break;
+
+ case 64:
+
+/* Line 1455 of yacc.c */
+#line 1286 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "line_no", (yyvsp[(1) - (8)].line),
+ "gtktype:steal", debool ((yyvsp[(2) - (8)].id)),
+ "name:steal", (yyvsp[(3) - (8)].id),
+ NULL);
+ if (strcmp ((yyvsp[(5) - (8)].id), "get") == 0) {
+ node_set ((Node *)property,
+ "get:steal", ((yyvsp[(7) - (8)].cbuf))->str,
+ "get_line", (yyvsp[(6) - (8)].line),
+ NULL);
+ g_string_free ((yyvsp[(7) - (8)].cbuf), FALSE);
+ g_free ((yyvsp[(5) - (8)].id));
+ } else if (strcmp ((yyvsp[(5) - (8)].id), "set") == 0) {
+ node_set ((Node *)property,
+ "set:steal", ((yyvsp[(7) - (8)].cbuf))->str,
+ "set_line", (yyvsp[(6) - (8)].line),
+ NULL);
+ g_string_free ((yyvsp[(7) - (8)].cbuf), FALSE);
+ g_free ((yyvsp[(5) - (8)].id));
+ } else {
+ g_string_free ((yyvsp[(7) - (8)].cbuf), TRUE);
+ g_free ((yyvsp[(5) - (8)].id));
+ node_free ((Node *)property);
+ property = NULL;
+ yyerror (_("parse error"));
+ YYERROR;
+ }
+ property_link_and_export ((Node *)property);
+ if (property != NULL) {
+ class_nodes = g_list_append (class_nodes,
+ property);
+ property = NULL;
+ }
+ }
+ break;
+
+ case 65:
+
+/* Line 1455 of yacc.c */
+#line 1322 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "line_no", (yyvsp[(1) - (5)].line),
+ "gtktype:steal", debool ((yyvsp[(2) - (5)].id)),
+ "name:steal", (yyvsp[(3) - (5)].id),
+ NULL);
+ property_link_and_export ((Node *)property);
+ if (property != NULL) {
+ class_nodes = g_list_append (class_nodes,
+ property);
+ property = NULL;
+ }
+ }
+ break;
+
+ case 66:
+
+/* Line 1455 of yacc.c */
+#line 1338 "parse.y"
+ { ; }
+ break;
+
+ case 67:
+
+/* Line 1455 of yacc.c */
+#line 1339 "parse.y"
+ { ; }
+ break;
+
+ case 68:
+
+/* Line 1455 of yacc.c */
+#line 1342 "parse.y"
+ { ; }
+ break;
+
+ case 69:
+
+/* Line 1455 of yacc.c */
+#line 1343 "parse.y"
+ { ; }
+ break;
+
+ case 70:
+
+/* Line 1455 of yacc.c */
+#line 1346 "parse.y"
+ { (yyval.id) = (yyvsp[(1) - (1)].id); }
+ break;
+
+ case 71:
+
+/* Line 1455 of yacc.c */
+#line 1347 "parse.y"
+ {
+ if (strcmp ((yyvsp[(1) - (4)].id), "_") != 0) {
+ g_free ((yyvsp[(1) - (4)].id));
+ yyerror(_("parse error"));
+ YYERROR;
+ }
+ g_free ((yyvsp[(1) - (4)].id));
+ (yyval.id) = g_strconcat ("_(", (yyvsp[(3) - (4)].id), ")", NULL);
+ g_free ((yyvsp[(3) - (4)].id));
+ }
+ break;
+
+ case 72:
+
+/* Line 1455 of yacc.c */
+#line 1359 "parse.y"
+ { (yyval.id) = (yyvsp[(1) - (1)].id); }
+ break;
+
+ case 73:
+
+/* Line 1455 of yacc.c */
+#line 1360 "parse.y"
+ { (yyval.id) = (yyvsp[(1) - (1)].id); }
+ break;
+
+ case 74:
+
+/* Line 1455 of yacc.c */
+#line 1363 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "nick:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 75:
+
+/* Line 1455 of yacc.c */
+#line 1369 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "blurb:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 76:
+
+/* Line 1455 of yacc.c */
+#line 1375 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "maximum:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 77:
+
+/* Line 1455 of yacc.c */
+#line 1381 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "minimum:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 78:
+
+/* Line 1455 of yacc.c */
+#line 1387 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "default_value:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 79:
+
+/* Line 1455 of yacc.c */
+#line 1393 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "flags:steal", (yyvsp[(3) - (3)].list),
+ NULL);
+ }
+ break;
+
+ case 80:
+
+/* Line 1455 of yacc.c */
+#line 1399 "parse.y"
+ {
+ Type *type = pop_type ();
+ ensure_property ();
+ node_set ((Node *)property,
+ "ptype:steal", type,
+ NULL);
+ }
+ break;
+
+ case 81:
+
+/* Line 1455 of yacc.c */
+#line 1406 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "extra_gtktype:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 82:
+
+/* Line 1455 of yacc.c */
+#line 1412 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "extra_gtktype:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 83:
+
+/* Line 1455 of yacc.c */
+#line 1418 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "extra_gtktype:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 84:
+
+/* Line 1455 of yacc.c */
+#line 1424 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "extra_gtktype:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 85:
+
+/* Line 1455 of yacc.c */
+#line 1430 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "extra_gtktype:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 86:
+
+/* Line 1455 of yacc.c */
+#line 1436 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "extra_gtktype:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 87:
+
+/* Line 1455 of yacc.c */
+#line 1442 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "extra_gtktype:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 88:
+
+/* Line 1455 of yacc.c */
+#line 1448 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "extra_gtktype:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 89:
+
+/* Line 1455 of yacc.c */
+#line 1454 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "extra_gtktype:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 90:
+
+/* Line 1455 of yacc.c */
+#line 1460 "parse.y"
+ {
+ ensure_property ();
+ node_set ((Node *)property,
+ "extra_gtktype:steal", (yyvsp[(3) - (3)].id),
+ NULL);
+ }
+ break;
+
+ case 91:
+
+/* Line 1455 of yacc.c */
+#line 1466 "parse.y"
+ {
+ ensure_property ();
+ if (strcmp ((yyvsp[(1) - (1)].id), "override") == 0) {
+ g_free((yyvsp[(1) - (1)].id));
+ node_set ((Node *)property,
+ "override", TRUE,
+ NULL);
+ } else if (strcmp ((yyvsp[(1) - (1)].id), "link") == 0) {
+ g_free((yyvsp[(1) - (1)].id));
+ node_set ((Node *)property,
+ "link", TRUE,
+ NULL);
+ } else if (strcmp ((yyvsp[(1) - (1)].id), "export") == 0) {
+ g_free((yyvsp[(1) - (1)].id));
+ node_set ((Node *)property,
+ "export", TRUE,
+ NULL);
+ } else {
+ g_free((yyvsp[(1) - (1)].id));
+ yyerror(_("parse error"));
+ YYERROR;
+ }
+ }
+ break;
+
+ case 92:
+
+/* Line 1455 of yacc.c */
+#line 1491 "parse.y"
+ {
+ if(strcmp((yyvsp[(3) - (5)].id),"type")!=0) {
+ g_free((yyvsp[(1) - (5)].id));
+ g_free((yyvsp[(3) - (5)].id));
+ yyerror(_("parse error"));
+ YYERROR;
+ }
+ (yyval.id) = debool ((yyvsp[(1) - (5)].id));
+ }
+ break;
+
+ case 93:
+
+/* Line 1455 of yacc.c */
+#line 1500 "parse.y"
+ {
+ (yyval.id) = debool ((yyvsp[(1) - (1)].id));
+ typestack = g_list_prepend(typestack,NULL);
+ }
+ break;
+
+ case 94:
+
+/* Line 1455 of yacc.c */
+#line 1506 "parse.y"
+ { (yyval.list) = (yyvsp[(2) - (3)].list); }
+ break;
+
+ case 95:
+
+/* Line 1455 of yacc.c */
+#line 1507 "parse.y"
+ { (yyval.list) = NULL; }
+ break;
+
+ case 96:
+
+/* Line 1455 of yacc.c */
+#line 1510 "parse.y"
+ {
+ (yyval.list) = g_list_append((yyvsp[(3) - (3)].list),(yyvsp[(1) - (3)].id));
+ }
+ break;
+
+ case 97:
+
+/* Line 1455 of yacc.c */
+#line 1513 "parse.y"
+ {
+ (yyval.list) = g_list_append(NULL,(yyvsp[(1) - (1)].id));
+ }
+ break;
+
+ case 98:
+
+/* Line 1455 of yacc.c */
+#line 1519 "parse.y"
+ {
+ Node *node = node_new (TYPE_NODE,
+ "name:steal", (yyvsp[(1) - (2)].id),
+ "pointer:steal", (yyvsp[(2) - (2)].id),
+ NULL);
+ typestack = g_list_prepend(typestack,node);
+ }
+ break;
+
+ case 99:
+
+/* Line 1455 of yacc.c */
+#line 1526 "parse.y"
+ {
+ Node *node = node_new (TYPE_NODE,
+ "name:steal", (yyvsp[(1) - (1)].id),
+ NULL);
+ typestack = g_list_prepend(typestack,node);
+ }
+ break;
+
+ case 100:
+
+/* Line 1455 of yacc.c */
+#line 1535 "parse.y"
+ {
+ (yyval.id) = (yyvsp[(1) - (1)].id);
+ }
+ break;
+
+ case 101:
+
+/* Line 1455 of yacc.c */
+#line 1538 "parse.y"
+ {
+ (yyval.id) = (yyvsp[(1) - (1)].id);
+ }
+ break;
+
+ case 102:
+
+/* Line 1455 of yacc.c */
+#line 1541 "parse.y"
+ {
+ (yyval.id) = g_strconcat("const ", (yyvsp[(2) - (2)].id), NULL);
+ g_free((yyvsp[(2) - (2)].id));
+ }
+ break;
+
+ case 103:
+
+/* Line 1455 of yacc.c */
+#line 1545 "parse.y"
+ {
+ (yyval.id) = g_strconcat((yyvsp[(1) - (2)].id), " const", NULL);
+ g_free((yyvsp[(1) - (2)].id));
+ }
+ break;
+
+ case 104:
+
+/* Line 1455 of yacc.c */
+#line 1549 "parse.y"
+ {
+ (yyval.id) = g_strconcat((yyvsp[(1) - (2)].id), " ", (yyvsp[(2) - (2)].id), NULL);
+ g_free((yyvsp[(2) - (2)].id));
+ }
+ break;
+
+ case 105:
+
+/* Line 1455 of yacc.c */
+#line 1553 "parse.y"
+ {
+ (yyval.id) = g_strconcat("const ", (yyvsp[(2) - (3)].id), " ",
+ (yyvsp[(3) - (3)].id), NULL);
+ g_free((yyvsp[(3) - (3)].id));
+ }
+ break;
+
+ case 106:
+
+/* Line 1455 of yacc.c */
+#line 1558 "parse.y"
+ {
+ (yyval.id) = g_strconcat((yyvsp[(1) - (3)].id), " ",
+ (yyvsp[(2) - (3)].id), " const", NULL);
+ g_free((yyvsp[(2) - (3)].id));
+ }
+ break;
+
+ case 107:
+
+/* Line 1455 of yacc.c */
+#line 1566 "parse.y"
+ {
+ (yyval.id) = g_strconcat((yyvsp[(1) - (2)].id), " ", (yyvsp[(2) - (2)].id), NULL);
+ g_free((yyvsp[(2) - (2)].id));
+ }
+ break;
+
+ case 108:
+
+/* Line 1455 of yacc.c */
+#line 1570 "parse.y"
+ {
+ (yyval.id) = g_strconcat((yyvsp[(1) - (2)].id), " ", (yyvsp[(2) - (2)].id), NULL);
+ g_free((yyvsp[(1) - (2)].id));
+ g_free((yyvsp[(2) - (2)].id));
+ }
+ break;
+
+ case 109:
+
+/* Line 1455 of yacc.c */
+#line 1575 "parse.y"
+ {
+ (yyval.id) = g_strconcat("const ", (yyvsp[(2) - (2)].id), NULL);
+ g_free((yyvsp[(2) - (2)].id));
+ }
+ break;
+
+ case 110:
+
+/* Line 1455 of yacc.c */
+#line 1579 "parse.y"
+ {
+ (yyval.id) = (yyvsp[(1) - (1)].id);
+ }
+ break;
+
+ case 111:
+
+/* Line 1455 of yacc.c */
+#line 1582 "parse.y"
+ {
+ (yyval.id) = g_strconcat((yyvsp[(1) - (2)].id), " const", NULL);
+ g_free((yyvsp[(1) - (2)].id));
+ }
+ break;
+
+ case 112:
+
+/* Line 1455 of yacc.c */
+#line 1586 "parse.y"
+ {
+ (yyval.id) = g_strdup((yyvsp[(1) - (1)].id));
+ }
+ break;
+
+ case 113:
+
+/* Line 1455 of yacc.c */
+#line 1589 "parse.y"
+ {
+ (yyval.id) = g_strconcat((yyvsp[(1) - (2)].id), " const", NULL);
+ }
+ break;
+
+ case 114:
+
+/* Line 1455 of yacc.c */
+#line 1594 "parse.y"
+ { (yyval.id) = "void"; }
+ break;
+
+ case 115:
+
+/* Line 1455 of yacc.c */
+#line 1595 "parse.y"
+ { (yyval.id) = "char"; }
+ break;
+
+ case 116:
+
+/* Line 1455 of yacc.c */
+#line 1596 "parse.y"
+ { (yyval.id) = "short"; }
+ break;
+
+ case 117:
+
+/* Line 1455 of yacc.c */
+#line 1597 "parse.y"
+ { (yyval.id) = "int"; }
+ break;
+
+ case 118:
+
+/* Line 1455 of yacc.c */
+#line 1598 "parse.y"
+ { (yyval.id) = "long"; }
+ break;
+
+ case 119:
+
+/* Line 1455 of yacc.c */
+#line 1599 "parse.y"
+ { (yyval.id) = "float"; }
+ break;
+
+ case 120:
+
+/* Line 1455 of yacc.c */
+#line 1600 "parse.y"
+ { (yyval.id) = "double"; }
+ break;
+
+ case 121:
+
+/* Line 1455 of yacc.c */
+#line 1601 "parse.y"
+ { (yyval.id) = "signed"; }
+ break;
+
+ case 122:
+
+/* Line 1455 of yacc.c */
+#line 1602 "parse.y"
+ { (yyval.id) = "unsigned"; }
+ break;
+
+ case 123:
+
+/* Line 1455 of yacc.c */
+#line 1605 "parse.y"
+ { (yyval.id) = "struct"; }
+ break;
+
+ case 124:
+
+/* Line 1455 of yacc.c */
+#line 1606 "parse.y"
+ { (yyval.id) = "union"; }
+ break;
+
+ case 125:
+
+/* Line 1455 of yacc.c */
+#line 1607 "parse.y"
+ { (yyval.id) = "enum"; }
+ break;
+
+ case 126:
+
+/* Line 1455 of yacc.c */
+#line 1610 "parse.y"
+ { (yyval.id) = g_strdup("*"); }
+ break;
+
+ case 127:
+
+/* Line 1455 of yacc.c */
+#line 1611 "parse.y"
+ { (yyval.id) = g_strdup("* const"); }
+ break;
+
+ case 128:
+
+/* Line 1455 of yacc.c */
+#line 1612 "parse.y"
+ {
+ (yyval.id) = g_strconcat("*", (yyvsp[(2) - (2)].id), NULL);
+ g_free((yyvsp[(2) - (2)].id));
+ }
+ break;
+
+ case 129:
+
+/* Line 1455 of yacc.c */
+#line 1616 "parse.y"
+ {
+ (yyval.id) = g_strconcat("* const", (yyvsp[(3) - (3)].id), NULL);
+ g_free((yyvsp[(3) - (3)].id));
+ }
+ break;
+
+ case 130:
+
+/* Line 1455 of yacc.c */
+#line 1623 "parse.y"
+ {
+ if(strcmp((yyvsp[(1) - (2)].id), "first")==0)
+ (yyval.sigtype) = SIGNAL_FIRST_METHOD;
+ else if(strcmp((yyvsp[(1) - (2)].id), "last")==0)
+ (yyval.sigtype) = SIGNAL_LAST_METHOD;
+ else {