/*
 * This file was generated automatically by ExtUtils::ParseXS version 3.45 from the
 * contents of XMMSClient.xs. Do not edit this file, edit XMMSClient.xs instead.
 *
 *    ANY CHANGES MADE HERE WILL BE LOST!
 *
 */

#line 1 "../src/clients/lib/perl/XMMSClient.xs"
#include "perl_xmmsclient.h"

STATIC void
disconnect_callback_set_cb (void *userdata)
{
	PerlXMMSClientCallback *cb = (PerlXMMSClientCallback *)userdata;

	perl_xmmsclient_callback_invoke (cb, NULL);
}

STATIC void
perl_xmmsclient_xmmsc_io_need_out_callback_set_cb (int flag, void *userdata)
{
	PerlXMMSClientCallback *cb = (PerlXMMSClientCallback *)userdata;

	perl_xmmsclient_callback_invoke (cb, NULL);
}

#line 29 "../src/clients/lib/perl/XMMSClient.c"
#ifndef PERL_UNUSED_VAR
#  define PERL_UNUSED_VAR(var) if (0) var = var
#endif

#ifndef dVAR
#  define dVAR		dNOOP
#endif


/* This stuff is not part of the API! You have been warned. */
#ifndef PERL_VERSION_DECIMAL
#  define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s)
#endif
#ifndef PERL_DECIMAL_VERSION
#  define PERL_DECIMAL_VERSION \
	  PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION)
#endif
#ifndef PERL_VERSION_GE
#  define PERL_VERSION_GE(r,v,s) \
	  (PERL_DECIMAL_VERSION >= PERL_VERSION_DECIMAL(r,v,s))
#endif
#ifndef PERL_VERSION_LE
#  define PERL_VERSION_LE(r,v,s) \
	  (PERL_DECIMAL_VERSION <= PERL_VERSION_DECIMAL(r,v,s))
#endif

/* XS_INTERNAL is the explicit static-linkage variant of the default
 * XS macro.
 *
 * XS_EXTERNAL is the same as XS_INTERNAL except it does not include
 * "STATIC", ie. it exports XSUB symbols. You probably don't want that
 * for anything but the BOOT XSUB.
 *
 * See XSUB.h in core!
 */


/* TODO: This might be compatible further back than 5.10.0. */
#if PERL_VERSION_GE(5, 10, 0) && PERL_VERSION_LE(5, 15, 1)
#  undef XS_EXTERNAL
#  undef XS_INTERNAL
#  if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)
#    define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name)
#    define XS_INTERNAL(name) STATIC XSPROTO(name)
#  endif
#  if defined(__SYMBIAN32__)
#    define XS_EXTERNAL(name) EXPORT_C XSPROTO(name)
#    define XS_INTERNAL(name) EXPORT_C STATIC XSPROTO(name)
#  endif
#  ifndef XS_EXTERNAL
#    if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus)
#      define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__)
#      define XS_INTERNAL(name) STATIC void name(pTHX_ CV* cv __attribute__unused__)
#    else
#      ifdef __cplusplus
#        define XS_EXTERNAL(name) extern "C" XSPROTO(name)
#        define XS_INTERNAL(name) static XSPROTO(name)
#      else
#        define XS_EXTERNAL(name) XSPROTO(name)
#        define XS_INTERNAL(name) STATIC XSPROTO(name)
#      endif
#    endif
#  endif
#endif

/* perl >= 5.10.0 && perl <= 5.15.1 */


/* The XS_EXTERNAL macro is used for functions that must not be static
 * like the boot XSUB of a module. If perl didn't have an XS_EXTERNAL
 * macro defined, the best we can do is assume XS is the same.
 * Dito for XS_INTERNAL.
 */
#ifndef XS_EXTERNAL
#  define XS_EXTERNAL(name) XS(name)
#endif
#ifndef XS_INTERNAL
#  define XS_INTERNAL(name) XS(name)
#endif

/* Now, finally, after all this mess, we want an ExtUtils::ParseXS
 * internal macro that we're free to redefine for varying linkage due
 * to the EXPORT_XSUB_SYMBOLS XS keyword. This is internal, use
 * XS_EXTERNAL(name) or XS_INTERNAL(name) in your code if you need to!
 */

#undef XS_EUPXS
#if defined(PERL_EUPXS_ALWAYS_EXPORT)
#  define XS_EUPXS(name) XS_EXTERNAL(name)
#else
   /* default to internal */
#  define XS_EUPXS(name) XS_INTERNAL(name)
#endif

#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE
#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)

/* prototype to pass -Wmissing-prototypes */
STATIC void
S_croak_xs_usage(const CV *const cv, const char *const params);

STATIC void
S_croak_xs_usage(const CV *const cv, const char *const params)
{
    const GV *const gv = CvGV(cv);

    PERL_ARGS_ASSERT_CROAK_XS_USAGE;

    if (gv) {
        const char *const gvname = GvNAME(gv);
        const HV *const stash = GvSTASH(gv);
        const char *const hvname = stash ? HvNAME(stash) : NULL;

        if (hvname)
	    Perl_croak_nocontext("Usage: %s::%s(%s)", hvname, gvname, params);
        else
	    Perl_croak_nocontext("Usage: %s(%s)", gvname, params);
    } else {
        /* Pants. I don't think that it should be possible to get here. */
	Perl_croak_nocontext("Usage: CODE(0x%" UVxf ")(%s)", PTR2UV(cv), params);
    }
}
#undef  PERL_ARGS_ASSERT_CROAK_XS_USAGE

#define croak_xs_usage        S_croak_xs_usage

#endif

/* NOTE: the prototype of newXSproto() is different in versions of perls,
 * so we define a portable version of newXSproto()
 */
#ifdef newXS_flags
#define newXSproto_portable(name, c_impl, file, proto) newXS_flags(name, c_impl, file, proto, 0)
#else
#define newXSproto_portable(name, c_impl, file, proto) (PL_Sv=(SV*)newXS(name, c_impl, file), sv_setpv(PL_Sv, proto), (CV*)PL_Sv)
#endif /* !defined(newXS_flags) */

#if PERL_VERSION_LE(5, 21, 5)
#  define newXS_deffile(a,b) Perl_newXS(aTHX_ a,b,file)
#else
#  define newXS_deffile(a,b) Perl_newXS_deffile(aTHX_ a,b)
#endif

#line 173 "../src/clients/lib/perl/XMMSClient.c"

XS_EUPXS(XS_Audio__XMMSClient_new); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_new)
{
    dVAR; dXSARGS;
    if (items < 1 || items > 2)
       croak_xs_usage(cv,  "class, clientname=NULL");
    {
	const char *	class = (const char *)SvPV_nolen(ST(0))
;
	const char *	clientname;
#line 68 "../src/clients/lib/perl/XMMSClient.xs"
		xmmsc_connection_t *con;
#line 187 "../src/clients/lib/perl/XMMSClient.c"
	SV *	RETVAL;

	if (items < 2)
	    clientname = NULL;
	else {
	    clientname = (const char *)SvPV_nolen(ST(1))
;
	}
#line 70 "../src/clients/lib/perl/XMMSClient.xs"
		if (!clientname) {
			clientname = SvPV_nolen (get_sv ("0", 0));
		}
#line 200 "../src/clients/lib/perl/XMMSClient.c"
#line 74 "../src/clients/lib/perl/XMMSClient.xs"
		con = xmmsc_init (clientname);

		if (con == NULL) {
			RETVAL = &PL_sv_undef;
		}
		else {
			RETVAL = perl_xmmsclient_new_sv_from_ptr (con, class);
		}
#line 210 "../src/clients/lib/perl/XMMSClient.c"
	RETVAL = sv_2mortal(RETVAL);
	ST(0) = RETVAL;
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_connect); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_connect)
{
    dVAR; dXSARGS;
    if (items < 1 || items > 2)
       croak_xs_usage(cv,  "c, ipcpath=NULL");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	ipcpath;
	int	RETVAL;
	dXSTARG;

	if (items < 2)
	    ipcpath = NULL;
	else {
	    ipcpath = (const char *)SvPV_nolen(ST(1))
;
	}

	RETVAL = xmmsc_connect(c, ipcpath);
	XSprePUSH;
	PUSHi((IV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_disconnect_callback_set); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_disconnect_callback_set)
{
    dVAR; dXSARGS;
    if (items < 2 || items > 3)
       croak_xs_usage(cv,  "c, func, data=NULL");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	SV *	func = ST(1)
;
	SV *	data;
#line 137 "../src/clients/lib/perl/XMMSClient.xs"
		PerlXMMSClientCallback *cb = NULL;
		PerlXMMSClientCallbackParamType param_types[1];
#line 261 "../src/clients/lib/perl/XMMSClient.c"

	if (items < 3)
	    data = NULL;
	else {
	    data = ST(2)
;
	}
#line 140 "../src/clients/lib/perl/XMMSClient.xs"
		param_types[0] = PERL_XMMSCLIENT_CALLBACK_PARAM_TYPE_CONNECTION;

		cb = perl_xmmsclient_callback_new (func, data, ST(0), 1, param_types,
		                                   PERL_XMMSCLIENT_CALLBACK_RETURN_TYPE_NONE);

		xmmsc_disconnect_callback_set_full (c, disconnect_callback_set_cb, cb,
		                                    (xmmsc_user_data_free_func_t)perl_xmmsclient_callback_destroy);
#line 277 "../src/clients/lib/perl/XMMSClient.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_Audio__XMMSClient_io_disconnect); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_io_disconnect)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;

	xmmsc_io_disconnect(c);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_Audio__XMMSClient_get_last_error); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_get_last_error)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	char *	RETVAL;
	dXSTARG;

	RETVAL = xmmsc_get_last_error(c);
	sv_setpv(TARG, RETVAL);
	XSprePUSH;
	PUSHTARG;
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_main_list_plugins); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_main_list_plugins)
{
    dVAR; dXSARGS;
    if (items < 1 || items > 2)
       croak_xs_usage(cv,  "c, type=XMMS_PLUGIN_TYPE_ALL");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmms_plugin_type_t	type;
	xmmsc_result_t *	RETVAL;

	if (items < 2)
	    type = XMMS_PLUGIN_TYPE_ALL;
	else {
	    {
		    const char *plugin_type = NULL;
		    if (ST(1) == NULL) {
			    plugin_type = "";
		    } else {
			    plugin_type = SvPV_nolen (ST(1));
		    }
		    if (strcmp (plugin_type, "output") == 0) {
			    type = XMMS_PLUGIN_TYPE_OUTPUT;
		    } else if (strcmp (plugin_type, "xform") == 0) {
			    type = XMMS_PLUGIN_TYPE_XFORM;
		    } else if (strcmp (plugin_type, "all") == 0) {
			    type = XMMS_PLUGIN_TYPE_ALL;
		    } else {
			    croak ("unknown XMMS_PLUGIN_TYPE_T: %s", plugin_type);
		    }
	    }
;
	}

	RETVAL = xmmsc_main_list_plugins(c, type);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_main_stats); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_main_stats)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_main_stats(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_quit); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_quit)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_quit(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_broadcast_quit); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_broadcast_quit)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_broadcast_quit(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_get_id); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_get_id)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, url");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	url = (const char *)SvPV_nolen(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_medialib_get_id(c, url);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_move_entry); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_move_entry)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "c, id, url");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	uint32_t	id = (uint32_t)SvUV(ST(1))
;
	const char *	url = (const char *)SvPV_nolen(ST(2))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_medialib_move_entry(c, id, url);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_remove_entry); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_remove_entry)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, entry");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	int	entry = (int)SvIV(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_medialib_remove_entry(c, entry);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_add_entry); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_add_entry)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, url");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	url = (const char *)SvPV_nolen(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_medialib_add_entry(c, url);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_add_entry_args); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_add_entry_args)
{
    dVAR; dXSARGS;
    if (items < 2)
       croak_xs_usage(cv,  "c, url, ...");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	url = (const char *)SvPV_nolen(ST(1))
;
#line 405 "../src/clients/lib/perl/XMMSClient.xs"
		int i;
		int nargs;
		const char **args;
#line 553 "../src/clients/lib/perl/XMMSClient.c"
	xmmsc_result_t *	RETVAL;
#line 409 "../src/clients/lib/perl/XMMSClient.xs"
		nargs = items - 2;
		args = (const char **)malloc (sizeof (char *) * nargs);

		for (i = 2; i < items; i++) {
			args[i] = SvPV_nolen (ST (i));
		}
#line 562 "../src/clients/lib/perl/XMMSClient.c"

	RETVAL = xmmsc_medialib_add_entry_args(c, url, nargs, args);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
#line 418 "../src/clients/lib/perl/XMMSClient.xs"
		free (args);
#line 573 "../src/clients/lib/perl/XMMSClient.c"
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_add_entry_encoded); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_add_entry_encoded)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, url");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	url = (const char *)SvPV_nolen(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_medialib_add_entry_encoded(c, url);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playlist); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playlist)
{
    dVAR; dXSARGS;
    if (items < 1 || items > 2)
       croak_xs_usage(cv,  "c, playlist=XMMS_ACTIVE_PLAYLIST");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	playlist;
	perl_xmmsclient_playlist_t *	RETVAL;

	if (items < 2)
	    playlist = XMMS_ACTIVE_PLAYLIST;
	else {
	    playlist = (const char *)SvPV_nolen(ST(1))
;
	}
#line 464 "../src/clients/lib/perl/XMMSClient.xs"
		RETVAL = perl_xmmsclient_playlist_new (c, playlist);
#line 624 "../src/clients/lib/perl/XMMSClient.c"
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Playlist");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_import_path); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_import_path)
{
    dVAR; dXSARGS;
    dXSI32;
    if (items != 2)
       croak_xs_usage(cv,  "c, path");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	path = (const char *)SvPV_nolen(ST(1))
;
	xmmsc_result_t *	RETVAL;
#line 492 "../src/clients/lib/perl/XMMSClient.xs"
		if (ix == 1)
			warn ("Audio::XMMSClient::medialib_path_import is deprecated, use Audio::XMMSClient::medialib_import_path instead.");
#line 652 "../src/clients/lib/perl/XMMSClient.c"

	RETVAL = xmmsc_medialib_import_path(c, path);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_import_path_encoded); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_import_path_encoded)
{
    dVAR; dXSARGS;
    dXSI32;
    if (items != 2)
       croak_xs_usage(cv,  "c, path");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	path = (const char *)SvPV_nolen(ST(1))
;
	xmmsc_result_t *	RETVAL;
#line 520 "../src/clients/lib/perl/XMMSClient.xs"
		if (ix == 1)
			warn ("Audio::XMMSClient::medialib_path_import_encoded is deprecated, use Audio::XMMSClient::medialib_import_path_encoded instead.");
#line 682 "../src/clients/lib/perl/XMMSClient.c"

	RETVAL = xmmsc_medialib_import_path_encoded(c, path);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_rehash); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_rehash)
{
    dVAR; dXSARGS;
    if (items < 1 || items > 2)
       croak_xs_usage(cv,  "c, id=0");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	uint32_t	id;
	xmmsc_result_t *	RETVAL;

	if (items < 2)
	    id = 0;
	else {
	    id = (uint32_t)SvUV(ST(1))
;
	}

	RETVAL = xmmsc_medialib_rehash(c, id);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_get_info); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_get_info)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, id");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	uint32_t	id = (uint32_t)SvUV(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_medialib_get_info(c, id);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_broadcast_medialib_entry_added); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_broadcast_medialib_entry_added)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_broadcast_medialib_entry_added(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_broadcast_medialib_entry_updated); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_broadcast_medialib_entry_updated)
{
    dVAR; dXSARGS;
    dXSI32;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;
#line 611 "../src/clients/lib/perl/XMMSClient.xs"
		if (ix == 1)
			warn ("Audio::XMMSClient::broadcast_medialib_entry_changed is deprecated, use Audio::XMMSClient::broadcast_medialib_entry_updated instead.");
#line 789 "../src/clients/lib/perl/XMMSClient.c"

	RETVAL = xmmsc_broadcast_medialib_entry_updated(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_entry_property_set_int); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_entry_property_set_int)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "c, id, key, value");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	uint32_t	id = (uint32_t)SvUV(ST(1))
;
	const char *	key = (const char *)SvPV_nolen(ST(2))
;
	int	value = (int)SvIV(ST(3))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_medialib_entry_property_set_int(c, id, key, value);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_entry_property_set_int_with_source); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_entry_property_set_int_with_source)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "c, id, source, key, value");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	uint32_t	id = (uint32_t)SvUV(ST(1))
;
	const char *	source = (const char *)SvPV_nolen(ST(2))
;
	const char *	key = (const char *)SvPV_nolen(ST(3))
;
	int	value = (int)SvIV(ST(4))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_medialib_entry_property_set_int_with_source(c, id, source, key, value);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_entry_property_set_str); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_entry_property_set_str)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "c, id, key, value");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	uint32_t	id = (uint32_t)SvUV(ST(1))
;
	const char *	key = (const char *)SvPV_nolen(ST(2))
;
	const char *	value = (const char *)SvPV_nolen(ST(3))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_medialib_entry_property_set_str(c, id, key, value);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_entry_property_set_str_with_source); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_entry_property_set_str_with_source)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "c, id, source, key, value");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	uint32_t	id = (uint32_t)SvUV(ST(1))
;
	const char *	source = (const char *)SvPV_nolen(ST(2))
;
	const char *	key = (const char *)SvPV_nolen(ST(3))
;
	const char *	value = (const char *)SvPV_nolen(ST(4))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_medialib_entry_property_set_str_with_source(c, id, source, key, value);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_entry_property_remove); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_entry_property_remove)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "c, id, key");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	uint32_t	id = (uint32_t)SvUV(ST(1))
;
	const char *	key = (const char *)SvPV_nolen(ST(2))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_medialib_entry_property_remove(c, id, key);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_medialib_entry_property_remove_with_source); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_medialib_entry_property_remove_with_source)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "c, id, source, key");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	uint32_t	id = (uint32_t)SvUV(ST(1))
;
	const char *	source = (const char *)SvPV_nolen(ST(2))
;
	const char *	key = (const char *)SvPV_nolen(ST(3))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_medialib_entry_property_remove_with_source(c, id, source, key);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_coll_get); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_coll_get)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "c, collname, namespace");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	collname = (const char *)SvPV_nolen(ST(1))
;
	xmmsv_coll_namespace_t	namespace = (xmmsv_coll_namespace_t)SvPV_nolen(ST(2))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_coll_get(c, collname, namespace);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_coll_sync); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_coll_sync)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_coll_sync(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_coll_list); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_coll_list)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, namespace");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsv_coll_namespace_t	namespace = (xmmsv_coll_namespace_t)SvPV_nolen(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_coll_list(c, namespace);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_coll_save); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_coll_save)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "c, coll, name, namespace");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsv_t *	coll = (xmmsv_t *)perl_xmmsclient_get_ptr_from_sv (ST(1), "Audio::XMMSClient::Collection")
;
	const char *	name = (const char *)SvPV_nolen(ST(2))
;
	xmmsv_coll_namespace_t	namespace = (xmmsv_coll_namespace_t)SvPV_nolen(ST(3))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_coll_save(c, coll, name, namespace);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_coll_remove); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_coll_remove)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "c, name, namespace");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	name = (const char *)SvPV_nolen(ST(1))
;
	xmmsv_coll_namespace_t	namespace = (xmmsv_coll_namespace_t)SvPV_nolen(ST(2))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_coll_remove(c, name, namespace);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_coll_find); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_coll_find)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "c, mediaid, namespace");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	unsigned int	mediaid = (unsigned int)SvUV(ST(1))
;
	xmmsv_coll_namespace_t	namespace = (xmmsv_coll_namespace_t)SvPV_nolen(ST(2))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_coll_find(c, mediaid, namespace);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_coll_rename); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_coll_rename)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "c, from, to, namespace");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	char *	from = (char *)SvPV_nolen(ST(1))
;
	char *	to = (char *)SvPV_nolen(ST(2))
;
	xmmsv_coll_namespace_t	namespace = (xmmsv_coll_namespace_t)SvPV_nolen(ST(3))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_coll_rename(c, from, to, namespace);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_coll_query_ids); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_coll_query_ids)
{
    dVAR; dXSARGS;
    if (items < 2)
       croak_xs_usage(cv,  "c, coll, ...");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsv_t *	coll = (xmmsv_t *)perl_xmmsclient_get_ptr_from_sv (ST(1), "Audio::XMMSClient::Collection")
;
	xmmsc_result_t *	RETVAL;
#line 968 "../src/clients/lib/perl/XMMSClient.xs"
		xmmsv_t *order = NULL;
		unsigned int limit_start = 0;
		unsigned int limit_len = 0;
		HV *args;
		SV *val;

		if (items == 3 && SvROK (ST (2)) && (SvTYPE (SvRV (ST (2))) == SVt_PVHV)) {
			args = (HV *)SvRV (ST (2));

			if ((val = perl_xmmsclient_hv_fetch (args, "order", 5))) {
				order = perl_xmmsclient_pack_stringlist (val);
			}

			if ((val = perl_xmmsclient_hv_fetch (args, "limit_start", 11))) {
				limit_start = SvUV (val);
			}

			if ((val = perl_xmmsclient_hv_fetch (args, "limit_len", 9))) {
				limit_len = SvUV (val);
			}
		}
		else {
			order = perl_xmmsclient_pack_stringlist (ST (2));
			limit_start = SvOK (ST (3)) ? SvUV (ST (3)) : 0;
			limit_len = SvOK (ST (4)) ? SvUV (ST (4)) : 0;
		}
#line 1205 "../src/clients/lib/perl/XMMSClient.c"

	RETVAL = xmmsc_coll_query_ids(c, coll, order, limit_start, limit_len);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
#line 997 "../src/clients/lib/perl/XMMSClient.xs"
		xmmsv_unref (order);
#line 1216 "../src/clients/lib/perl/XMMSClient.c"
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_coll_query_infos); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_coll_query_infos)
{
    dVAR; dXSARGS;
    if (items < 2)
       croak_xs_usage(cv,  "c, coll, ...");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsv_t *	coll = (xmmsv_t *)perl_xmmsclient_get_ptr_from_sv (ST(1), "Audio::XMMSClient::Collection")
;
	xmmsc_result_t *	RETVAL;
#line 1058 "../src/clients/lib/perl/XMMSClient.xs"
		xmmsv_t *order = NULL;
		unsigned int limit_start = 0;
		unsigned int limit_len = 0;
		xmmsv_t *fetch = NULL;
		xmmsv_t *group = NULL;
		HV *args;
		SV *val;

		if (items == 3 && SvROK (ST (2)) && (SvTYPE (SvRV (ST (2))) == SVt_PVHV)) {
			args = (HV *)SvRV (ST (2));

			if ((val = perl_xmmsclient_hv_fetch (args, "order", 5))) {
				order = perl_xmmsclient_pack_stringlist (val);
			}

			if ((val = perl_xmmsclient_hv_fetch (args, "fetch", 5))) {
				fetch = perl_xmmsclient_pack_stringlist (val);
			}

			if ((val = perl_xmmsclient_hv_fetch (args, "group", 5))) {
				group = perl_xmmsclient_pack_stringlist (val);
			}

			if ((val = perl_xmmsclient_hv_fetch (args, "limit_start", 11))) {
				limit_start = SvUV (val);
			}

			if ((val = perl_xmmsclient_hv_fetch (args, "limit_len", 9))) {
				limit_len = SvUV (val);
			}
		}
		else {
			order = perl_xmmsclient_pack_stringlist (ST (2));
			limit_start = SvOK (ST (3)) ? SvUV (ST (3)) : 0;
			limit_len = SvOK (ST (4)) ? SvUV (ST (4)) : 0;
			fetch = perl_xmmsclient_pack_stringlist (ST (5));
			group = perl_xmmsclient_pack_stringlist (ST (6));
		}
#line 1273 "../src/clients/lib/perl/XMMSClient.c"

	RETVAL = xmmsc_coll_query_infos(c, coll, order, limit_start, limit_len, fetch, group);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
#line 1099 "../src/clients/lib/perl/XMMSClient.xs"
		if (order != NULL)
			xmmsv_unref (order);
		if (fetch != NULL)
			xmmsv_unref (fetch);
		if (group != NULL)
			xmmsv_unref (group);
#line 1289 "../src/clients/lib/perl/XMMSClient.c"
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_coll_query); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_coll_query)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "c, coll, spec");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsv_t *	coll = (xmmsv_t *)perl_xmmsclient_get_ptr_from_sv (ST(1), "Audio::XMMSClient::Collection")
;
	xmmsc_result_t *	RETVAL;
#line 1139 "../src/clients/lib/perl/XMMSClient.xs"
		xmmsv_t *spec = perl_xmmsclient_pack_fetchspec (ST (2));
#line 1309 "../src/clients/lib/perl/XMMSClient.c"

	RETVAL = xmmsc_coll_query(c, coll, spec);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
#line 1143 "../src/clients/lib/perl/XMMSClient.xs"
		xmmsv_unref (spec);
#line 1320 "../src/clients/lib/perl/XMMSClient.c"
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_broadcast_collection_changed); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_broadcast_collection_changed)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_broadcast_collection_changed(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_xform_media_browse); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_xform_media_browse)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, url");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	url = (const char *)SvPV_nolen(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_xform_media_browse(c, url);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_xform_media_browse_encoded); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_xform_media_browse_encoded)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, url");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	url = (const char *)SvPV_nolen(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_xform_media_browse_encoded(c, url);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_bindata_add); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_bindata_add)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, data");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
#line 1234 "../src/clients/lib/perl/XMMSClient.xs"
		STRLEN len = 0;
#line 1410 "../src/clients/lib/perl/XMMSClient.c"
	const unsigned char *	data = (const unsigned char *)SvPVbyte (ST(1), len);
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_bindata_add(c, data, len);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_bindata_retrieve); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_bindata_retrieve)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, hash");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	hash = (const char *)SvPV_nolen(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_bindata_retrieve(c, hash);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_bindata_remove); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_bindata_remove)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, hash");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	hash = (const char *)SvPV_nolen(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_bindata_remove(c, hash);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_bindata_list); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_bindata_list)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_bindata_list(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_config_register_value); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_config_register_value)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "c, valuename, defaultvalue");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	valuename = (const char *)SvPV_nolen(ST(1))
;
	const char *	defaultvalue = (const char *)SvPV_nolen(ST(2))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_config_register_value(c, valuename, defaultvalue);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_config_set_value); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_config_set_value)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "c, key, val");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	key = (const char *)SvPV_nolen(ST(1))
;
	const char *	val = (const char *)SvPV_nolen(ST(2))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_config_set_value(c, key, val);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_config_get_value); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_config_get_value)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, key");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	key = (const char *)SvPV_nolen(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_config_get_value(c, key);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_config_list_values); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_config_list_values)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_config_list_values(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_broadcast_config_value_changed); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_broadcast_config_value_changed)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_broadcast_config_value_changed(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_broadcast_mediainfo_reader_status); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_broadcast_mediainfo_reader_status)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_broadcast_mediainfo_reader_status(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_signal_mediainfo_reader_unindexed); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_signal_mediainfo_reader_unindexed)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_signal_mediainfo_reader_unindexed(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_userconfdir_get); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_userconfdir_get)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "class");
    {
#line 1468 "../src/clients/lib/perl/XMMSClient.xs"
		char path[XMMS_PATH_MAX];
#line 1679 "../src/clients/lib/perl/XMMSClient.c"
	const char *	RETVAL;
	dXSTARG;
#line 1470 "../src/clients/lib/perl/XMMSClient.xs"
		RETVAL = xmmsc_userconfdir_get (path, XMMS_PATH_MAX);
#line 1684 "../src/clients/lib/perl/XMMSClient.c"
	sv_setpv(TARG, RETVAL);
	XSprePUSH;
	PUSHTARG;
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playback_tickle); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playback_tickle)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_playback_tickle(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playback_stop); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playback_stop)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_playback_stop(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playback_pause); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playback_pause)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_playback_pause(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playback_start); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playback_start)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_playback_start(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playback_seek_ms); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playback_seek_ms)
{
    dVAR; dXSARGS;
    if (items < 2 || items > 3)
       croak_xs_usage(cv,  "c, milliseconds, whence = XMMS_PLAYBACK_SEEK_SET");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	int32_t	milliseconds = (int32_t)SvIV(ST(1))
;
	xmms_playback_seek_mode_t	whence;
	xmmsc_result_t *	RETVAL;

	if (items < 3)
	    whence = XMMS_PLAYBACK_SEEK_SET;
	else {
	    {
		    char *seek_type = SvPV_nolen (ST(2));
		    if (strcmp (seek_type, "cur") == 0) {
			    whence = XMMS_PLAYBACK_SEEK_CUR;
		    }
		    else if (strcmp (seek_type, "set") == 0) {
			    whence = XMMS_PLAYBACK_SEEK_SET;
		    }
		    else {
			    croak ("unknown XMMSV_PLAYBACK_SEEK_MODE_T: %s", seek_type);
		    }
	    }
;
	}

	RETVAL = xmmsc_playback_seek_ms(c, milliseconds, whence);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playback_seek_samples); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playback_seek_samples)
{
    dVAR; dXSARGS;
    if (items < 2 || items > 3)
       croak_xs_usage(cv,  "c, samples, whence = XMMS_PLAYBACK_SEEK_SET");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	int32_t	samples = (int32_t)SvIV(ST(1))
;
	xmms_playback_seek_mode_t	whence;
	xmmsc_result_t *	RETVAL;

	if (items < 3)
	    whence = XMMS_PLAYBACK_SEEK_SET;
	else {
	    {
		    char *seek_type = SvPV_nolen (ST(2));
		    if (strcmp (seek_type, "cur") == 0) {
			    whence = XMMS_PLAYBACK_SEEK_CUR;
		    }
		    else if (strcmp (seek_type, "set") == 0) {
			    whence = XMMS_PLAYBACK_SEEK_SET;
		    }
		    else {
			    croak ("unknown XMMSV_PLAYBACK_SEEK_MODE_T: %s", seek_type);
		    }
	    }
;
	}

	RETVAL = xmmsc_playback_seek_samples(c, samples, whence);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_broadcast_playback_status); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_broadcast_playback_status)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_broadcast_playback_status(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playback_status); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playback_status)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_playback_status(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_broadcast_playback_current_id); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_broadcast_playback_current_id)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_broadcast_playback_current_id(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playback_current_id); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playback_current_id)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_playback_current_id(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_signal_playback_playtime); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_signal_playback_playtime)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_signal_playback_playtime(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playback_playtime); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playback_playtime)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_playback_playtime(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playback_volume_set); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playback_volume_set)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "c, channel, volume");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	channel = (const char *)SvPV_nolen(ST(1))
;
	uint32_t	volume = (uint32_t)SvUV(ST(2))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_playback_volume_set(c, channel, volume);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playback_volume_get); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playback_volume_get)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_playback_volume_get(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_broadcast_playback_volume_changed); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_broadcast_playback_volume_changed)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_broadcast_playback_volume_changed(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playlist_list); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playlist_list)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_playlist_list(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_broadcast_playlist_changed); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_broadcast_playlist_changed)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_broadcast_playlist_changed(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_broadcast_playlist_current_pos); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_broadcast_playlist_current_pos)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_broadcast_playlist_current_pos(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_broadcast_playlist_loaded); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_broadcast_playlist_loaded)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_broadcast_playlist_loaded(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playlist_current_active); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playlist_current_active)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_playlist_current_active(c);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playlist_set_next); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playlist_set_next)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, pos");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	uint32_t	pos = (uint32_t)SvUV(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_playlist_set_next(c, pos);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_playlist_set_next_rel); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_playlist_set_next_rel)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, pos");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	int32_t	pos = (int32_t)SvIV(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_playlist_set_next_rel(c, pos);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_coll_idlist_from_playlist_file); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_coll_idlist_from_playlist_file)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "c, path");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	const char *	path = (const char *)SvPV_nolen(ST(1))
;
	xmmsc_result_t *	RETVAL;

	RETVAL = xmmsc_coll_idlist_from_playlist_file(c, path);
	{
	    SV * RETVALSV;
	    RETVALSV = perl_xmmsclient_new_sv_from_ptr (RETVAL, "Audio::XMMSClient::Result");
	    RETVALSV = sv_2mortal(RETVALSV);
	    ST(0) = RETVALSV;
	}
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_io_want_out); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_io_want_out)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	int	RETVAL;
	dXSTARG;

	RETVAL = xmmsc_io_want_out(c);
	XSprePUSH;
	PUSHi((IV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_io_out_handle); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_io_out_handle)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	int	RETVAL;
	dXSTARG;

	RETVAL = xmmsc_io_out_handle(c);
	XSprePUSH;
	PUSHi((IV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_io_in_handle); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_io_in_handle)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	int	RETVAL;
	dXSTARG;

	RETVAL = xmmsc_io_in_handle(c);
	XSprePUSH;
	PUSHi((IV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_io_fd_get); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_io_fd_get)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	int	RETVAL;
	dXSTARG;

	RETVAL = xmmsc_io_fd_get(c);
	XSprePUSH;
	PUSHi((IV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_Audio__XMMSClient_io_need_out_callback_set); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_io_need_out_callback_set)
{
    dVAR; dXSARGS;
    if (items < 2 || items > 3)
       croak_xs_usage(cv,  "c, func, data=NULL");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
	SV *	func = ST(1)
;
	SV *	data;
#line 2083 "../src/clients/lib/perl/XMMSClient.xs"
		PerlXMMSClientCallback *cb = NULL;
		PerlXMMSClientCallbackParamType param_types[2];
#line 2369 "../src/clients/lib/perl/XMMSClient.c"

	if (items < 3)
	    data = NULL;
	else {
	    data = ST(2)
;
	}
#line 2086 "../src/clients/lib/perl/XMMSClient.xs"
		param_types[0] = PERL_XMMSCLIENT_CALLBACK_PARAM_TYPE_CONNECTION;
		param_types[1] = PERL_XMMSCLIENT_CALLBACK_PARAM_TYPE_FLAG;

		cb = perl_xmmsclient_callback_new (func, data, ST(0), 2, param_types,
		                                   PERL_XMMSCLIENT_CALLBACK_RETURN_TYPE_NONE);

		xmmsc_io_need_out_callback_set_full (c,
		                                     perl_xmmsclient_xmmsc_io_need_out_callback_set_cb, cb,
		                                     (xmmsc_user_data_free_func_t)perl_xmmsclient_callback_destroy);
#line 2387 "../src/clients/lib/perl/XMMSClient.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_Audio__XMMSClient_DESTROY); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Audio__XMMSClient_DESTROY)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "c");
    {
	xmmsc_connection_t *	c = (xmmsc_connection_t *)perl_xmmsclient_get_ptr_from_sv (ST(0), "Audio::XMMSClient")
;
#line 2131 "../src/clients/lib/perl/XMMSClient.xs"
		xmmsc_unref (c);
#line 2404 "../src/clients/lib/perl/XMMSClient.c"
    }
    XSRETURN_EMPTY;
}

#ifdef __cplusplus
extern "C"
#endif
XS_EXTERNAL(boot_Audio__XMMSClient); /* prototype to pass -Wmissing-prototypes */
XS_EXTERNAL(boot_Audio__XMMSClient)
{
#if PERL_VERSION_LE(5, 21, 5)
    dVAR; dXSARGS;
#else
    dVAR; dXSBOOTARGSXSAPIVERCHK;
#endif
#if PERL_VERSION_LE(5, 8, 999) /* PERL_VERSION_LT is 5.33+ */
    char* file = __FILE__;
#else
    const char* file = __FILE__;
#endif

    PERL_UNUSED_VAR(file);

    PERL_UNUSED_VAR(cv); /* -W */
    PERL_UNUSED_VAR(items); /* -W */
#if PERL_VERSION_LE(5, 21, 5)
    XS_VERSION_BOOTCHECK;
#  ifdef XS_APIVERSION_BOOTCHECK
    XS_APIVERSION_BOOTCHECK;
#  endif
#endif

        newXS_deffile("Audio::XMMSClient::new", XS_Audio__XMMSClient_new);
        newXS_deffile("Audio::XMMSClient::connect", XS_Audio__XMMSClient_connect);
        newXS_deffile("Audio::XMMSClient::disconnect_callback_set", XS_Audio__XMMSClient_disconnect_callback_set);
        newXS_deffile("Audio::XMMSClient::io_disconnect", XS_Audio__XMMSClient_io_disconnect);
        newXS_deffile("Audio::XMMSClient::get_last_error", XS_Audio__XMMSClient_get_last_error);
        newXS_deffile("Audio::XMMSClient::main_list_plugins", XS_Audio__XMMSClient_main_list_plugins);
        newXS_deffile("Audio::XMMSClient::main_stats", XS_Audio__XMMSClient_main_stats);
        newXS_deffile("Audio::XMMSClient::quit", XS_Audio__XMMSClient_quit);
        newXS_deffile("Audio::XMMSClient::broadcast_quit", XS_Audio__XMMSClient_broadcast_quit);
        newXS_deffile("Audio::XMMSClient::medialib_get_id", XS_Audio__XMMSClient_medialib_get_id);
        newXS_deffile("Audio::XMMSClient::medialib_move_entry", XS_Audio__XMMSClient_medialib_move_entry);
        newXS_deffile("Audio::XMMSClient::medialib_remove_entry", XS_Audio__XMMSClient_medialib_remove_entry);
        newXS_deffile("Audio::XMMSClient::medialib_add_entry", XS_Audio__XMMSClient_medialib_add_entry);
        newXS_deffile("Audio::XMMSClient::medialib_add_entry_args", XS_Audio__XMMSClient_medialib_add_entry_args);
        newXS_deffile("Audio::XMMSClient::medialib_add_entry_encoded", XS_Audio__XMMSClient_medialib_add_entry_encoded);
        newXS_deffile("Audio::XMMSClient::playlist", XS_Audio__XMMSClient_playlist);
        cv = newXS_deffile("Audio::XMMSClient::medialib_import_path", XS_Audio__XMMSClient_medialib_import_path);
        XSANY.any_i32 = 0;
        cv = newXS_deffile("Audio::XMMSClient::medialib_path_import", XS_Audio__XMMSClient_medialib_import_path);
        XSANY.any_i32 = 1;
        cv = newXS_deffile("Audio::XMMSClient::medialib_import_path_encoded", XS_Audio__XMMSClient_medialib_import_path_encoded);
        XSANY.any_i32 = 0;
        cv = newXS_deffile("Audio::XMMSClient::medialib_path_import_encoded", XS_Audio__XMMSClient_medialib_import_path_encoded);
        XSANY.any_i32 = 1;
        newXS_deffile("Audio::XMMSClient::medialib_rehash", XS_Audio__XMMSClient_medialib_rehash);
        newXS_deffile("Audio::XMMSClient::medialib_get_info", XS_Audio__XMMSClient_medialib_get_info);
        newXS_deffile("Audio::XMMSClient::broadcast_medialib_entry_added", XS_Audio__XMMSClient_broadcast_medialib_entry_added);
        cv = newXS_deffile("Audio::XMMSClient::broadcast_medialib_entry_changed", XS_Audio__XMMSClient_broadcast_medialib_entry_updated);
        XSANY.any_i32 = 1;
        cv = newXS_deffile("Audio::XMMSClient::broadcast_medialib_entry_updated", XS_Audio__XMMSClient_broadcast_medialib_entry_updated);
        XSANY.any_i32 = 0;
        newXS_deffile("Audio::XMMSClient::medialib_entry_property_set_int", XS_Audio__XMMSClient_medialib_entry_property_set_int);
        newXS_deffile("Audio::XMMSClient::medialib_entry_property_set_int_with_source", XS_Audio__XMMSClient_medialib_entry_property_set_int_with_source);
        newXS_deffile("Audio::XMMSClient::medialib_entry_property_set_str", XS_Audio__XMMSClient_medialib_entry_property_set_str);
        newXS_deffile("Audio::XMMSClient::medialib_entry_property_set_str_with_source", XS_Audio__XMMSClient_medialib_entry_property_set_str_with_source);
        newXS_deffile("Audio::XMMSClient::medialib_entry_property_remove", XS_Audio__XMMSClient_medialib_entry_property_remove);
        newXS_deffile("Audio::XMMSClient::medialib_entry_property_remove_with_source", XS_Audio__XMMSClient_medialib_entry_property_remove_with_source);
        newXS_deffile("Audio::XMMSClient::coll_get", XS_Audio__XMMSClient_coll_get);
        newXS_deffile("Audio::XMMSClient::coll_sync", XS_Audio__XMMSClient_coll_sync);
        newXS_deffile("Audio::XMMSClient::coll_list", XS_Audio__XMMSClient_coll_list);
        newXS_deffile("Audio::XMMSClient::coll_save", XS_Audio__XMMSClient_coll_save);
        newXS_deffile("Audio::XMMSClient::coll_remove", XS_Audio__XMMSClient_coll_remove);
        newXS_deffile("Audio::XMMSClient::coll_find", XS_Audio__XMMSClient_coll_find);
        newXS_deffile("Audio::XMMSClient::coll_rename", XS_Audio__XMMSClient_coll_rename);
        newXS_deffile("Audio::XMMSClient::coll_query_ids", XS_Audio__XMMSClient_coll_query_ids);
        newXS_deffile("Audio::XMMSClient::coll_query_infos", XS_Audio__XMMSClient_coll_query_infos);
        newXS_deffile("Audio::XMMSClient::coll_query", XS_Audio__XMMSClient_coll_query);
        newXS_deffile("Audio::XMMSClient::broadcast_collection_changed", XS_Audio__XMMSClient_broadcast_collection_changed);
        newXS_deffile("Audio::XMMSClient::xform_media_browse", XS_Audio__XMMSClient_xform_media_browse);
        newXS_deffile("Audio::XMMSClient::xform_media_browse_encoded", XS_Audio__XMMSClient_xform_media_browse_encoded);
        newXS_deffile("Audio::XMMSClient::bindata_add", XS_Audio__XMMSClient_bindata_add);
        newXS_deffile("Audio::XMMSClient::bindata_retrieve", XS_Audio__XMMSClient_bindata_retrieve);
        newXS_deffile("Audio::XMMSClient::bindata_remove", XS_Audio__XMMSClient_bindata_remove);
        newXS_deffile("Audio::XMMSClient::bindata_list", XS_Audio__XMMSClient_bindata_list);
        newXS_deffile("Audio::XMMSClient::config_register_value", XS_Audio__XMMSClient_config_register_value);
        newXS_deffile("Audio::XMMSClient::config_set_value", XS_Audio__XMMSClient_config_set_value);
        newXS_deffile("Audio::XMMSClient::config_get_value", XS_Audio__XMMSClient_config_get_value);
        newXS_deffile("Audio::XMMSClient::config_list_values", XS_Audio__XMMSClient_config_list_values);
        newXS_deffile("Audio::XMMSClient::broadcast_config_value_changed", XS_Audio__XMMSClient_broadcast_config_value_changed);
        newXS_deffile("Audio::XMMSClient::broadcast_mediainfo_reader_status", XS_Audio__XMMSClient_broadcast_mediainfo_reader_status);
        newXS_deffile("Audio::XMMSClient::signal_mediainfo_reader_unindexed", XS_Audio__XMMSClient_signal_mediainfo_reader_unindexed);
        newXS_deffile("Audio::XMMSClient::userconfdir_get", XS_Audio__XMMSClient_userconfdir_get);
        newXS_deffile("Audio::XMMSClient::playback_tickle", XS_Audio__XMMSClient_playback_tickle);
        newXS_deffile("Audio::XMMSClient::playback_stop", XS_Audio__XMMSClient_playback_stop);
        newXS_deffile("Audio::XMMSClient::playback_pause", XS_Audio__XMMSClient_playback_pause);
        newXS_deffile("Audio::XMMSClient::playback_start", XS_Audio__XMMSClient_playback_start);
        newXS_deffile("Audio::XMMSClient::playback_seek_ms", XS_Audio__XMMSClient_playback_seek_ms);
        newXS_deffile("Audio::XMMSClient::playback_seek_samples", XS_Audio__XMMSClient_playback_seek_samples);
        newXS_deffile("Audio::XMMSClient::broadcast_playback_status", XS_Audio__XMMSClient_broadcast_playback_status);
        newXS_deffile("Audio::XMMSClient::playback_status", XS_Audio__XMMSClient_playback_status);
        newXS_deffile("Audio::XMMSClient::broadcast_playback_current_id", XS_Audio__XMMSClient_broadcast_playback_current_id);
        newXS_deffile("Audio::XMMSClient::playback_current_id", XS_Audio__XMMSClient_playback_current_id);
        newXS_deffile("Audio::XMMSClient::signal_playback_playtime", XS_Audio__XMMSClient_signal_playback_playtime);
        newXS_deffile("Audio::XMMSClient::playback_playtime", XS_Audio__XMMSClient_playback_playtime);
        newXS_deffile("Audio::XMMSClient::playback_volume_set", XS_Audio__XMMSClient_playback_volume_set);
        newXS_deffile("Audio::XMMSClient::playback_volume_get", XS_Audio__XMMSClient_playback_volume_get);
        newXS_deffile("Audio::XMMSClient::broadcast_playback_volume_changed", XS_Audio__XMMSClient_broadcast_playback_volume_changed);
        newXS_deffile("Audio::XMMSClient::playlist_list", XS_Audio__XMMSClient_playlist_list);
        newXS_deffile("Audio::XMMSClient::broadcast_playlist_changed", XS_Audio__XMMSClient_broadcast_playlist_changed);
        newXS_deffile("Audio::XMMSClient::broadcast_playlist_current_pos", XS_Audio__XMMSClient_broadcast_playlist_current_pos);
        newXS_deffile("Audio::XMMSClient::broadcast_playlist_loaded", XS_Audio__XMMSClient_broadcast_playlist_loaded);
        newXS_deffile("Audio::XMMSClient::playlist_current_active", XS_Audio__XMMSClient_playlist_current_active);
        newXS_deffile("Audio::XMMSClient::playlist_set_next", XS_Audio__XMMSClient_playlist_set_next);
        newXS_deffile("Audio::XMMSClient::playlist_set_next_rel", XS_Audio__XMMSClient_playlist_set_next_rel);
        newXS_deffile("Audio::XMMSClient::coll_idlist_from_playlist_file", XS_Audio__XMMSClient_coll_idlist_from_playlist_file);
        newXS_deffile("Audio::XMMSClient::io_want_out", XS_Audio__XMMSClient_io_want_out);
        newXS_deffile("Audio::XMMSClient::io_out_handle", XS_Audio__XMMSClient_io_out_handle);
        newXS_deffile("Audio::XMMSClient::io_in_handle", XS_Audio__XMMSClient_io_in_handle);
        newXS_deffile("Audio::XMMSClient::io_fd_get", XS_Audio__XMMSClient_io_fd_get);
        newXS_deffile("Audio::XMMSClient::io_need_out_callback_set", XS_Audio__XMMSClient_io_need_out_callback_set);
        newXS_deffile("Audio::XMMSClient::DESTROY", XS_Audio__XMMSClient_DESTROY);

    /* Initialisation Section */

#line 2180 "../src/clients/lib/perl/XMMSClient.xs"
	PERL_UNUSED_VAR (items);
	PERL_XMMSCLIENT_CALL_BOOT (boot_Audio__XMMSClient__Playlist);
	PERL_XMMSCLIENT_CALL_BOOT (boot_Audio__XMMSClient__Collection);
	PERL_XMMSCLIENT_CALL_BOOT (boot_Audio__XMMSClient__Result);

#line 2537 "../src/clients/lib/perl/XMMSClient.c"

    /* End of Initialisation Section */

#if PERL_VERSION_LE(5, 21, 5)
#  if PERL_VERSION_GE(5, 9, 0)
    if (PL_unitcheckav)
        call_list(PL_scopestack_ix, PL_unitcheckav);
#  endif
    XSRETURN_YES;
#else
    Perl_xs_boot_epilog(aTHX_ ax);
#endif
}

