Anarres-Mud-Driver

 view release on metacpan or  search on metacpan

Efun/Core/Core.xs  view on Meta::CPAN

#include <EXTERN.h>
#include <perl.h>
#include <XSUB.h>

MODULE = Anarres::Mud::Driver::Efun::Core PACKAGE = Anarres::Mud::Driver::Efun::Core

PROTOTYPES: ENABLE

MODULE = Anarres::Mud::Driver::Efun::Core PACKAGE = Anarres::Mud::Driver::Efun::Core::intp

int
invoke(arg)
	SV *	arg
	CODE:
		RETVAL = SvIOKp(arg);	/* Not necessarily the best way? */
	OUTPUT:
		RETVAL

MODULE = Anarres::Mud::Driver::Efun::Core PACKAGE = Anarres::Mud::Driver::Efun::Core::floatp

int
invoke(arg)
	SV *	arg
	CODE:
		RETVAL = SvNOKp(arg);
	OUTPUT:
		RETVAL

MODULE = Anarres::Mud::Driver::Efun::Core PACKAGE = Anarres::Mud::Driver::Efun::Core::stringp

int
invoke(arg)
	SV *	arg
	CODE:
		RETVAL = SvPOKp(arg);
	OUTPUT:
		RETVAL

MODULE = Anarres::Mud::Driver::Efun::Core PACKAGE = Anarres::Mud::Driver::Efun::Core::replace_string

SV *
invoke(big, find, replace)
	char *	big
	char *	find
	char *	replace
	CODE:
		{
			/* This is horribly slow but will do for now. */
			char	*op;
			char	*cp;
			int		 flen;
			int		 rlen;

			flen = strlen(find);
			rlen = strlen(replace);

			RETVAL = sv_2mortal(newSVpvn("", 0));

			op = big;
			cp = strstr(big, find);

			while (cp) {
				sv_catpvn(RETVAL, op, (cp - op));
				sv_catpvn(RETVAL, replace, rlen);
				op = cp + flen;
				cp = strstr(op, find);
			}
			sv_catpv(RETVAL, op);
		}
	OUTPUT:
		RETVAL

MODULE = Anarres::Mud::Driver::Efun::Core PACKAGE = Anarres::Mud::Driver::Efun::Core::explode

SV *



( run in 1.316 second using v1.01-cache-2.11-cpan-2398b32b56e )