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 + -
显示快捷键?