60
static void add_tuple(gpointer key_, gpointer value_, gpointer user_data)
65
hv_store(hash, key, strlen(key), new_pv(value), 0);
68
static void wrap_signal_emit(void *signal, void **p) {
69
signal_emit(signal, 6, p[0], p[1], p[2], p[3], p[4], p[5]);
72
static void wrap_signal_continue(void *dummy, void **p) {
74
signal_continue(6, p[0], p[1], p[2], p[3], p[4], p[5]);
60
77
MODULE = Irssi::Core PACKAGE = Irssi
64
81
signal_emit(signal, ...)
67
void *p[SIGNAL_MAX_ARGUMENTS];
85
SV *args[SIGNAL_MAX_ARGUMENTS];
70
memset(p, 0, sizeof(p));
71
for (n = 1; n < items && n < SIGNAL_MAX_ARGUMENTS+1; n++) {
73
p[n-1] = SvPV(ST(n), PL_na);
74
else if (irssi_is_ref_object(ST(n)))
75
p[n-1] = irssi_ref_object(ST(n));
76
else if (SvROK(ST(n)))
77
p[n-1] = (void *) SvIV((SV*)SvRV(ST(n)));
78
else if (SvIOK(ST(n)))
79
p[n-1] = (void *)SvIV(ST(n));
83
signal_emit(signal, items-1, p[0], p[1], p[2], p[3], p[4], p[5]);
88
signal_id = signal_get_uniq_id(signal);
90
if (used > SIGNAL_MAX_ARGUMENTS) {
91
used = SIGNAL_MAX_ARGUMENTS;
93
for (n = 0; n < used; ++n) {
96
perl_signal_args_to_c(wrap_signal_emit, signal, signal_id, args, used);
86
99
signal_continue(...)
88
void *p[SIGNAL_MAX_ARGUMENTS];
101
SV *args[SIGNAL_MAX_ARGUMENTS];
91
memset(p, 0, sizeof(p));
92
for (n = 0; n < items && n < SIGNAL_MAX_ARGUMENTS; n++) {
94
p[n] = SvPV(ST(n), PL_na);
95
else if (irssi_is_ref_object(ST(n)))
96
p[n] = irssi_ref_object(ST(n));
97
else if (SvROK(ST(n)))
98
p[n] = (void *) SvIV((SV*)SvRV(ST(n)));
99
else if (SvIOK(ST(n)))
100
p[n] = (void *) SvIV(ST(n));
104
signal_continue(items, p[0], p[1], p[2], p[3], p[4], p[5]);
105
if (used > SIGNAL_MAX_ARGUMENTS) {
106
used = SIGNAL_MAX_ARGUMENTS;
108
for (n = 0; n < used; ++n) {
111
perl_signal_args_to_c(wrap_signal_continue, NULL, signal_get_emitted_id(), args, used);
567
command_parse_options(cmd, data)
576
if (cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS | PARAM_FLAG_GETREST,
577
cmd, &optlist, &ptr)) {
579
g_hash_table_foreach(optlist, add_tuple, hash);
580
XPUSHs(sv_2mortal(newRV_noinc((SV*)hash)));
581
XPUSHs(sv_2mortal(new_pv(ptr)));
582
cmd_params_free(free_arg);
584
XPUSHs(&PL_sv_undef);
585
XPUSHs(&PL_sv_undef);