diff options
author | Timo Sirainen <cras@irssi.org> | 2000-04-28 08:07:42 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2000-04-28 08:07:42 +0000 |
commit | a5a66264de2f56c5b1ba00e0228eae61f70d5689 (patch) | |
tree | 981b0663ff753f754cd0204b742ea12bff0d5e56 /src/perl/xs/Irssi-window.xs | |
parent | 9cbf26d5199bdd1f3bd29fb27f181af4b94de02e (diff) | |
download | irssi-a5a66264de2f56c5b1ba00e0228eae61f70d5689.zip |
Perl working again, better than ever (unless there's bugs :)
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@191 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'src/perl/xs/Irssi-window.xs')
-rw-r--r-- | src/perl/xs/Irssi-window.xs | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/src/perl/xs/Irssi-window.xs b/src/perl/xs/Irssi-window.xs new file mode 100644 index 00000000..f28acf92 --- /dev/null +++ b/src/perl/xs/Irssi-window.xs @@ -0,0 +1,106 @@ +MODULE = Irssi PACKAGE = Irssi + +void +command(cmd, server=active_win->active_server, item=active_win->active) + char *cmd + Irssi::Server server + Irssi::Windowitem item +CODE: + signal_emit("send command", 3, cmd, server, item); + +Irssi::Window +active_win() +CODE: + RETVAL = active_win; +OUTPUT: + RETVAL + +Irssi::Server +active_server() +CODE: + RETVAL = active_win->active_server; +OUTPUT: + RETVAL + +void +print(str) + char *str +CODE: + printtext(NULL, NULL, MSGLEVEL_CLIENTNOTICE, str); + + +#******************************* +MODULE = Irssi PACKAGE = Irssi::Server +#******************************* + +void +command(server, cmd, item=active_win->active) + char *cmd + Irssi::Server server + Irssi::Windowitem item +CODE: + if (item != NULL && item->server != server) + item = NULL; + signal_emit("send command", 3, cmd, server, item); + +void +printtext(server, channel, level, str) + Irssi::Server server + char *channel + int level + char *str +CODE: + printtext(server, channel, level, str); + +#******************************* +MODULE = Irssi PACKAGE = Irssi::Window +#******************************* + +void +values(window) + Irssi::Window window +PREINIT: + HV *hv, *stash; + AV *av; + GSList *tmp; +PPCODE: + hv = newHV(); + hv_store(hv, "refnum", 6, newSViv(window->refnum), 0); + hv_store(hv, "name", 4, new_pv(window->name), 0); + + av = newAV(); + for (tmp = window->items; tmp != NULL; tmp = tmp->next) { + av_push(av, new_pv(tmp->data)); + } + hv_store(hv, "items", 8, newRV_noinc((SV*)av), 0); + + stash = gv_stashpv("Irssi::Windowitem", 0); + hv_store(hv, "active", 6, sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(window->active))), stash), 0); + stash = gv_stashpv("Irssi::Server", 0); + hv_store(hv, "active_server", 13, sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(window->active_server))), stash), 0); + + hv_store(hv, "lines", 5, newSViv(window->lines), 0); + + hv_store(hv, "level", 5, newSViv(window->level), 0); + hv_store(hv, "new_data", 8, newSViv(window->new_data), 0); + hv_store(hv, "last_timestamp", 14, newSViv(window->last_timestamp), 0); + XPUSHs(sv_2mortal(newRV_noinc((SV*)hv))); + +#******************************* +MODULE = Irssi PACKAGE = Irssi::Windowitem +#******************************* + +void +values(item) + Irssi::Windowitem item +PREINIT: + HV *hv, *stash; + AV *av; + GSList *tmp; +PPCODE: + hv = newHV(); + stash = gv_stashpv("Irssi::Server", 0); + hv_store(hv, "server", 6, sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(item->server))), stash), 0); + hv_store(hv, "name", 4, new_pv(item->name), 0); + hv_store(hv, "new_data", 8, newSViv(item->new_data), 0); + XPUSHs(sv_2mortal(newRV_noinc((SV*)hv))); |