Xmms-Perl
view release on metacpan or search on metacpan
Remote/Remote.xs view on Meta::CPAN
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "fcntl.h"
#undef list
#include "xmms/xmmsctrl.h"
typedef gint Xmms__Remote;
#define PUSHgint(g) PUSHs(sv_2mortal(newSViv(g)))
#define CURRENT_POS \
xmms_remote_get_playlist_pos(session)
static gint xmms_session = 0;
#define xmms_remote_prefs_win_toggle(session, show) \
xmms_remote_show_prefs_box(session)
#ifndef HAS_ADD_URL
#define xmms_remote_playlist_add_url_string(session, string) \
croak("playlist_add_url not available")
#endif
#define xmms_remote_playlist_add_url \
xmms_remote_playlist_add_url_string
#ifndef HAS_DELETE
#define xmms_remote_playlist_delete(session, pos) \
croak("playlist_delete not available")
#endif
static AV *svrv_2av(SV *avrv)
{
if (!(SvROK(avrv) && SvTYPE(SvRV(avrv)) == SVt_PVAV)) {
croak("not an ARRAY reference");
}
return (AV*)SvRV(avrv);
}
static GList *avrv_2glist(SV *avrv)
{
AV *av = svrv_2av(avrv);
STRLEN n_a;
I32 i;
GList *list = 0;
for (i=0; i<=AvFILL(av); i++) {
list = g_list_append(list, SvPV(*av_fetch(av, i, FALSE), n_a));
}
return list;
}
static gchar **avrv_2gchar_list(SV *avrv, gint *num)
{
AV *av = svrv_2av(avrv);
STRLEN n_a;
I32 i;
gchar **list;
*num = (gint)AvFILL(av)+1;
list = (gchar **)g_malloc0(*num * sizeof(gchar *));
for (i=0; i<=AvFILL(av); i++) {
list[i] = (gchar *)SvPV(*av_fetch(av, i, FALSE), n_a);
}
return list;
}
typedef gchar * (*playlist_do_func)(gint, gint);
static AV *playlist_do(gint session, playlist_do_func func)
{
gint i;
AV *av = newAV();
Remote/Remote.xs view on Meta::CPAN
xmms_remote_get_playlist_titles(session)
Xmms::Remote session
CODE:
RETVAL = playlist_do(session, xmms_remote_get_playlist_title);
OUTPUT:
RETVAL
gint
xmms_remote_get_playlist_time(session, pos=CURRENT_POS)
Xmms::Remote session
gint pos
SV *
xmms_remote_get_playlist_timestr(session, pos=CURRENT_POS)
Xmms::Remote session
gint pos
PREINIT:
gint length;
CODE:
length = xmms_remote_get_playlist_time(session, pos);
RETVAL = newSV(5);
sv_setpvf(RETVAL, "%d:%-2.2d", length/60000, (length/1000) % 60);
OUTPUT:
RETVAL
void
xmms_remote_get_info(session)
Xmms::Remote session
PREINIT:
gint rate, freq, nch;
PPCODE:
xmms_remote_get_info(session, &rate, &freq, &nch);
EXTEND(sp, 3);
PUSHgint(rate);
PUSHgint(freq);
PUSHgint(nch);
void
xmms_remote_main_win_toggle(session, show)
Xmms::Remote session
gboolean show
void
xmms_remote_pl_win_toggle(session, show)
Xmms::Remote session
gboolean show
void
xmms_remote_eq_win_toggle(session, show)
Xmms::Remote session
gboolean show
void
xmms_remote_prefs_win_toggle(session, show)
Xmms::Remote session
gboolean show
void
xmms_remote_show_prefs_box(session)
Xmms::Remote session
void
xmms_remote_toggle_aot(session, ontop)
Xmms::Remote session
gboolean ontop
gboolean
xmms_remote_is_main_win(session)
Xmms::Remote session
gboolean
xmms_remote_is_pl_win(session)
Xmms::Remote session
gboolean
xmms_remote_is_eq_win(session)
Xmms::Remote session
void
xmms_remote_eject(session)
Xmms::Remote session
void
xmms_remote_playlist_prev(session)
Xmms::Remote session
void
xmms_remote_playlist_next(session)
Xmms::Remote session
gboolean
xmms_remote_is_running(session)
Xmms::Remote session
void
xmms_remote_toggle_repeat(session)
Xmms::Remote session
void
xmms_remote_toggle_shuffle(session)
Xmms::Remote session
gint
xmms_remote_is_repeat(session)
Xmms::Remote session
gint
xmms_remote_is_shuffle(session)
Xmms::Remote session
void
xmms_remote_get_eq(session)
Xmms::Remote session
PREINIT:
gfloat preamp;
gfloat *bands;
PPCODE:
( run in 0.885 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )