2 #include "irssi-version.h"
4 #define DEFAULT_COMMAND_CATEGORY "Perl scripts' commands"
6 void perl_signal_add_hash(int priority, SV *sv)
13 croak("Usage: Irssi::signal_add(hash)");
17 while ((he = hv_iternext(hv)) != NULL)
18 perl_signal_add_to(hv_iterkey(he, &len), HeVAL(he), priority);
21 static void perl_command_bind_add_hash(int priority, SV *sv, char *category)
29 while ((he = hv_iternext(hv)) != NULL)
30 perl_command_bind_to(hv_iterkey(he, &len), category, HeVAL(he), priority);
33 static void handle_command_bind(int priority, int items, SV *p0, SV *p1, SV *p2)
38 hash = items > 0 && is_hvref(p0);
40 if (items < 2 || items > 3)
41 croak("Usage: Irssi::command_bind(signal, func, category)");
43 croak("Usage: Irssi::command_bind(signals_hash, category)");
46 category = items < 3 ? DEFAULT_COMMAND_CATEGORY :
47 (char *)SvPV(p2, PL_na);
48 perl_command_bind_to((char *)SvPV(p0, PL_na), category, p1, priority);
50 category = items < 2 ? DEFAULT_COMMAND_CATEGORY :
51 (char *)SvPV(p1, PL_na);
52 perl_command_bind_add_hash(priority, p0, category);
56 MODULE = Irssi::Core PACKAGE = Irssi
60 signal_emit(signal, ...)
63 void *p[SIGNAL_MAX_ARGUMENTS];
66 memset(p, 0, sizeof(p));
67 for (n = 1; n < items && n < SIGNAL_MAX_ARGUMENTS+1; n++) {
69 p[n-1] = SvPV(ST(n), PL_na);
70 else if (irssi_is_ref_object(ST(n)))
71 p[n-1] = irssi_ref_object(ST(n));
72 else if (SvROK(ST(n)))
73 p[n-1] = (void *) SvIV((SV*)SvRV(ST(n)));
77 signal_emit(signal, items-1, p[0], p[1], p[2], p[3], p[4], p[5]);
82 if (items != 1 && items != 2)
83 croak("Usage: Irssi::signal_add(signal, func)");
85 perl_signal_add((char *)SvPV(ST(0),PL_na), ST(1));
87 perl_signal_add_hash(1, ST(0));
92 if (items != 1 && items != 2)
93 croak("Usage: Irssi::signal_add_first(signal, func)");
95 perl_signal_add_first((char *)SvPV(ST(0),PL_na), ST(1));
97 perl_signal_add_hash(0, ST(0));
102 if (items != 1 && items != 2)
103 croak("Usage: Irssi::signal_add_last(signal, func)");
105 perl_signal_add_last((char *)SvPV(ST(0),PL_na), ST(1));
107 perl_signal_add_hash(2, ST(0));
110 signal_remove(signal, func)
114 perl_signal_remove(signal, func);
120 signal_stop_by_name(signal)
126 RETVAL = (char *) signal_get_emitted();
131 signal_get_emitted_id()
134 timeout_add(msecs, func, data)
139 RETVAL = perl_timeout_add(msecs, func, data);
147 perl_source_remove(tag);
153 RETVAL = G_INPUT_READ;
160 RETVAL = G_INPUT_WRITE;
165 input_add(source, condition, func, data)
171 RETVAL = perl_input_add(source, condition, func, data);
179 perl_source_remove(tag);
181 # maybe there's some easier way than this..? :)
185 RETVAL = MSGLEVEL_CRAP;
192 RETVAL = MSGLEVEL_MSGS;
199 RETVAL = MSGLEVEL_PUBLIC;
206 RETVAL = MSGLEVEL_NOTICES;
213 RETVAL = MSGLEVEL_SNOTES;
220 RETVAL = MSGLEVEL_CTCPS;
227 RETVAL = MSGLEVEL_ACTIONS;
234 RETVAL = MSGLEVEL_JOINS;
241 RETVAL = MSGLEVEL_PARTS;
248 RETVAL = MSGLEVEL_QUITS;
255 RETVAL = MSGLEVEL_KICKS;
262 RETVAL = MSGLEVEL_MODES;
269 RETVAL = MSGLEVEL_TOPICS;
276 RETVAL = MSGLEVEL_WALLOPS;
283 RETVAL = MSGLEVEL_INVITES;
290 RETVAL = MSGLEVEL_NICKS;
297 RETVAL = MSGLEVEL_DCC;
304 RETVAL = MSGLEVEL_DCCMSGS;
309 MSGLEVEL_CLIENTNOTICE()
311 RETVAL = MSGLEVEL_CLIENTNOTICE;
316 MSGLEVEL_CLIENTCRAP()
318 RETVAL = MSGLEVEL_CLIENTCRAP;
323 MSGLEVEL_CLIENTERROR()
325 RETVAL = MSGLEVEL_CLIENTERROR;
332 RETVAL = MSGLEVEL_HILIGHT;
339 RETVAL = MSGLEVEL_ALL;
346 RETVAL = MSGLEVEL_NOHILIGHT;
353 RETVAL = MSGLEVEL_NO_ACT;
360 RETVAL = MSGLEVEL_NEVER;
367 RETVAL = MSGLEVEL_LASTLOG;
380 combine_level(level, str)
388 perl_command(cmd, NULL, NULL);
395 for (tmp = commands; tmp != NULL; tmp = tmp->next) {
396 XPUSHs(sv_2mortal(plain_bless(tmp->data, "Irssi::Command")));
400 command_bind_first(...)
402 handle_command_bind(0, items, ST(0), ST(1), ST(2));
407 handle_command_bind(1, items, ST(0), ST(1), ST(2));
410 command_bind_last(...)
412 handle_command_bind(2, items, ST(0), ST(1), ST(2));
415 command_runsub(cmd, data, server, item)
419 Irssi::Windowitem item
421 perl_command_runsub(cmd, data, server, item);
424 command_unbind(cmd, func)
428 perl_command_unbind(cmd, func);
431 command_set_options(cmd, options)
444 parse_special(cmd, data="", flags=0)
451 ret = parse_special_string(cmd, NULL, NULL, data, NULL, flags);
452 XPUSHs(sv_2mortal(new_pv(ret)));
453 g_free_not_null(ret);
458 RETVAL = (char *) get_irssi_dir();
465 RETVAL = (char *) get_irssi_config();
474 g_snprintf(version, sizeof(version), "%d.%04d",
475 IRSSI_VERSION_DATE, IRSSI_VERSION_TIME);
480 #*******************************
481 MODULE = Irssi::Core PACKAGE = Irssi::Server
482 #*******************************
485 parse_special(server, cmd, data="", flags=0)
493 ret = parse_special_string(cmd, server, NULL, data, NULL, flags);
494 XPUSHs(sv_2mortal(new_pv(ret)));
495 g_free_not_null(ret);
502 perl_command(cmd, server, NULL);
505 #*******************************
506 MODULE = Irssi::Core PACKAGE = Irssi::Windowitem
507 #*******************************
510 parse_special(item, cmd, data="", flags=0)
511 Irssi::Windowitem item
518 ret = parse_special_string(cmd, item->server, item, data, NULL, flags);
519 XPUSHs(sv_2mortal(new_pv(ret)));
520 g_free_not_null(ret);
524 Irssi::Windowitem item
527 perl_command(cmd, item->server, item);