summaryrefslogtreecommitdiff
path: root/src/perl/xs/Irssi-window.xs
diff options
context:
space:
mode:
authorTimo Sirainen <cras@irssi.org>2000-04-28 08:07:42 +0000
committercras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564>2000-04-28 08:07:42 +0000
commita5a66264de2f56c5b1ba00e0228eae61f70d5689 (patch)
tree981b0663ff753f754cd0204b742ea12bff0d5e56 /src/perl/xs/Irssi-window.xs
parent9cbf26d5199bdd1f3bd29fb27f181af4b94de02e (diff)
downloadirssi-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.xs106
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)));