Mercurial > pidgin.yaz
comparison src/signals.c @ 6505:5ca59294698d
[gaim-migrate @ 7021]
Fixes signal passing. Arguments in C are pushed in reverse order, so
multiple calls to va_arg() in an argument list produce backwards
arguments.
committer: Tailor Script <tailor@pidgin.im>
author | Ethan Blanton <elb@pidgin.im> |
---|---|
date | Tue, 19 Aug 2003 19:46:58 +0000 |
parents | e5e8d21bd4d8 |
children | e74e378e86bf |
comparison
equal
deleted
inserted
replaced
6504:6467b992baac | 6505:5ca59294698d |
---|---|
439 | 439 |
440 void | 440 void |
441 gaim_marshal_VOID__POINTER(GaimCallback cb, va_list args, void *data, | 441 gaim_marshal_VOID__POINTER(GaimCallback cb, va_list args, void *data, |
442 void **return_val) | 442 void **return_val) |
443 { | 443 { |
444 ((void (*)(void *, void *))cb)(va_arg(args, void *), data); | 444 void *arg1 = va_arg(args, void *); |
445 | |
446 ((void (*)(void *, void *))cb)(arg1, data); | |
445 } | 447 } |
446 | 448 |
447 void | 449 void |
448 gaim_marshal_VOID__POINTER_POINTER(GaimCallback cb, va_list args, | 450 gaim_marshal_VOID__POINTER_POINTER(GaimCallback cb, va_list args, |
449 void *data, void **return_val) | 451 void *data, void **return_val) |
450 { | 452 { |
451 ((void (*)(void *, void *, void *))cb)(va_arg(args, void *), | 453 void *arg1 = va_arg(args, void *); |
452 va_arg(args, void *), | 454 void *arg2 = va_arg(args, void *); |
453 data); | 455 |
456 ((void (*)(void *, void *, void *))cb)(arg1, arg2, data); | |
454 } | 457 } |
455 | 458 |
456 void | 459 void |
457 gaim_marshal_VOID__POINTER_POINTER_UINT(GaimCallback cb, va_list args, | 460 gaim_marshal_VOID__POINTER_POINTER_UINT(GaimCallback cb, va_list args, |
458 void *data, void **return_val) | 461 void *data, void **return_val) |
459 { | 462 { |
460 ((void (*)(void *, void *, guint, void *))cb)(va_arg(args, void *), | 463 void *arg1 = va_arg(args, void *); |
461 va_arg(args, void *), | 464 void *arg2 = va_arg(args, void *); |
462 va_arg(args, guint), | 465 guint arg3 = va_arg(args, guint); |
463 data); | 466 |
467 ((void (*)(void *, void *, guint, void *))cb)(arg1, arg2, arg3, data); | |
464 } | 468 } |
465 | 469 |
466 void | 470 void |
467 gaim_marshal_VOID__POINTER_POINTER_POINTER(GaimCallback cb, va_list args, | 471 gaim_marshal_VOID__POINTER_POINTER_POINTER(GaimCallback cb, va_list args, |
468 void *data, void **return_val) | 472 void *data, void **return_val) |
469 { | 473 { |
470 ((void (*)(void *, void *, void *, void *))cb)(va_arg(args, void *), | 474 void *arg1 = va_arg(args, void *); |
471 va_arg(args, void *), | 475 void *arg2 = va_arg(args, void *); |
472 va_arg(args, void *), | 476 void *arg3 = va_arg(args, void *); |
473 data); | 477 |
478 ((void (*)(void *, void *, void *, void *))cb)(arg1, arg2, arg3, data); | |
474 } | 479 } |
475 | 480 |
476 void | 481 void |
477 gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER(GaimCallback cb, | 482 gaim_marshal_VOID__POINTER_POINTER_POINTER_POINTER(GaimCallback cb, |
478 va_list args, | 483 va_list args, |
479 void *data, | 484 void *data, |
480 void **return_val) | 485 void **return_val) |
481 { | 486 { |
482 ((void (*)(void *, void *, void *, void *, void *))cb)( | 487 void *arg1 = va_arg(args, void *); |
483 va_arg(args, void *), va_arg(args, void *), | 488 void *arg2 = va_arg(args, void *); |
484 va_arg(args, void *), va_arg(args, void *), data); | 489 void *arg3 = va_arg(args, void *); |
490 void *arg4 = va_arg(args, void *); | |
491 | |
492 ((void (*)(void *, void *, void *, void *, void *))cb)(arg1, arg2, arg3, arg4, data); | |
485 } | 493 } |
486 void | 494 void |
487 gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT(GaimCallback cb, | 495 gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT(GaimCallback cb, |
488 va_list args, | 496 va_list args, |
489 void *data, | 497 void *data, |
490 void **return_val) | 498 void **return_val) |
491 { | 499 { |
500 void *arg1 = va_arg(args, void *); | |
501 void *arg2 = va_arg(args, void *); | |
502 void *arg3 = va_arg(args, void *); | |
503 guint arg4 = va_arg(args, guint); | |
504 guint arg5 = va_arg(args, guint); | |
505 | |
492 ((void (*)(void *, void *, void *, guint, guint, void *))cb)( | 506 ((void (*)(void *, void *, void *, guint, guint, void *))cb)( |
493 va_arg(args, void *), va_arg(args, void *), | 507 arg1, arg2, arg3, arg4, arg5, data); |
494 va_arg(args, void *), va_arg(args, guint), | |
495 va_arg(args, guint), data); | |
496 } | 508 } |
497 | 509 |
498 void | 510 void |
499 gaim_marshal_BOOLEAN__POINTER(GaimCallback cb, va_list args, void *data, | 511 gaim_marshal_BOOLEAN__POINTER(GaimCallback cb, va_list args, void *data, |
500 void **return_val) | 512 void **return_val) |
501 { | 513 { |
502 gboolean ret_val; | 514 gboolean ret_val; |
503 | 515 void *arg1 = va_arg(args, void *); |
504 ret_val = ((gboolean (*)(void *, void *))cb)(va_arg(args, void *), data); | 516 |
517 ret_val = ((gboolean (*)(void *, void *))cb)(arg1, data); | |
505 | 518 |
506 if (return_val != NULL) | 519 if (return_val != NULL) |
507 *return_val = GINT_TO_POINTER(ret_val); | 520 *return_val = GINT_TO_POINTER(ret_val); |
508 } | 521 } |
509 | 522 |
510 void | 523 void |
511 gaim_marshal_BOOLEAN__POINTER_POINTER(GaimCallback cb, va_list args, | 524 gaim_marshal_BOOLEAN__POINTER_POINTER(GaimCallback cb, va_list args, |
512 void *data, void **return_val) | 525 void *data, void **return_val) |
513 { | 526 { |
514 gboolean ret_val; | 527 gboolean ret_val; |
515 | 528 void *arg1 = va_arg(args, void *); |
516 ret_val = ((gboolean (*)(void *, void *, void *))cb)(va_arg(args, void *), | 529 void *arg2 = va_arg(args, void *); |
517 va_arg(args, void *), | 530 |
518 data); | 531 ret_val = ((gboolean (*)(void *, void *, void *))cb)(arg1, arg2, data); |
519 | 532 |
520 if (return_val != NULL) | 533 if (return_val != NULL) |
521 *return_val = GINT_TO_POINTER(ret_val); | 534 *return_val = GINT_TO_POINTER(ret_val); |
522 } | 535 } |
523 | 536 |
526 va_list args, | 539 va_list args, |
527 void *data, | 540 void *data, |
528 void **return_val) | 541 void **return_val) |
529 { | 542 { |
530 gboolean ret_val; | 543 gboolean ret_val; |
544 void *arg1 = va_arg(args, void *); | |
545 void *arg2 = va_arg(args, void *); | |
546 void *arg3 = va_arg(args, void *); | |
547 guint arg4 = va_arg(args, guint); | |
531 | 548 |
532 ret_val = ((gboolean (*)(void *, void *, void *, guint, void *))cb)( | 549 ret_val = ((gboolean (*)(void *, void *, void *, guint, void *))cb)( |
533 va_arg(args, void *), va_arg(args, void *), | 550 arg1, arg2, arg3, arg4, data); |
534 va_arg(args, void *), va_arg(args, guint), | |
535 data); | |
536 | 551 |
537 if (return_val != NULL) | 552 if (return_val != NULL) |
538 *return_val = GINT_TO_POINTER(ret_val); | 553 *return_val = GINT_TO_POINTER(ret_val); |
539 } | 554 } |
540 | 555 |
543 va_list args, | 558 va_list args, |
544 void *data, | 559 void *data, |
545 void **return_val) | 560 void **return_val) |
546 { | 561 { |
547 gboolean ret_val; | 562 gboolean ret_val; |
563 void *arg1 = va_arg(args, void *); | |
564 void *arg2 = va_arg(args, void *); | |
565 void *arg3 = va_arg(args, void *); | |
566 void *arg4 = va_arg(args, void *); | |
548 | 567 |
549 ret_val = ((gboolean (*)(void *, void *, void *, void *, void *))cb)( | 568 ret_val = ((gboolean (*)(void *, void *, void *, void *, void *))cb)( |
550 va_arg(args, void *), va_arg(args, void *), | 569 arg1, arg2, arg3, arg4, data); |
551 va_arg(args, void *), va_arg(args, void *), | |
552 data); | |
553 | 570 |
554 if (return_val != NULL) | 571 if (return_val != NULL) |
555 *return_val = GINT_TO_POINTER(ret_val); | 572 *return_val = GINT_TO_POINTER(ret_val); |
556 } | 573 } |
557 | 574 |
558 void | 575 void |
559 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER( | 576 gaim_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER( |
560 GaimCallback cb, va_list args, void *data, void **return_val) | 577 GaimCallback cb, va_list args, void *data, void **return_val) |
561 { | 578 { |
562 gboolean ret_val; | 579 gboolean ret_val; |
580 void *arg1 = va_arg(args, void *); | |
581 void *arg2 = va_arg(args, void *); | |
582 void *arg3 = va_arg(args, void *); | |
583 void *arg4 = va_arg(args, void *); | |
584 void *arg5 = va_arg(args, void *); | |
563 | 585 |
564 ret_val = | 586 ret_val = |
565 ((gboolean (*)(void *, void *, void *, void *, void *, void *))cb)( | 587 ((gboolean (*)(void *, void *, void *, void *, void *, void *))cb)( |
566 va_arg(args, void *), va_arg(args, void *), | 588 arg1, arg2, arg3, arg4, arg5, data); |
567 va_arg(args, void *), va_arg(args, void *), | |
568 va_arg(args, void *), data); | |
569 | 589 |
570 if (return_val != NULL) | 590 if (return_val != NULL) |
571 *return_val = GINT_TO_POINTER(ret_val); | 591 *return_val = GINT_TO_POINTER(ret_val); |
572 } | 592 } |