diff options
Diffstat (limited to 'src/perl/irc')
-rw-r--r-- | src/perl/irc/Bans.xs | 2 | ||||
-rw-r--r-- | src/perl/irc/Dcc.xs | 13 | ||||
-rw-r--r-- | src/perl/irc/Flood.xs | 2 | ||||
-rw-r--r-- | src/perl/irc/IrcChannel.xs | 4 | ||||
-rw-r--r-- | src/perl/irc/IrcServer.xs | 50 | ||||
-rw-r--r-- | src/perl/irc/Netsplit.xs | 8 | ||||
-rw-r--r-- | src/perl/irc/Notifylist.xs | 4 | ||||
-rw-r--r-- | src/perl/irc/module.h | 2 | ||||
-rw-r--r-- | src/perl/irc/typemap | 21 |
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); + |