cmds.xs
来自「Linux下的多协议即时通讯程序源代码」· XS 代码 · 共 107 行
XS
107 行
#include "module.h"#include "../perl-handlers.h"MODULE = Purple::Cmd PACKAGE = Purple::Cmd PREFIX = purple_cmd_PROTOTYPES: ENABLEBOOT:{ HV *status_stash = gv_stashpv("Purple::Cmd::Status", 1); HV *ret_stash = gv_stashpv("Purple::Cmd::Return", 1); HV *p_stash = gv_stashpv("Purple::Cmd::Priority", 1); HV *flag_stash = gv_stashpv("Purple::Cmd::Flag", 1); static const constiv *civ, status_const_iv[] = {#define const_iv(name) {#name, (IV)PURPLE_CMD_STATUS_##name} const_iv(OK), const_iv(FAILED), const_iv(NOT_FOUND), const_iv(WRONG_ARGS), const_iv(WRONG_PRPL), const_iv(WRONG_TYPE), }; static const constiv ret_const_iv[] = {#undef const_iv#define const_iv(name) {#name, (IV)PURPLE_CMD_RET_##name} const_iv(OK), const_iv(FAILED), const_iv(CONTINUE), }; static const constiv p_const_iv[] = {#undef const_iv#define const_iv(name) {#name, (IV)PURPLE_CMD_P_##name} const_iv(VERY_LOW), const_iv(LOW), const_iv(DEFAULT), const_iv(PRPL), const_iv(PLUGIN), const_iv(ALIAS), const_iv(HIGH), const_iv(VERY_HIGH), }; static const constiv flag_const_iv[] = {#undef const_iv#define const_iv(name) {#name, (IV)PURPLE_CMD_FLAG_##name} const_iv(IM), const_iv(CHAT), const_iv(PRPL_ONLY), const_iv(ALLOW_WRONG_ARGS), }; for (civ = status_const_iv + sizeof(status_const_iv) / sizeof(status_const_iv[0]); civ-- > status_const_iv;) newCONSTSUB(status_stash, (char *)civ->name, newSViv(civ->iv)); for (civ = ret_const_iv + sizeof(ret_const_iv) / sizeof(ret_const_iv[0]); civ-- > ret_const_iv;) newCONSTSUB(ret_stash, (char *)civ->name, newSViv(civ->iv)); for (civ = p_const_iv + sizeof(p_const_iv) / sizeof(p_const_iv[0]); civ-- > p_const_iv;) newCONSTSUB(p_stash, (char *)civ->name, newSViv(civ->iv)); for (civ = flag_const_iv + sizeof(flag_const_iv) / sizeof(flag_const_iv[0]); civ-- > flag_const_iv;) newCONSTSUB(flag_stash, (char *)civ->name, newSViv(civ->iv));}voidpurple_cmd_help(conv, command) Purple::Conversation conv const gchar *commandPREINIT: GList *l;PPCODE: for (l = purple_cmd_help(conv, command); l != NULL; l = l->next) { XPUSHs(sv_2mortal(newSVpv(l->data, 0))); }voidpurple_cmd_list(conv) Purple::Conversation convPREINIT: GList *l;PPCODE: for (l = purple_cmd_list(conv); l != NULL; l = l->next) { XPUSHs(sv_2mortal(newSVpv(l->data, 0))); }Purple::Cmd::Idpurple_cmd_register(plugin, command, args, priority, flag, prpl_id, func, helpstr, data = 0) Purple::Plugin plugin const gchar *command const gchar *args Purple::Cmd::Priority priority Purple::Cmd::Flag flag const gchar *prpl_id SV *func const gchar *helpstr SV *dataCODE: RETVAL = purple_perl_cmd_register(plugin, command, args, priority, flag, prpl_id, func, helpstr, data);OUTPUT: RETVALvoidpurple_cmd_unregister(id) Purple::Cmd::Id idCODE: purple_perl_cmd_unregister(id);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?