The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

SV * dubble(SV * in) {
 return newSViv(SvIV(in) * 2);
}

int dubb (int in) {
 return (in * 2);
}

/*
#define Inline_Stack_Vars	dXSARGS
#define Inline_Stack_Items      items
#define Inline_Stack_Item(x)	ST(x)
#define Inline_Stack_Reset      sp = mark
#define Inline_Stack_Push(x)	XPUSHs(x)
#define Inline_Stack_Done	PUTBACK
#define Inline_Stack_Return(x)	XSRETURN(x)
#define Inline_Stack_Void       XSRETURN(0)
*/

void dv( int in ) {
  dXSARGS;
  sp = mark;
  XPUSHs(sv_2mortal(newSViv(in * 2)));
  PUTBACK;
  XSRETURN(1);
}

void vv ( int in ) {
  printf("%d\n", in * 2);
}

int dub( SV * in ) {
  return (SvIV(in) * 2);
}

unsigned long dubul (SV* in) {
  return (SvUV(in) * 2);
}

double dubd (double in) {
  return (in * 2.0);
}


SV * call_dub(SV * in) {
  return newSVuv(dub(in));
}

SV * call_dubd ( SV* in ) {
  double ret = dubd((double)SvNV(in));
  return newSVuv(ret);
}