request.xs
来自「Linux下的多协议即时通讯程序源代码」· XS 代码 · 共 643 行 · 第 1/2 页
XS
643 行
#include "module.h"/* This breaks on faceprint's amd64 boxvoid *purple_request_action_varg(handle, title, primary, secondary, default_action, user_data, action_count, actions) void * handle const char *title const char *primary const char *secondary unsigned int default_action void *user_data size_t action_count va_list actions */typedef struct { char *cancel_cb; char *ok_cb;} PurplePerlRequestData;/********************************************************//* *//* Callback function that calls a perl subroutine *//* *//* The void * field data is being used as a way to hide *//* the perl sub's name in a PurplePerlRequestData *//* *//********************************************************/static voidpurple_perl_request_ok_cb(void * data, PurpleRequestFields *fields){ PurplePerlRequestData *gpr = (PurplePerlRequestData *)data; dSP; ENTER; SAVETMPS; PUSHMARK(sp); XPUSHs(purple_perl_bless_object(fields, "Purple::Request::Fields")); PUTBACK; call_pv(gpr->ok_cb, G_EVAL | G_SCALAR); SPAGAIN; PUTBACK; FREETMPS; LEAVE; g_free(gpr->ok_cb); g_free(gpr->cancel_cb); g_free(gpr);}static voidpurple_perl_request_cancel_cb(void * data, PurpleRequestFields *fields){ PurplePerlRequestData *gpr = (PurplePerlRequestData *)data; dSP; ENTER; SAVETMPS; PUSHMARK(sp); XPUSHs(purple_perl_bless_object(fields, "Purple::Request::Fields")); PUTBACK; call_pv(gpr->cancel_cb, G_EVAL | G_SCALAR); SPAGAIN; PUTBACK; FREETMPS; LEAVE; g_free(gpr->ok_cb); g_free(gpr->cancel_cb); g_free(gpr);}MODULE = Purple::Request PACKAGE = Purple::Request PREFIX = purple_request_PROTOTYPES: ENABLEBOOT:{ HV *request_stash = gv_stashpv("Purple::RequestType", 1); HV *request_field_stash = gv_stashpv("Purple::RequestFieldType", 1); static const constiv *civ, request_const_iv[] = {#define const_iv(name) {#name, (IV)PURPLE_REQUEST_##name} const_iv(INPUT), const_iv(CHOICE), const_iv(ACTION), const_iv(FIELDS), const_iv(FILE), const_iv(FOLDER), }; static const constiv request_field_const_iv[] = {#undef const_iv#define const_iv(name) {#name, (IV)PURPLE_REQUEST_FIELD_##name} const_iv(NONE), const_iv(STRING), const_iv(INTEGER), const_iv(BOOLEAN), const_iv(CHOICE), const_iv(LIST), const_iv(LABEL), const_iv(IMAGE), const_iv(ACCOUNT), }; for (civ = request_const_iv + sizeof(request_const_iv) / sizeof(request_const_iv[0]); civ-- > request_const_iv; ) newCONSTSUB(request_stash, (char *)civ->name, newSViv(civ->iv)); for (civ = request_field_const_iv + sizeof(request_field_const_iv) / sizeof(request_field_const_iv[0]); civ-- > request_field_const_iv; ) newCONSTSUB(request_field_stash, (char *)civ->name, newSViv(civ->iv));}void *purple_request_input(handle, title, primary, secondary, default_value, multiline, masked, hint, ok_text, ok_cb, cancel_text, cancel_cb) Purple::Plugin handle const char * title const char * primary const char * secondary const char * default_value gboolean multiline gboolean masked gchar * hint const char * ok_text SV * ok_cb const char * cancel_text SV * cancel_cbCODE: PurplePerlRequestData *gpr; STRLEN len; char *basename; basename = g_path_get_basename(handle->path); purple_perl_normalize_script_name(basename); gpr = g_new(PurplePerlRequestData, 1); gpr->ok_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(ok_cb, len)); gpr->cancel_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(cancel_cb, len)); g_free(basename); RETVAL = purple_request_input(handle, title, primary, secondary, default_value, multiline, masked, hint, ok_text, G_CALLBACK(purple_perl_request_ok_cb), cancel_text, G_CALLBACK(purple_perl_request_cancel_cb), NULL, NULL, NULL, gpr);OUTPUT: RETVALvoid *purple_request_file(handle, title, filename, savedialog, ok_cb, cancel_cb) Purple::Plugin handle const char * title const char * filename gboolean savedialog SV * ok_cb SV * cancel_cbCODE: PurplePerlRequestData *gpr; STRLEN len; char *basename; basename = g_path_get_basename(handle->path); purple_perl_normalize_script_name(basename); gpr = g_new(PurplePerlRequestData, 1); gpr->ok_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(ok_cb, len)); gpr->cancel_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(cancel_cb, len)); g_free(basename); RETVAL = purple_request_file(handle, title, filename, savedialog, G_CALLBACK(purple_perl_request_ok_cb), G_CALLBACK(purple_perl_request_cancel_cb), NULL, NULL, NULL, gpr);OUTPUT: RETVALvoid *purple_request_fields(handle, title, primary, secondary, fields, ok_text, ok_cb, cancel_text, cancel_cb) Purple::Plugin handle const char * title const char * primary const char * secondary Purple::Request::Fields fields const char * ok_text SV * ok_cb const char * cancel_text SV * cancel_cbCODE: PurplePerlRequestData *gpr; STRLEN len; char *basename; basename = g_path_get_basename(handle->path); purple_perl_normalize_script_name(basename); gpr = g_new(PurplePerlRequestData, 1); gpr->ok_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(ok_cb, len)); gpr->cancel_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(cancel_cb, len)); g_free(basename); RETVAL = purple_request_fields(handle, title, primary, secondary, fields, ok_text, G_CALLBACK(purple_perl_request_ok_cb), cancel_text, G_CALLBACK(purple_perl_request_cancel_cb), NULL, NULL, NULL, gpr);OUTPUT: RETVALvoidpurple_request_close(type, uihandle) Purple::RequestType type void * uihandlevoidpurple_request_close_with_handle(handle) void * handlePurple::Request::UiOpspurple_request_get_ui_ops()voidpurple_request_set_ui_ops(ops) Purple::Request::UiOps opsMODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_request_field_PROTOTYPES: ENABLEPurple::Request::Fieldpurple_request_field_account_new(id, text, account = NULL) const char *id const char *text Purple::Account accountPurple::Accountpurple_request_field_account_get_default_value(field) Purple::Request::Field fieldIVpurple_request_field_account_get_filter(field) Purple::Request::Field fieldCODE: RETVAL = PTR2IV(purple_request_field_account_get_filter(field));OUTPUT: RETVALgbooleanpurple_request_field_account_get_show_all(field) Purple::Request::Field fieldPurple::Accountpurple_request_field_account_get_value(field) Purple::Request::Field fieldvoidpurple_request_field_account_set_default_value(field, default_value) Purple::Request::Field field Purple::Account default_valuevoidpurple_request_field_account_set_show_all(field, show_all) Purple::Request::Field field gboolean show_allvoidpurple_request_field_account_set_value(field, value) Purple::Request::Field field Purple::Account valueMODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_request_field_PROTOTYPES: ENABLEPurple::Request::Fieldpurple_request_field_bool_new(id, text, default_value = TRUE) const char *id const char *text gboolean default_valuegbooleanpurple_request_field_bool_get_default_value(field) Purple::Request::Field fieldgbooleanpurple_request_field_bool_get_value(field) Purple::Request::Field fieldvoidpurple_request_field_bool_set_default_value(field, default_value) Purple::Request::Field field gboolean default_valuevoidpurple_request_field_bool_set_value(field, value) Purple::Request::Field field gboolean valueMODULE = Purple::Request PACKAGE = Purple::Request::Field PREFIX = purple_request_field_PROTOTYPES: ENABLEPurple::Request::Fieldpurple_request_field_choice_new(id, text, default_value = 0) const char *id const char *text int default_valuevoidpurple_request_field_choice_add(field, label) Purple::Request::Field field const char *labelintpurple_request_field_choice_get_default_value(field) Purple::Request::Field fieldvoidpurple_request_field_choice_get_labels(field) Purple::Request::Field fieldPREINIT: GList *l;PPCODE: for (l = purple_request_field_choice_get_labels(field); l != NULL; l = l->next) { XPUSHs(sv_2mortal(newSVpv(l->data, 0))); }intpurple_request_field_choice_get_value(field) Purple::Request::Field fieldvoidpurple_request_field_choice_set_default_value(field, default_value) Purple::Request::Field field int default_value
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?