LibTracker-Client
view release on metacpan or search on metacpan
}
OUTPUT:
RETVAL
SV*
get_suggestion (obj, searchtext, maxdist)
SV* obj;
const char* searchtext;
int maxdist;
PREINIT:
char* ret;
GError *error = NULL;
TrackerClient* client;
CODE:
client = (TrackerClient*) SvIV(SvRV(obj));
ST(0) = sv_newmortal();
ret = tracker_search_suggest(client,searchtext, maxdist, &error);
if(error)
ST(0) = &PL_sv_undef;
else
sv_setpv( ST(0), ret );
free(ret);
SV*
get_files_by_service (obj, lqi, servicetype, offset, maxhits)
SV* obj;
int lqi;
int servicetype;
int offset;
int maxhits;
PREINIT:
I32 i;
char** ret;
GError *error = NULL;
TrackerClient* client;
AV* ra;
CODE:
assert_valid_servicetype(servicetype);
client = (TrackerClient*) SvIV(SvRV(obj));
ret = tracker_files_get_by_service_type(client, lqi, servicetype, offset, maxhits, &error);
ra = (AV *) sv_2mortal( (SV *) newAV() );
if(error)
RETVAL = &PL_sv_undef;
else {
for(i = 0; ret[i]; i++)
av_push(ra, newSVpv(ret[i], 0));
RETVAL = newRV( (SV *) ra);
g_strfreev(ret); /* don't leak */
}
OUTPUT:
RETVAL
void
DESTROY (obj)
SV* obj
PREINIT:
I32* temp;
PPCODE:
/* this is stolen from Inline::C documentation */
temp = PL_markstack_ptr++;
DESTROY(obj);
if(PL_markstack_ptr != temp) {
/* truly void, because dXSARGS not invoked */
PL_markstack_ptr = temp;
XSRETURN_EMPTY;
}
/* must have used dXSARGS; list context implied */
return; /* assume stack size is correct */
( run in 1.844 second using v1.01-cache-2.11-cpan-71847e10f99 )