2 #include "irssi-version.h"
7 #define DEFAULT_COMMAND_CATEGORY "Perl scripts' commands"
9 void perl_signal_add_hash(int priority, SV *sv)
16 croak("Usage: Irssi::signal_add(hash)");
20 while ((he = hv_iternext(hv)) != NULL)
21 perl_signal_add_full(hv_iterkey(he, &len), HeVAL(he), priority);
24 static void perl_command_bind_add_hash(int priority, SV *sv, char *category)
32 while ((he = hv_iternext(hv)) != NULL)
33 perl_command_bind_to(hv_iterkey(he, &len), category, HeVAL(he), priority);
36 static void handle_command_bind(int priority, int items, SV *p0, SV *p1, SV *p2)
41 hash = items > 0 && is_hvref(p0);
43 if (items < 2 || items > 3)
44 croak("Usage: Irssi::command_bind(signal, func, category)");
46 croak("Usage: Irssi::command_bind(signals_hash, category)");
49 category = items < 3 ? DEFAULT_COMMAND_CATEGORY :
50 (char *)SvPV(p2, PL_na);
51 perl_command_bind_to((char *)SvPV(p0, PL_na), category, p1, priority);
53 category = items < 2 ? DEFAULT_COMMAND_CATEGORY :
54 (char *)SvPV(p1, PL_na);
55 perl_command_bind_add_hash(priority, p0, category);
59 MODULE = Irssi::Core PACKAGE = Irssi
63 signal_emit(signal, ...)
66 void *p[SIGNAL_MAX_ARGUMENTS];
69 memset(p, 0, sizeof(p));
70 for (n = 1; n < items && n < SIGNAL_MAX_ARGUMENTS+1; n++) {
72 p[n-1] = SvPV(ST(n), PL_na);
73 else if (irssi_is_ref_object(ST(n)))
74 p[n-1] = irssi_ref_object(ST(n));
75 else if (SvROK(ST(n)))
76 p[n-1] = (void *) SvIV((SV*)SvRV(ST(n)));
80 signal_emit(signal, items-1, p[0], p[1], p[2], p[3], p[4], p[5]);
85 void *p[SIGNAL_MAX_ARGUMENTS];
88 memset(p, 0, sizeof(p));
89 for (n = 0; n < items && n < SIGNAL_MAX_ARGUMENTS; n++) {
91 p[n] = SvPV(ST(n), PL_na);
92 else if (irssi_is_ref_object(ST(n)))
93 p[n] = irssi_ref_object(ST(n));
94 else if (SvROK(ST(n)))
95 p[n] = (void *) SvIV((SV*)SvRV(ST(n)));
99 signal_continue(items, p[0], p[1], p[2], p[3], p[4], p[5]);
104 if (items != 1 && items != 2)
105 croak("Usage: Irssi::signal_add(signal, func)");
107 perl_signal_add_full((char *)SvPV(ST(0),PL_na), ST(1),
108 SIGNAL_PRIORITY_DEFAULT);
110 perl_signal_add_hash(SIGNAL_PRIORITY_DEFAULT, ST(0));
113 signal_add_first(...)
115 if (items != 1 && items != 2)
116 croak("Usage: Irssi::signal_add_first(signal, func)");
118 perl_signal_add_full((char *)SvPV(ST(0),PL_na), ST(1),
119 SIGNAL_PRIORITY_HIGH);
121 perl_signal_add_hash(SIGNAL_PRIORITY_HIGH, ST(0));
126 if (items != 1 && items != 2)
127 croak("Usage: Irssi::signal_add_last(signal, func)");
129 perl_signal_add_full((char *)SvPV(ST(0),PL_na), ST(1),
130 SIGNAL_PRIORITY_LOW);
132 perl_signal_add_hash(SIGNAL_PRIORITY_LOW, ST(0));
135 signal_add_priority(...)
137 if (items != 2 && items != 3)
138 croak("Usage: Irssi::signal_add_priority(signal, func, priority)");
140 perl_signal_add_full((char *)SvPV(ST(0),PL_na), ST(1), SvIV(ST(2)));
142 perl_signal_add_hash(SvIV(ST(0)), ST(1));
145 SIGNAL_PRIORITY_LOW()
147 RETVAL = SIGNAL_PRIORITY_LOW;
152 SIGNAL_PRIORITY_DEFAULT()
154 RETVAL = SIGNAL_PRIORITY_DEFAULT;
159 SIGNAL_PRIORITY_HIGH()
161 RETVAL = SIGNAL_PRIORITY_HIGH;
166 signal_remove(signal, func)
170 perl_signal_remove(signal, func);
176 signal_stop_by_name(signal)
182 RETVAL = (char *) signal_get_emitted();
187 signal_get_emitted_id()
190 timeout_add(msecs, func, data)
196 croak("Irssi::timeout() : msecs must be >= 10");
199 RETVAL = perl_timeout_add(msecs, func, data, FALSE);
205 timeout_add_once(msecs, func, data)
211 croak("Irssi::timeout_once() : msecs must be >= 10");
214 RETVAL = perl_timeout_add(msecs, func, data, TRUE);
223 perl_source_remove(tag);
229 RETVAL = G_INPUT_READ;
236 RETVAL = G_INPUT_WRITE;
241 input_add(source, condition, func, data)
247 RETVAL = perl_input_add(source, condition, func, data, FALSE);
255 perl_source_remove(tag);
257 # maybe there's some easier way than this..? :)
261 RETVAL = MSGLEVEL_CRAP;
268 RETVAL = MSGLEVEL_MSGS;
275 RETVAL = MSGLEVEL_PUBLIC;
282 RETVAL = MSGLEVEL_NOTICES;
289 RETVAL = MSGLEVEL_SNOTES;
296 RETVAL = MSGLEVEL_CTCPS;
303 RETVAL = MSGLEVEL_ACTIONS;
310 RETVAL = MSGLEVEL_JOINS;
317 RETVAL = MSGLEVEL_PARTS;
324 RETVAL = MSGLEVEL_QUITS;
331 RETVAL = MSGLEVEL_KICKS;
338 RETVAL = MSGLEVEL_MODES;
345 RETVAL = MSGLEVEL_TOPICS;
352 RETVAL = MSGLEVEL_WALLOPS;
359 RETVAL = MSGLEVEL_INVITES;
366 RETVAL = MSGLEVEL_NICKS;
373 RETVAL = MSGLEVEL_DCC;
380 RETVAL = MSGLEVEL_DCCMSGS;
385 MSGLEVEL_CLIENTNOTICE()
387 RETVAL = MSGLEVEL_CLIENTNOTICE;
392 MSGLEVEL_CLIENTCRAP()
394 RETVAL = MSGLEVEL_CLIENTCRAP;
399 MSGLEVEL_CLIENTERROR()
401 RETVAL = MSGLEVEL_CLIENTERROR;
408 RETVAL = MSGLEVEL_HILIGHT;
415 RETVAL = MSGLEVEL_ALL;
422 RETVAL = MSGLEVEL_NOHILIGHT;
429 RETVAL = MSGLEVEL_NO_ACT;
436 RETVAL = MSGLEVEL_NEVER;
443 RETVAL = MSGLEVEL_LASTLOG;
457 ret = bits2level(bits);
458 XPUSHs(sv_2mortal(new_pv(ret)));
462 combine_level(level, str)
470 perl_command(cmd, NULL, NULL);
477 for (tmp = commands; tmp != NULL; tmp = tmp->next) {
478 XPUSHs(sv_2mortal(plain_bless(tmp->data, "Irssi::Command")));
482 command_bind_first(...)
484 handle_command_bind(SIGNAL_PRIORITY_HIGH, items, ST(0), ST(1), ST(2));
489 handle_command_bind(SIGNAL_PRIORITY_DEFAULT, items, ST(0), ST(1), ST(2));
492 command_bind_last(...)
494 handle_command_bind(SIGNAL_PRIORITY_LOW, items, ST(0), ST(1), ST(2));
497 command_runsub(cmd, data, server, item)
501 Irssi::Windowitem item
503 perl_command_runsub(cmd, data, server, item);
506 command_unbind(cmd, func)
510 perl_command_unbind(cmd, func);
513 command_set_options(cmd, options)
526 parse_special(cmd, data="", flags=0)
533 ret = parse_special_string(cmd, NULL, NULL, data, NULL, flags);
534 XPUSHs(sv_2mortal(new_pv(ret)));
535 g_free_not_null(ret);
540 RETVAL = (char *) get_irssi_dir();
547 RETVAL = (char *) get_irssi_config();
556 g_snprintf(version, sizeof(version), "%d.%04d",
557 IRSSI_VERSION_DATE, IRSSI_VERSION_TIME);
572 RETVAL = IRSSI_GUI_NONE;
579 RETVAL = IRSSI_GUI_TEXT;
586 RETVAL = IRSSI_GUI_GTK;
593 RETVAL = IRSSI_GUI_GNOME;
600 RETVAL = IRSSI_GUI_QT;
607 RETVAL = IRSSI_GUI_KDE;
611 #*******************************
612 MODULE = Irssi::Core PACKAGE = Irssi::Server
613 #*******************************
616 parse_special(server, cmd, data="", flags=0)
624 ret = parse_special_string(cmd, server, NULL, data, NULL, flags);
625 XPUSHs(sv_2mortal(new_pv(ret)));
626 g_free_not_null(ret);
633 perl_command(cmd, server, NULL);
636 #*******************************
637 MODULE = Irssi::Core PACKAGE = Irssi::Windowitem
638 #*******************************
641 parse_special(item, cmd, data="", flags=0)
642 Irssi::Windowitem item
649 ret = parse_special_string(cmd, item->server, item, data, NULL, flags);
650 XPUSHs(sv_2mortal(new_pv(ret)));
651 g_free_not_null(ret);
655 Irssi::Windowitem item
658 perl_command(cmd, item->server, item);