type = (Type *)new_type(0,g_strdup("void"));
}
+ /* a complicated and ugly test to figure out if we have
+ the wrong number of types for a signal */
+ if((scope == SIGNAL_FIRST_METHOD ||
+ scope == SIGNAL_LAST_METHOD ||
+ scope == PRIVATE_SIGNAL_FIRST_METHOD ||
+ scope == PRIVATE_SIGNAL_LAST_METHOD) &&
+ g_list_length(gtktypes) != g_list_length(funcargs) &&
+ !(g_list_length(funcargs) == 1 &&
+ g_list_length(gtktypes) == 2 &&
+ strcmp(gtktypes->next->data,"NONE")==0)) {
+ print_error(TRUE, _("The number of GTK arguments and "
+ "function arguments for a signal "
+ "don't seem to match"),line_no);
+ }
node = new_method(scope,type,oid,gtktypes,id,funcargs,
onerror,cbuf,line_no,ccode_line,vararg);
gtktypes = NULL;
}
-#line 160 "parse.y"
+#line 174 "parse.y"
typedef union {
char *id;
GString *cbuf;
#if YYDEBUG != 0
static const short yyrline[] = { 0,
- 179, 180, 181, 182, 185, 189, 193, 197, 203, 210,
- 215, 216, 217, 218, 219, 220, 223, 226, 230, 259,
- 285, 286, 289, 292, 298, 299, 307, 311, 318, 321,
- 324, 327, 330, 333, 336, 339, 342, 345, 349, 352,
- 357, 360, 363, 366, 369, 374, 377, 380, 385, 386,
- 389, 401, 413, 416, 428, 433, 438, 441, 446, 447,
- 451, 461, 471, 481, 487, 492, 497, 518, 519, 523,
- 524, 527, 528, 539, 549, 552, 553, 556, 557, 560,
- 563, 573, 574, 577, 590, 594, 598, 602, 606, 610,
- 616, 617, 621
+ 193, 194, 195, 196, 199, 203, 207, 211, 217, 224,
+ 229, 230, 231, 232, 233, 234, 237, 240, 244, 273,
+ 299, 300, 303, 306, 312, 313, 321, 325, 332, 335,
+ 338, 341, 344, 347, 350, 353, 356, 359, 363, 366,
+ 371, 374, 377, 380, 383, 388, 391, 394, 399, 400,
+ 403, 415, 427, 430, 442, 447, 452, 455, 460, 461,
+ 465, 475, 485, 495, 501, 506, 511, 532, 533, 537,
+ 538, 541, 542, 553, 563, 566, 567, 570, 571, 574,
+ 577, 587, 588, 591, 604, 608, 612, 616, 620, 624,
+ 630, 631, 635
};
#endif
switch (yyn) {
case 1:
-#line 179 "parse.y"
+#line 193 "parse.y"
{ ; ;
break;}
case 2:
-#line 180 "parse.y"
+#line 194 "parse.y"
{ ; ;
break;}
case 3:
-#line 181 "parse.y"
+#line 195 "parse.y"
{ ; ;
break;}
case 4:
-#line 182 "parse.y"
+#line 196 "parse.y"
{ ; ;
break;}
case 5:
-#line 185 "parse.y"
+#line 199 "parse.y"
{
Node *node = new_ccode(FALSE,yyvsp[0].cbuf,ccode_line);
nodes = g_list_append(nodes,node);
;
break;}
case 6:
-#line 189 "parse.y"
+#line 203 "parse.y"
{
Node *node = new_ccode(TRUE,yyvsp[0].cbuf,ccode_line);
nodes = g_list_append(nodes,node);
;
break;}
case 7:
-#line 193 "parse.y"
+#line 207 "parse.y"
{
Node *node = new_ccode(FALSE,yyvsp[0].cbuf,ccode_line);
nodes = g_list_append(nodes,node);
;
break;}
case 8:
-#line 197 "parse.y"
+#line 211 "parse.y"
{
Node *node = new_ccode(TRUE,yyvsp[0].cbuf,ccode_line);
nodes = g_list_append(nodes,node);
;
break;}
case 9:
-#line 203 "parse.y"
+#line 217 "parse.y"
{
((Class *)class)->nodes = class_nodes;
class_nodes = NULL;
;
break;}
case 10:
-#line 210 "parse.y"
+#line 224 "parse.y"
{
class = new_class(yyvsp[-2].id,yyvsp[0].id,NULL);
;
break;}
case 11:
-#line 215 "parse.y"
+#line 229 "parse.y"
{ ; ;
break;}
case 12:
-#line 216 "parse.y"
+#line 230 "parse.y"
{ ; ;
break;}
case 13:
-#line 217 "parse.y"
+#line 231 "parse.y"
{ ; ;
break;}
case 14:
-#line 218 "parse.y"
+#line 232 "parse.y"
{ ; ;
break;}
case 15:
-#line 219 "parse.y"
+#line 233 "parse.y"
{ ; ;
break;}
case 16:
-#line 220 "parse.y"
+#line 234 "parse.y"
{ ; ;
break;}
case 17:
-#line 223 "parse.y"
+#line 237 "parse.y"
{
push_variable(yyvsp[-1].id,PUBLIC_SCOPE,yyvsp[-3].line);
;
break;}
case 18:
-#line 226 "parse.y"
+#line 240 "parse.y"
{
push_variable(yyvsp[-1].id,PRIVATE_SCOPE,yyvsp[-3].line);
;
break;}
case 19:
-#line 230 "parse.y"
+#line 244 "parse.y"
{
if(strcmp(yyvsp[-6].id,"get")==0 &&
strcmp(yyvsp[-3].id,"set")==0) {
;
break;}
case 20:
-#line 259 "parse.y"
+#line 273 "parse.y"
{
if(strcmp(yyvsp[-3].id,"get")==0) {
Node *node;
;
break;}
case 21:
-#line 285 "parse.y"
+#line 299 "parse.y"
{ yyval.list = yyvsp[-1].list; ;
break;}
case 22:
-#line 286 "parse.y"
+#line 300 "parse.y"
{ yyval.list = NULL; ;
break;}
case 23:
-#line 289 "parse.y"
+#line 303 "parse.y"
{
yyval.list = g_list_append(yyvsp[0].list,yyvsp[-2].id);
;
break;}
case 24:
-#line 292 "parse.y"
+#line 306 "parse.y"
{
yyval.list = g_list_append(NULL,yyvsp[0].id);
;
break;}
case 25:
-#line 298 "parse.y"
+#line 312 "parse.y"
{ ; ;
break;}
case 26:
-#line 299 "parse.y"
+#line 313 "parse.y"
{
Type *type = typestack->data;
char *oldname = type->name;
;
break;}
case 27:
-#line 307 "parse.y"
+#line 321 "parse.y"
{
Node *node = new_type(0,yyvsp[0].id);
typestack = g_list_prepend(typestack,node);
;
break;}
case 28:
-#line 311 "parse.y"
+#line 325 "parse.y"
{
Node *node = new_type(stars,yyvsp[-1].id);
stars = 0;
;
break;}
case 29:
-#line 318 "parse.y"
+#line 332 "parse.y"
{
yyval.id = g_strconcat("unsigned ",yyvsp[0].id,NULL);
;
break;}
case 30:
-#line 321 "parse.y"
+#line 335 "parse.y"
{
yyval.id = g_strconcat("signed ",yyvsp[0].id,NULL);
;
break;}
case 31:
-#line 324 "parse.y"
+#line 338 "parse.y"
{
yyval.id = g_strdup(yyvsp[0].id);
;
break;}
case 32:
-#line 327 "parse.y"
+#line 341 "parse.y"
{
yyval.id = g_strdup("unsigned char");
;
break;}
case 33:
-#line 330 "parse.y"
+#line 344 "parse.y"
{
yyval.id = g_strdup("signed char");
;
break;}
case 34:
-#line 333 "parse.y"
+#line 347 "parse.y"
{
yyval.id = g_strdup("char");
;
break;}
case 35:
-#line 336 "parse.y"
+#line 350 "parse.y"
{
yyval.id = g_strdup("double");
;
break;}
case 36:
-#line 339 "parse.y"
+#line 353 "parse.y"
{
yyval.id = g_strdup("float");
;
break;}
case 37:
-#line 342 "parse.y"
+#line 356 "parse.y"
{
yyval.id = yyvsp[0].id;
;
break;}
case 38:
-#line 345 "parse.y"
+#line 359 "parse.y"
{
yyval.id = g_strconcat(yyvsp[-1].id,yyvsp[0].id,NULL);
g_free(yyvsp[0].id);
;
break;}
case 39:
-#line 349 "parse.y"
+#line 363 "parse.y"
{
yyval.id = yyvsp[0].id;
;
break;}
case 40:
-#line 352 "parse.y"
+#line 366 "parse.y"
{
yyval.id = g_strdup("void");
;
break;}
case 41:
-#line 357 "parse.y"
+#line 371 "parse.y"
{
yyval.id = "long int";
;
break;}
case 42:
-#line 360 "parse.y"
+#line 374 "parse.y"
{
yyval.id = "long";
;
break;}
case 43:
-#line 363 "parse.y"
+#line 377 "parse.y"
{
yyval.id = "short int";
;
break;}
case 44:
-#line 366 "parse.y"
+#line 380 "parse.y"
{
yyval.id = "short";
;
break;}
case 45:
-#line 369 "parse.y"
+#line 383 "parse.y"
{
yyval.id = "int";
;
break;}
case 46:
-#line 374 "parse.y"
+#line 388 "parse.y"
{
yyval.id = "enum ";
;
break;}
case 47:
-#line 377 "parse.y"
+#line 391 "parse.y"
{
yyval.id = "union ";
;
break;}
case 48:
-#line 380 "parse.y"
+#line 394 "parse.y"
{
yyval.id = "struct ";
;
break;}
case 49:
-#line 385 "parse.y"
+#line 399 "parse.y"
{ stars++; ;
break;}
case 50:
-#line 386 "parse.y"
+#line 400 "parse.y"
{ stars++; ;
break;}
case 51:
-#line 389 "parse.y"
+#line 403 "parse.y"
{
if(strcmp(yyvsp[-1].id,"first")==0)
yyval.sigtype = PRIVATE_SIGNAL_FIRST_METHOD;
;
break;}
case 52:
-#line 401 "parse.y"
+#line 415 "parse.y"
{
if(strcmp(yyvsp[-2].id,"first")==0)
yyval.sigtype = PRIVATE_SIGNAL_FIRST_METHOD;
;
break;}
case 53:
-#line 413 "parse.y"
+#line 427 "parse.y"
{
yyval.sigtype = PRIVATE_SIGNAL_LAST_METHOD;
;
break;}
case 54:
-#line 416 "parse.y"
+#line 430 "parse.y"
{
if(strcmp(yyvsp[-1].id,"first")==0)
yyval.sigtype = SIGNAL_FIRST_METHOD;
;
break;}
case 55:
-#line 428 "parse.y"
+#line 442 "parse.y"
{
yyval.sigtype = SIGNAL_LAST_METHOD;
;
break;}
case 56:
-#line 433 "parse.y"
+#line 447 "parse.y"
{
gtktypes = g_list_prepend(gtktypes,yyvsp[-3].id);
;
break;}
case 57:
-#line 438 "parse.y"
+#line 452 "parse.y"
{
gtktypes = g_list_append(gtktypes,yyvsp[0].id);
;
break;}
case 58:
-#line 441 "parse.y"
+#line 455 "parse.y"
{
gtktypes = g_list_append(gtktypes,yyvsp[0].id);
;
break;}
case 59:
-#line 446 "parse.y"
+#line 460 "parse.y"
{ yyval.cbuf=yyvsp[0].cbuf; ;
break;}
case 60:
-#line 447 "parse.y"
+#line 461 "parse.y"
{ yyval.cbuf = NULL; ;
break;}
case 61:
-#line 451 "parse.y"
+#line 465 "parse.y"
{
if(!has_self) {
yyerror(_("signal without 'self' as "
;
break;}
case 62:
-#line 461 "parse.y"
+#line 475 "parse.y"
{
if(!has_self) {
yyerror(_("virtual method without 'self' as "
;
break;}
case 63:
-#line 471 "parse.y"
+#line 485 "parse.y"
{
if(!has_self) {
yyerror(_("virtual method without 'self' as "
;
break;}
case 64:
-#line 481 "parse.y"
+#line 495 "parse.y"
{
push_function(OVERRIDE_METHOD, yyvsp[-9].id,
yyvsp[-6].id, yyvsp[-2].id, yyvsp[0].cbuf,
;
break;}
case 65:
-#line 487 "parse.y"
+#line 501 "parse.y"
{
push_function(PUBLIC_SCOPE, NULL, yyvsp[-6].id,
yyvsp[-2].id, yyvsp[0].cbuf,yyvsp[-8].line,yyvsp[-1].line,
;
break;}
case 66:
-#line 492 "parse.y"
+#line 506 "parse.y"
{
push_function(PRIVATE_SCOPE, NULL, yyvsp[-6].id,
yyvsp[-2].id, yyvsp[0].cbuf,yyvsp[-8].line,yyvsp[-1].line,
;
break;}
case 67:
-#line 497 "parse.y"
+#line 511 "parse.y"
{
if(strcmp(yyvsp[-4].id,"init")==0) {
push_init_arg(yyvsp[-2].id,FALSE);
;
break;}
case 68:
-#line 518 "parse.y"
+#line 532 "parse.y"
{ yyval.id = yyvsp[0].id; ;
break;}
case 69:
-#line 519 "parse.y"
+#line 533 "parse.y"
{
yyval.id = (yyvsp[0].cbuf)->str;
g_string_free(yyvsp[0].cbuf,FALSE);
;
break;}
case 70:
-#line 523 "parse.y"
+#line 537 "parse.y"
{ ; ;
break;}
case 71:
-#line 524 "parse.y"
+#line 538 "parse.y"
{ yyval.id = NULL; ;
break;}
case 72:
-#line 527 "parse.y"
+#line 541 "parse.y"
{ vararg = FALSE; has_self = FALSE; ;
break;}
case 73:
-#line 528 "parse.y"
+#line 542 "parse.y"
{
vararg = FALSE;
has_self = TRUE;
;
break;}
case 74:
-#line 539 "parse.y"
+#line 553 "parse.y"
{
has_self = TRUE;
if(strcmp(yyvsp[-2].id,"self")==0)
;
break;}
case 75:
-#line 549 "parse.y"
+#line 563 "parse.y"
{ has_self = FALSE; ;
break;}
case 76:
-#line 552 "parse.y"
+#line 566 "parse.y"
{ vararg = TRUE; ;
break;}
case 77:
-#line 553 "parse.y"
+#line 567 "parse.y"
{ vararg = FALSE; ;
break;}
case 78:
-#line 556 "parse.y"
+#line 570 "parse.y"
{ ; ;
break;}
case 79:
-#line 557 "parse.y"
+#line 571 "parse.y"
{ ; ;
break;}
case 80:
-#line 560 "parse.y"
+#line 574 "parse.y"
{
push_funcarg(yyvsp[0].id);
;
break;}
case 81:
-#line 563 "parse.y"
+#line 577 "parse.y"
{
if(strcmp(yyvsp[-2].id,"check")!=0) {
yyerror(_("parse error"));
;
break;}
case 82:
-#line 573 "parse.y"
+#line 587 "parse.y"
{ ; ;
break;}
case 83:
-#line 574 "parse.y"
+#line 588 "parse.y"
{ ; ;
break;}
case 84:
-#line 577 "parse.y"
+#line 591 "parse.y"
{
if(strcmp(yyvsp[0].id,"type")==0) {
Node *node = new_check(TYPE_CHECK,NULL);
;
break;}
case 85:
-#line 590 "parse.y"
+#line 604 "parse.y"
{
Node *node = new_check(GT_CHECK,yyvsp[0].id);
checks = g_list_append(checks,node);
;
break;}
case 86:
-#line 594 "parse.y"
+#line 608 "parse.y"
{
Node *node = new_check(LT_CHECK,yyvsp[0].id);
checks = g_list_append(checks,node);
;
break;}
case 87:
-#line 598 "parse.y"
+#line 612 "parse.y"
{
Node *node = new_check(GE_CHECK,yyvsp[0].id);
checks = g_list_append(checks,node);
;
break;}
case 88:
-#line 602 "parse.y"
+#line 616 "parse.y"
{
Node *node = new_check(LE_CHECK,yyvsp[0].id);
checks = g_list_append(checks,node);
;
break;}
case 89:
-#line 606 "parse.y"
+#line 620 "parse.y"
{
Node *node = new_check(EQ_CHECK,yyvsp[0].id);
checks = g_list_append(checks,node);
;
break;}
case 90:
-#line 610 "parse.y"
+#line 624 "parse.y"
{
Node *node = new_check(NE_CHECK,yyvsp[0].id);
checks = g_list_append(checks,node);
;
break;}
case 91:
-#line 616 "parse.y"
+#line 630 "parse.y"
{ yyval.id = yyvsp[0].id; ;
break;}
case 92:
-#line 617 "parse.y"
+#line 631 "parse.y"
{
yyval.id = g_strconcat("-",yyvsp[0].id,NULL);
g_free(yyvsp[0].id);
;
break;}
case 93:
-#line 621 "parse.y"
+#line 635 "parse.y"
{ yyval.id = yyvsp[0].id; ;
break;}
}
}
return 1;
}
-#line 624 "parse.y"
+#line 638 "parse.y"