LibTracker-Client

 view release on metacpan or  search on metacpan

Client.xs  view on Meta::CPAN

		}
	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 )