diff options
author | Timo Sirainen <cras@irssi.org> | 2000-10-03 19:10:24 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2000-10-03 19:10:24 +0000 |
commit | 391a419a1fce87ea4fef199390e23cbf0dbee589 (patch) | |
tree | 4c5d7bfd3c10e3616bba6fba7b2d0d8e62bb8412 /src/perl/common/Core.xs | |
parent | 6fc2a3412178385f241efa4c16d7e8b10d392042 (diff) | |
download | irssi-391a419a1fce87ea4fef199390e23cbf0dbee589.zip |
s/core/common/ - because make clean tried to delete it :)
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@715 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/perl/common/Core.xs')
-rw-r--r-- | src/perl/common/Core.xs | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/src/perl/common/Core.xs b/src/perl/common/Core.xs new file mode 100644 index 00000000..bac9e90b --- /dev/null +++ b/src/perl/common/Core.xs @@ -0,0 +1,125 @@ +MODULE = Irssi PACKAGE = Irssi + +void +signal_emit(signal, ...) + char *signal +PREINIT: + STRLEN n_a; +CODE: + void *p[6]; + int n; + + memset(p, 0, sizeof(p)); + for (n = 1; n < items && n < 6; n++) { + p[n-1] = SvPOKp(ST(n)) ? SvPV(ST(n), n_a) : (void *) SvIV((SV*)SvRV(ST(n))); + } + signal_emit(signal, items-1, p[0], p[1], p[2], p[3], p[4], p[5]); + +void +signal_add(signal, func) + char *signal + char *func +CODE: + perl_signal_add(signal, func); + +void +signal_add_last(signal, func) + char *signal + char *func +CODE: + perl_signal_add_last(signal, func); + +void +signal_remove(signal, func) + char *signal + char *func +CODE: + perl_signal_remove(signal, func); + +void +signal_stop() + +void +signal_stop_by_name(signal) + char *signal + +int +timeout_add(msecs, func, data) + int msecs + char *func + char *data +CODE: + RETVAL = perl_timeout_add(msecs, func, data); +OUTPUT: + RETVAL + +void +timeout_remove(tag) + int tag +CODE: + perl_timeout_remove(tag); + +int +level2bits(str) + char *str + +char * +bits2level(bits) + int bits + +int +combine_level(level, str) + int level + char *str + +void +commands() +PREINIT: + GSList *tmp; + HV *stash; +PPCODE: + stash = gv_stashpv("Irssi::Command", 0); + for (tmp = commands; tmp != NULL; tmp = tmp->next) { + XPUSHs(sv_2mortal(sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(tmp->data))), stash))); + } + +void +command_bind(cmd, category, func) + char *cmd + char *category + char *func +CODE: + char *signal; + GSList *tmp; + + if (*category == '\0') category = "Perl scripts' commands"; + command_bind(cmd, category, NULL); + signal = g_strconcat("command ", cmd, NULL); + perl_signal_add(signal, func); + g_free(signal); + +void +command_unbind(cmd, func) + char *cmd + char *func +CODE: + char *signal; + + signal = g_strconcat("command ", cmd, NULL); + perl_signal_remove(signal, func); + g_free(signal); + +#******************************* +MODULE = Irssi PACKAGE = Irssi::Command PREFIX = command_ +#******************************* + +void +values(cmd) + Irssi::Command cmd +PREINIT: + HV *hv; +PPCODE: + hv = newHV(); + hv_store(hv, "category", 8, new_pv(cmd->category), 0); + hv_store(hv, "cmd", 3, new_pv(cmd->cmd), 0); + XPUSHs(sv_2mortal(newRV_noinc((SV*)hv))); |