summaryrefslogtreecommitdiff
path: root/src/perl/irc
diff options
context:
space:
mode:
Diffstat (limited to 'src/perl/irc')
-rw-r--r--src/perl/irc/Bans.xs2
-rw-r--r--src/perl/irc/Dcc.xs13
-rw-r--r--src/perl/irc/Flood.xs2
-rw-r--r--src/perl/irc/IrcChannel.xs4
-rw-r--r--src/perl/irc/IrcServer.xs50
-rw-r--r--src/perl/irc/Netsplit.xs8
-rw-r--r--src/perl/irc/Notifylist.xs4
-rw-r--r--src/perl/irc/module.h2
-rw-r--r--src/perl/irc/typemap21
9 files changed, 60 insertions, 46 deletions
diff --git a/src/perl/irc/Bans.xs b/src/perl/irc/Bans.xs
index cd4ea9b8..c89ff4c5 100644
--- a/src/perl/irc/Bans.xs
+++ b/src/perl/irc/Bans.xs
@@ -28,7 +28,7 @@ MODULE = Irssi::Irc PACKAGE = Irssi::Irc::Ban
#*******************************
void
-values(ban)
+init(ban)
Irssi::Irc::Ban ban
PREINIT:
HV *hv;
diff --git a/src/perl/irc/Dcc.xs b/src/perl/irc/Dcc.xs
index 4bc0a5b0..0bbd1166 100644
--- a/src/perl/irc/Dcc.xs
+++ b/src/perl/irc/Dcc.xs
@@ -8,7 +8,7 @@ PREINIT:
PPCODE:
stash = gv_stashpv("Irssi::Irc::Dcc", 0);
for (tmp = dcc_conns; tmp != NULL; tmp = tmp->next) {
- XPUSHs(sv_2mortal(sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(tmp->data))), stash)));
+ push_bless(tmp->data, stash);
}
Irssi::Irc::Dcc
@@ -23,9 +23,9 @@ dcc_find_by_port(nick, port)
int port
void
-dcc_ctcp_message(target, server, chat, notice, msg)
- char *target
+dcc_ctcp_message(server, target, chat, notice, msg)
Irssi::Irc::Server server
+ char *target
Irssi::Irc::Dcc chat
int notice
char *msg
@@ -48,7 +48,7 @@ dcc_chat_send(dcc, data)
char *data
void
-values(dcc)
+init(dcc)
Irssi::Irc::Dcc dcc
PREINIT:
HV *hv, *stash;
@@ -57,12 +57,11 @@ PPCODE:
hv_store(hv, "type", 4, new_pv((char *) dcc_type2str(dcc->type)), 0);
hv_store(hv, "created", 7, newSViv(dcc->created), 0);
- hv_store(hv, "server", 6, sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(dcc->server))),
- irssi_get_stash(dcc->server)), 0);
+ hv_store(hv, "server", 6, irssi_bless(dcc->server), 0);
hv_store(hv, "nick", 4, new_pv(dcc->nick), 0);
stash = gv_stashpv("Irssi::Irc::Dcc", 0);
- hv_store(hv, "chat", 4, sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(dcc->chat))), stash), 0);
+ hv_store(hv, "chat", 4, new_bless(dcc->chat, stash), 0);
hv_store(hv, "ircnet", 6, new_pv(dcc->ircnet), 0);
hv_store(hv, "mynick", 6, new_pv(dcc->mynick), 0);
diff --git a/src/perl/irc/Flood.xs b/src/perl/irc/Flood.xs
index 8738be04..d6b70672 100644
--- a/src/perl/irc/Flood.xs
+++ b/src/perl/irc/Flood.xs
@@ -17,7 +17,7 @@ MODULE = Irssi::Irc PACKAGE = Irssi::Irc::Autoignore
#*******************************
void
-values(ai)
+init(ai)
Irssi::Irc::Autoignore ai
PREINIT:
HV *hv;
diff --git a/src/perl/irc/IrcChannel.xs b/src/perl/irc/IrcChannel.xs
index b78636c9..948b5b2a 100644
--- a/src/perl/irc/IrcChannel.xs
+++ b/src/perl/irc/IrcChannel.xs
@@ -9,7 +9,7 @@ PREINIT:
PPCODE:
stash = gv_stashpv("Irssi::Irc::Ban", 0);
for (tmp = channel->banlist; tmp != NULL; tmp = tmp->next) {
- XPUSHs(sv_2mortal(sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(tmp->data))), stash)));
+ push_bless(tmp->data, stash);
}
void
@@ -21,7 +21,7 @@ PREINIT:
PPCODE:
stash = gv_stashpv("Irssi::Irc::Ban", 0);
for (tmp = channel->ebanlist; tmp != NULL; tmp = tmp->next) {
- XPUSHs(sv_2mortal(sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(tmp->data))), stash)));
+ push_bless(tmp->data, stash);
}
void
diff --git a/src/perl/irc/IrcServer.xs b/src/perl/irc/IrcServer.xs
index 2d4108e9..c39abaa4 100644
--- a/src/perl/irc/IrcServer.xs
+++ b/src/perl/irc/IrcServer.xs
@@ -1,19 +1,5 @@
MODULE = Irssi::Irc PACKAGE = Irssi::Irc::Server PREFIX = irc_server_
-void
-values(server)
- Irssi::Irc::Server server
-PREINIT:
- HV *hv;
-PPCODE:
- hv = newHV();
- perl_server_fill_hash(hv, (SERVER_REC *) server);
-
- hv_store(hv, "real_address", 12, new_pv(server->real_address), 0);
- hv_store(hv, "usermode", 8, new_pv(server->usermode), 0);
- hv_store(hv, "userhost", 8, new_pv(server->userhost), 0);
- XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
-
char *
irc_server_get_channels(server)
Irssi::Irc::Server server
@@ -41,20 +27,36 @@ send_raw_split(server, cmd, nickarg, max_nicks)
CODE:
irc_send_cmd_split(server, cmd, nickarg, max_nicks);
-MODULE = Irssi::Irc PACKAGE = Irssi::Irc::Connect PREFIX = irc_server_
-
void
-values(conn)
- Irssi::Irc::Connect conn
+init(server)
+ Irssi::Irc::Server server
PREINIT:
- HV *hv;
-PPCODE:
- hv = newHV();
- perl_server_connect_fill_hash(hv, (SERVER_CONNECT_REC *) conn);
+ HV *hv;
+CODE:
+ hv = hvref(ST(0));
+ if (hv != NULL) {
+ perl_server_fill_hash(hv, server);
+
+ hv_store(hv, "real_address", 12, new_pv(server->real_address), 0);
+ hv_store(hv, "usermode", 8, new_pv(server->usermode), 0);
+ hv_store(hv, "userhost", 8, new_pv(server->userhost), 0);
+ }
- hv_store(hv, "alternate_nick", 14, new_pv(conn->alternate_nick), 0);
- XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
+
+MODULE = Irssi::Irc PACKAGE = Irssi::Irc::Connect PREFIX = irc_server_
Irssi::Irc::Server
irc_server_connect(conn)
Irssi::Irc::Connect conn
+
+void
+init(conn)
+ Irssi::Irc::Connect conn
+PREINIT:
+ HV *hv;
+CODE:
+ hv = hvref(ST(0));
+ if (hv != NULL) {
+ perl_connect_fill_hash(hv, conn);
+ hv_store(hv, "alternate_nick", 14, new_pv(conn->alternate_nick), 0);
+ }
diff --git a/src/perl/irc/Netsplit.xs b/src/perl/irc/Netsplit.xs
index 4dad9c1d..a7669b43 100644
--- a/src/perl/irc/Netsplit.xs
+++ b/src/perl/irc/Netsplit.xs
@@ -6,7 +6,7 @@ netsplit_find(server, nick, address)
char *nick
char *address
-Irssi::Nick
+Irssi::Irc::Nick
netsplit_find_channel(server, nick, address, channel)
Irssi::Irc::Server server
char *nick
@@ -19,7 +19,7 @@ MODULE = Irssi::Irc PACKAGE = Irssi::Irc::Netsplit
#*******************************
void
-values(netsplit)
+init(netsplit)
Irssi::Irc::Netsplit netsplit
PREINIT:
HV *hv, *stash;
@@ -30,7 +30,7 @@ PPCODE:
hv_store(hv, "destroy", 7, newSViv(netsplit->destroy), 0);
stash = gv_stashpv("Irssi::Irc::Netsplitserver", 0);
- hv_store(hv, "server", 6, sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(netsplit->server))), stash), 0);
+ hv_store(hv, "server", 6, new_bless(netsplit->server, stash), 0);
/*FIXME: add GSList *channels;*/
XPUSHs(sv_2mortal(newRV_noinc((SV*)hv)));
@@ -39,7 +39,7 @@ MODULE = Irssi::Irc PACKAGE = Irssi::Irc::Netsplitserver
#*******************************
void
-values(rec)
+init(rec)
Irssi::Irc::Netsplitserver rec
PREINIT:
HV *hv;
diff --git a/src/perl/irc/Notifylist.xs b/src/perl/irc/Notifylist.xs
index 4770aa12..3ef75c04 100644
--- a/src/perl/irc/Notifylist.xs
+++ b/src/perl/irc/Notifylist.xs
@@ -8,7 +8,7 @@ PREINIT:
PPCODE:
stash = gv_stashpv("Irssi::Irc::Notifylist", 0);
for (tmp = notifies; tmp != NULL; tmp = tmp->next) {
- XPUSHs(sv_2mortal(sv_bless(newRV_noinc(newSViv(GPOINTER_TO_INT(tmp->data))), stash)));
+ push_bless(tmp->data, stash);
}
Irssi::Irc::Notifylist
@@ -46,7 +46,7 @@ MODULE = Irssi::Irc PACKAGE = Irssi::Irc::Notifylist PREFIX = notifylist_
#*******************************
void
-values(notify)
+init(notify)
Irssi::Irc::Notifylist notify
PREINIT:
HV *hv;
diff --git a/src/perl/irc/module.h b/src/perl/irc/module.h
index 2c2f24c7..59fcd03c 100644
--- a/src/perl/irc/module.h
+++ b/src/perl/irc/module.h
@@ -1,5 +1,6 @@
#include "../common/module.h"
+#include "irc.h"
#include "irc-servers.h"
#include "irc-channels.h"
#include "irc-queries.h"
@@ -17,6 +18,7 @@ typedef IRC_SERVER_REC *Irssi__Irc__Server;
typedef IRC_SERVER_CONNECT_REC *Irssi__Irc__Connect;
typedef IRC_CHANNEL_REC *Irssi__Irc__Channel;
typedef QUERY_REC *Irssi__Irc__Query;
+typedef NICK_REC *Irssi__Irc__Nick;
typedef BAN_REC *Irssi__Irc__Ban;
typedef DCC_REC *Irssi__Irc__Dcc;
diff --git a/src/perl/irc/typemap b/src/perl/irc/typemap
index 88035c57..8bec8f9f 100644
--- a/src/perl/irc/typemap
+++ b/src/perl/irc/typemap
@@ -1,8 +1,10 @@
TYPEMAP
-Irssi::Irc::Server T_PTROBJ
-Irssi::Irc::Connect T_PTROBJ
-Irssi::Irc::Channel T_PTROBJ
-Irssi::Irc::Query T_PTROBJ
+Irssi::Irc::Server T_IrssiObj
+Irssi::Irc::Connect T_IrssiObj
+Irssi::Irc::Channel T_IrssiObj
+Irssi::Irc::Query T_IrssiObj
+Irssi::Irc::Nick T_IrssiObj
+
Irssi::Irc::Ban T_PTROBJ
Irssi::Irc::Dcc T_PTROBJ
Irssi::Irc::Netsplit T_PTROBJ
@@ -10,4 +12,13 @@ Irssi::Irc::Netsplitserver T_PTROBJ
Irssi::Irc::Autoignore T_PTROBJ
Irssi::Irc::Notifylist T_PTROBJ
-Irssi::Nick T_PTROBJ
+INPUT
+
+T_IrssiObj
+ $var = irssi_ref_object($arg)
+
+OUTPUT
+
+T_IrssiObj
+ $arg = irssi_bless((SERVER_REC *)$var);
+