libpurple/plugins/perl/common/AccountOpts.xs

Sat, 16 Jun 2007 19:44:59 +0000

author
Richard Laager <rlaager@pidgin.im>
date
Sat, 16 Jun 2007 19:44:59 +0000
branch
release-2.1.0
changeset 18190
bcf28ef7e8ff
parent 15894
765ec644ac47
child 23980
a38cbb35eecf
permissions
-rw-r--r--

Re-fix the DBus list handling code by killing const GList* / const GSList*
everywhere. Now we maintain a list of functions which return a GList or
GSList which must not be freed. Ideally at some point this will be
replaced with code that looks at the Doxygen comment for the function and
honors @constreturn, which I've declared as a macro around @return that
prints a @note about not modifying or freeing the returned value.

#include "module.h"

MODULE = Purple::Account::Option  PACKAGE = Purple::Account::Option  PREFIX = purple_account_option_
PROTOTYPES: ENABLE

void
purple_account_option_destroy(option)
	Purple::Account::Option option

const char *
purple_account_option_get_default_string(option)
	Purple::Account::Option option

void
purple_account_option_add_list_item(option, key, value)
	Purple::Account::Option option
	const char * key
	const char * value

void
purple_account_option_set_default_string(option, value);
	Purple::Account::Option option
	const char * value

void
purple_account_option_set_default_int(option, value);
	Purple::Account::Option option
	int value

void
purple_account_option_set_default_bool(option, value);
	Purple::Account::Option option
	gboolean value

Purple::Account::Option
purple_account_option_list_new(class, text, pref_name, values)
	const char * text
	const char * pref_name
	SV * values
PREINIT:
	GList *t_GL;
	int i, t_len;
CODE:
	t_GL = NULL;
	t_len = av_len((AV *)SvRV(values));

	for (i = 0; i < t_len; i++) {
		STRLEN t_sl;
		t_GL = g_list_append(t_GL, SvPV(*av_fetch((AV *)SvRV(values), i, 0), t_sl));
	}
	RETVAL  = purple_account_option_list_new(text, pref_name, t_GL);
OUTPUT:
	RETVAL

Purple::Account::Option
purple_account_option_string_new(class, text, pref_name, default_value)
	const char * text
	const char * pref_name
	const char * default_value
    C_ARGS:
	text, pref_name, default_value

Purple::Account::Option
purple_account_option_int_new(class, text, pref_name, default_value)
	const char * text
	const char * pref_name
	gboolean default_value
    C_ARGS:
	text, pref_name, default_value

Purple::Account::Option
purple_account_option_bool_new(class, text, pref_name, default_value)
	const char * text
	const char * pref_name
	gboolean default_value
    C_ARGS:
	text, pref_name, default_value

Purple::Account::Option
purple_account_option_new(class, type, text, pref_name)
	Purple::PrefType type
	const char * text
	const char * pref_name
    C_ARGS:
	type, text, pref_name

void
purple_account_option_get_list(option)
	Purple::Account::Option option
PREINIT:
	GList *l;
PPCODE:
	for (l = purple_account_option_get_list(option); l != NULL; l = l->next) {
		/* XXX These are actually PurpleKeyValuePairs but we don't have a
		 * type for that and even if we did I don't think there's
		 * anything perl could do with them, so I'm just going to
		 * leave this as a Purple::ListEntry for now. */
		XPUSHs(sv_2mortal(purple_perl_bless_object(l->data, "Purple::ListEntry")));
	}

Purple::PrefType
purple_account_option_get_type(option)
	Purple::Account::Option option

gboolean
purple_account_option_get_masked(option)
	Purple::Account::Option option

int
purple_account_option_get_default_int(option)
	Purple::Account::Option option;

gboolean
purple_account_option_get_default_bool(option)
	Purple::Account::Option option;

const char *
purple_account_option_get_setting(option)
	Purple::Account::Option option

const char *
purple_account_option_get_text(option)
	Purple::Account::Option option

void
purple_account_option_set_list(option, values)
	Purple::Account::Option option
	SV * values
PREINIT:
	GList *t_GL;
	int i, t_len;
PPCODE:
	t_GL = NULL;
	t_len = av_len((AV *)SvRV(values));

	for (i = 0; i < t_len; i++) {
		STRLEN t_sl;
		t_GL = g_list_append(t_GL, SvPV(*av_fetch((AV *)SvRV(values), i, 0), t_sl));
	}
	purple_account_option_set_list(option, t_GL);

void
purple_account_option_set_masked(option, masked)
	Purple::Account::Option option
	gboolean masked

MODULE = Purple::Account::Option  PACKAGE = Purple::Account::UserSplit  PREFIX = purple_account_user_split_
PROTOTYPES: ENABLE

Purple::Account::UserSplit
purple_account_user_split_new(class, text, default_value, sep)
	const char * text
	const char * default_value
	char sep
    C_ARGS:
	text, default_value, sep

char
purple_account_user_split_get_separator(split)
	Purple::Account::UserSplit split

const char *
purple_account_user_split_get_text(split)
	Purple::Account::UserSplit split

void
purple_account_user_split_destroy(split)
	Purple::Account::UserSplit split

mercurial