		/*
		 * This file was generated automatically by ExtUtils::ParseXS version 2.10 from the
		 * contents of Typemap.xs. Do not edit this file, edit Typemap.xs instead.
		 *
		 *	ANY CHANGES MADE HERE WILL BE LOST! 
		 *
		 */
		
		#line 1 "Typemap.xs"
		
		/*
		   XS code to test the typemap entries
		
		   Copyright (C) 2001 Tim Jenness.
		   All Rights Reserved
		
		*/
		
		#include "EXTERN.h"   /* std perl include */
		#include "perl.h"     /* std perl include */
		#include "XSUB.h"     /* XSUB include */
		
		/* Prototypes for external functions */
		FILE * xsfopen( const char * );
		int xsfclose( FILE * );
		int xsfprintf( FILE *, const char *);
		
		/* Type definitions required for the XS typemaps */
		typedef SV * SVREF; /* T_SVREF */
		typedef int SysRet; /* T_SYSRET */
		typedef int Int;    /* T_INT */
		typedef int intRef; /* T_PTRREF */
		typedef int intObj; /* T_PTROBJ */
		typedef int intRefIv; /* T_REF_IV_PTR */
		typedef int intArray; /* T_ARRAY */
		typedef short shortOPQ;   /* T_OPAQUE */
		typedef int intOpq;   /* T_OPAQUEPTR */
		
		/* A structure to test T_OPAQUEPTR */
		struct t_opaqueptr {
		  int a;
		  int b;
		  double c;
		};
		
		typedef struct t_opaqueptr astruct;
		
		/* Some static memory for the tests */
		static I32 xst_anint;
		static intRef xst_anintref;
		static intObj xst_anintobj;
		static intRefIv xst_anintrefiv;
		static intOpq xst_anintopq;
		
		/* Helper functions */
		
		/* T_ARRAY - allocate some memory */
		intArray * intArrayPtr( int nelem ) {
		    intArray * array;
		    New(0, array, nelem, intArray);
		    return array;
		}
		
		
		#ifndef PERL_UNUSED_VAR
		#  define PERL_UNUSED_VAR(var) if (0) var = var
		#endif
		
		#line 70 "Typemap.c"
		
		XS(XS_XS__Typemap_T_SV); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_SV)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_SV(sv)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	SV *	sv = ST(0);
           1    	SV *	RETVAL;
		#line 80 "Typemap.xs"
		  /* create a new sv for return that is a copy of the input
		     do not simply copy the pointer since the SV will be marked
		     mortal by the INPUT typemap when it is pushed back onto the stack */
		  RETVAL = sv_mortalcopy( sv );
		  /* increment the refcount since the default INPUT typemap mortalizes
		     by default and we don't want to decrement the ref count twice
		     by mistake */
		  SvREFCNT_inc(RETVAL);
		#line 91 "Typemap.c"
           1    	ST(0) = RETVAL;
           1    	sv_2mortal(ST(0));
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_SVREF); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_SVREF)
           2    {
           2        dXSARGS;
           2        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_SVREF(svref)");
           2        PERL_UNUSED_VAR(cv); /* -W */
		    {
           2    	SVREF	svref;
           2    	SVREF	RETVAL;
		
           2    	if (SvROK(ST(0)))
           1    	    svref = (SV*)SvRV(ST(0));
			else
           1    	    Perl_croak(aTHX_ "svref is not a reference");
		#line 101 "Typemap.xs"
		  RETVAL = svref;
		#line 116 "Typemap.c"
           1    	ST(0) = newRV((SV*)RETVAL);
           1    	sv_2mortal(ST(0));
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_AVREF); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_AVREF)
           2    {
           2        dXSARGS;
           2        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_AVREF(av)");
           2        PERL_UNUSED_VAR(cv); /* -W */
		    {
           2    	AV *	av;
           2    	AV *	RETVAL;
		
           2    	if (SvROK(ST(0)) && SvTYPE(SvRV(ST(0)))==SVt_PVAV)
           1    	    av = (AV*)SvRV(ST(0));
			else
           1    	    Perl_croak(aTHX_ "av is not an array reference");
		#line 116 "Typemap.xs"
		  RETVAL = av;
		#line 141 "Typemap.c"
           1    	ST(0) = newRV((SV*)RETVAL);
           1    	sv_2mortal(ST(0));
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_HVREF); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_HVREF)
           2    {
           2        dXSARGS;
           2        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_HVREF(hv)");
           2        PERL_UNUSED_VAR(cv); /* -W */
		    {
           2    	HV *	hv;
           2    	HV *	RETVAL;
		
           2    	if (SvROK(ST(0)) && SvTYPE(SvRV(ST(0)))==SVt_PVHV)
           1    	    hv = (HV*)SvRV(ST(0));
			else
           1    	    Perl_croak(aTHX_ "hv is not a hash reference");
		#line 131 "Typemap.xs"
		  RETVAL = hv;
		#line 166 "Typemap.c"
           1    	ST(0) = newRV((SV*)RETVAL);
           1    	sv_2mortal(ST(0));
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_CVREF); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_CVREF)
           2    {
           2        dXSARGS;
           2        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_CVREF(cv)");
           2        PERL_UNUSED_VAR(cv); /* -W */
		    {
           2    	CV *	cv;
           2    	CV *	RETVAL;
		
           2    	if (SvROK(ST(0)) && SvTYPE(SvRV(ST(0)))==SVt_PVCV)
           1    	    cv = (CV*)SvRV(ST(0));
			else
           1    	    Perl_croak(aTHX_ "cv is not a code reference");
		#line 147 "Typemap.xs"
		  RETVAL = cv;
		#line 191 "Typemap.c"
           1    	ST(0) = newRV((SV*)RETVAL);
           1    	sv_2mortal(ST(0));
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_SYSRET_pass); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_SYSRET_pass)
           1    {
           1        dXSARGS;
           1        if (items != 0)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_SYSRET_pass()");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	SysRet	RETVAL;
		#line 174 "Typemap.xs"
		  RETVAL = 0;
		#line 210 "Typemap.c"
           1    	ST(0) = sv_newmortal();
           1    	if (RETVAL != -1) {
           1    	    if (RETVAL == 0)
           1    		sv_setpvn(ST(0), "0 but true", 10);
			    else
      ######    		sv_setiv(ST(0), (IV)RETVAL);
			}
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_SYSRET_fail); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_SYSRET_fail)
           1    {
           1        dXSARGS;
           1        if (items != 0)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_SYSRET_fail()");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	SysRet	RETVAL;
		#line 183 "Typemap.xs"
		  RETVAL = -1;
		#line 234 "Typemap.c"
           1    	ST(0) = sv_newmortal();
           1    	if (RETVAL != -1) {
      ######    	    if (RETVAL == 0)
      ######    		sv_setpvn(ST(0), "0 but true", 10);
			    else
      ######    		sv_setiv(ST(0), (IV)RETVAL);
			}
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_UV); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_UV)
           2    {
           2        dXSARGS;
           2        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_UV(uv)");
           2        PERL_UNUSED_VAR(cv); /* -W */
		    {
           2    	unsigned int	uv = (unsigned int)SvUV(ST(0));
           2    	unsigned int	RETVAL;
           2    	dXSTARG;
		#line 197 "Typemap.xs"
		  RETVAL = uv;
		#line 260 "Typemap.c"
           2    	XSprePUSH; PUSHu((UV)RETVAL);
		    }
           2        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_IV); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_IV)
           5    {
           5        dXSARGS;
           5        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_IV(iv)");
           5        PERL_UNUSED_VAR(cv); /* -W */
		    {
           5    	long	iv = (long)SvIV(ST(0));
           5    	long	RETVAL;
           5    	dXSTARG;
		#line 212 "Typemap.xs"
		  RETVAL = iv;
		#line 280 "Typemap.c"
           5    	XSprePUSH; PUSHi((IV)RETVAL);
		    }
           5        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_ENUM); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_ENUM)
           1    {
           1        dXSARGS;
           1        if (items != 0)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_ENUM()");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	svtype	RETVAL;
           1    	dXSTARG;
		#line 239 "Typemap.xs"
		  RETVAL = SVt_PVHV;
		#line 299 "Typemap.c"
           1    	XSprePUSH; PUSHi((IV)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_BOOL); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_BOOL)
           4    {
           4        dXSARGS;
           4        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_BOOL(in)");
           4        PERL_UNUSED_VAR(cv); /* -W */
		    {
           4    	bool	in = (bool)SvTRUE(ST(0));
           4    	bool	RETVAL;
		#line 254 "Typemap.xs"
		  RETVAL = in;
		#line 318 "Typemap.c"
           4    	ST(0) = boolSV(RETVAL);
           4    	sv_2mortal(ST(0));
		    }
           4        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_U_SHORT); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_U_SHORT)
           2    {
           2        dXSARGS;
           2        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_U_SHORT(in)");
           2        PERL_UNUSED_VAR(cv); /* -W */
		    {
           2    	U16	in = (unsigned short)SvUV(ST(0));
           2    	U16	RETVAL;
           2    	dXSTARG;
		#line 284 "Typemap.xs"
		  RETVAL = in;
		#line 339 "Typemap.c"
           2    	XSprePUSH; PUSHu((UV)RETVAL);
		    }
           2        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_U_LONG); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_U_LONG)
           2    {
           2        dXSARGS;
           2        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_U_LONG(in)");
           2        PERL_UNUSED_VAR(cv); /* -W */
		    {
           2    	U32	in = (unsigned long)SvUV(ST(0));
           2    	U32	RETVAL;
           2    	dXSTARG;
		#line 309 "Typemap.xs"
		  RETVAL = in;
		#line 359 "Typemap.c"
           2    	XSprePUSH; PUSHu((UV)RETVAL);
		    }
           2        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_CHAR); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_CHAR)
           4    {
           4        dXSARGS;
           4        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_CHAR(in)");
           4        PERL_UNUSED_VAR(cv); /* -W */
		    {
           4    	char	in = (char)*SvPV_nolen(ST(0));
           4    	char	RETVAL;
           4    	dXSTARG;
		#line 323 "Typemap.xs"
		  RETVAL = in;
		#line 379 "Typemap.c"
           4    	XSprePUSH; PUSHp((char *)&RETVAL, 1);
		    }
           4        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_U_CHAR); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_U_CHAR)
           4    {
           4        dXSARGS;
           4        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_U_CHAR(in)");
           4        PERL_UNUSED_VAR(cv); /* -W */
		    {
           4    	unsigned char	in = (unsigned char)SvUV(ST(0));
           4    	unsigned char	RETVAL;
           4    	dXSTARG;
		#line 338 "Typemap.xs"
		  RETVAL = in;
		#line 399 "Typemap.c"
           4    	XSprePUSH; PUSHu((UV)RETVAL);
		    }
           4        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_FLOAT); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_FLOAT)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_FLOAT(in)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	float	in = (float)SvNV(ST(0));
           1    	float	RETVAL;
           1    	dXSTARG;
		#line 354 "Typemap.xs"
		  RETVAL = in;
		#line 419 "Typemap.c"
           1    	XSprePUSH; PUSHn((double)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_NV); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_NV)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_NV(in)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	NV	in = (NV)SvNV(ST(0));
           1    	NV	RETVAL;
           1    	dXSTARG;
		#line 370 "Typemap.xs"
		  RETVAL = in;
		#line 439 "Typemap.c"
           1    	XSprePUSH; PUSHn((NV)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_DOUBLE); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_DOUBLE)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_DOUBLE(in)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	double	in = (double)SvNV(ST(0));
           1    	double	RETVAL;
           1    	dXSTARG;
		#line 385 "Typemap.xs"
		  RETVAL = in;
		#line 459 "Typemap.c"
           1    	XSprePUSH; PUSHn((double)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_PV); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_PV)
           2    {
           2        dXSARGS;
           2        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_PV(in)");
           2        PERL_UNUSED_VAR(cv); /* -W */
		    {
           2    	char *	in = (char *)SvPV_nolen(ST(0));
           2    	char *	RETVAL;
           2    	dXSTARG;
		#line 399 "Typemap.xs"
		  RETVAL = in;
		#line 479 "Typemap.c"
           2    	sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
		    }
           2        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_PTR_OUT); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_PTR_OUT)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_PTR_OUT(in)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	int	in = (int)SvIV(ST(0));
           1    	void *	RETVAL;
           1    	dXSTARG;
		#line 417 "Typemap.xs"
		  xst_anint = in;
		  RETVAL = &xst_anint;
		#line 500 "Typemap.c"
           1    	XSprePUSH; PUSHi(PTR2IV(RETVAL));
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_PTR_IN); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_PTR_IN)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_PTR_IN(ptr)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	void *	ptr = INT2PTR(void *,SvIV(ST(0)));
           1    	int	RETVAL;
           1    	dXSTARG;
		#line 428 "Typemap.xs"
		  RETVAL = *(int *)ptr;
		#line 520 "Typemap.c"
           1    	XSprePUSH; PUSHi((IV)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_PTRREF_OUT); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_PTRREF_OUT)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_PTRREF_OUT(in)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	intRef	in = (intRef)SvIV(ST(0));
           1    	intRef *	RETVAL;
		#line 451 "Typemap.xs"
		  xst_anintref = in;
		  RETVAL = &xst_anintref;
		#line 540 "Typemap.c"
           1    	ST(0) = sv_newmortal();
           1    	sv_setref_pv(ST(0), Nullch, (void*)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_PTRREF_IN); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_PTRREF_IN)
           2    {
           2        dXSARGS;
           2        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_PTRREF_IN(ptr)");
           2        PERL_UNUSED_VAR(cv); /* -W */
		    {
           2    	intRef *	ptr;
           2    	intRef	RETVAL;
           2    	dXSTARG;
		
           2    	if (SvROK(ST(0))) {
           1    	    IV tmp = SvIV((SV*)SvRV(ST(0)));
           1    	    ptr = INT2PTR(intRef *,tmp);
			}
			else
           1    	    Perl_croak(aTHX_ "ptr is not a reference");
		#line 462 "Typemap.xs"
		  RETVAL = *ptr;
		#line 568 "Typemap.c"
           1    	XSprePUSH; PUSHi((IV)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_PTROBJ_OUT); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_PTROBJ_OUT)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_PTROBJ_OUT(in)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	intObj	in = (intObj)SvIV(ST(0));
           1    	intObj *	RETVAL;
		#line 489 "Typemap.xs"
		  xst_anintobj = in;
		  RETVAL = &xst_anintobj;
		#line 588 "Typemap.c"
           1    	ST(0) = sv_newmortal();
           1    	sv_setref_pv(ST(0), "intObjPtr", (void*)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_intObjPtr_T_PTROBJ_IN); /* prototype to pass -Wmissing-prototypes */
		XS(XS_intObjPtr_T_PTROBJ_IN)
           3    {
           3        dXSARGS;
           3        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: intObjPtr::T_PTROBJ_IN(ptr)");
           3        PERL_UNUSED_VAR(cv); /* -W */
		    {
           3    	intObj *	ptr;
           3    	intObj	RETVAL;
           3    	dXSTARG;
		
           3    	if (sv_derived_from(ST(0), "intObjPtr")) {
           2    	    IV tmp = SvIV((SV*)SvRV(ST(0)));
           2    	    ptr = INT2PTR(intObj *,tmp);
			}
			else
           1    	    Perl_croak(aTHX_ "ptr is not of type intObjPtr");
		#line 502 "Typemap.xs"
		  RETVAL = *ptr;
		#line 616 "Typemap.c"
           2    	XSprePUSH; PUSHi((IV)RETVAL);
		    }
           2        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_REF_IV_PTR_OUT); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_REF_IV_PTR_OUT)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_REF_IV_PTR_OUT(in)");
           1        PERL_UNUSED_VAR(cv); /* -W */
           1        {
           2    	intRefIv	in = (intRefIv)SvIV(ST(0));
           2    	intRefIv *	RETVAL;
		#line 532 "Typemap.xs"
		  xst_anintrefiv = in;
		  RETVAL = &xst_anintrefiv;
		#line 636 "Typemap.c"
           1    	ST(0) = sv_newmortal();
           1    	sv_setref_pv(ST(0), "intRefIvPtr", (void*)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_intRefIvPtr_T_REF_IV_PTR_IN); /* prototype to pass -Wmissing-prototypes */
		XS(XS_intRefIvPtr_T_REF_IV_PTR_IN)
           2    {
           2        dXSARGS;
           2        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: intRefIvPtr::T_REF_IV_PTR_IN(ptr)");
           2        PERL_UNUSED_VAR(cv); /* -W */
		    {
           2    	intRefIv *	ptr;
           2    	intRefIv	RETVAL;
           2    	dXSTARG;
		
           2    	if (sv_isa(ST(0), "intRefIvPtr")) {
           1    	    IV tmp = SvIV((SV*)SvRV(ST(0)));
           1    	    ptr = INT2PTR(intRefIv *, tmp);
			}
			else
           1    	    Perl_croak(aTHX_ "ptr is not of type intRefIvPtr");
		#line 545 "Typemap.xs"
		  RETVAL = *ptr;
		#line 664 "Typemap.c"
           1    	XSprePUSH; PUSHi((IV)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_OPAQUEPTR_IN); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_OPAQUEPTR_IN)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_OPAQUEPTR_IN(val)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	intOpq	val = (intOpq)SvIV(ST(0));
           1    	intOpq *	RETVAL;
           1    	dXSTARG;
		#line 588 "Typemap.xs"
		  xst_anintopq = val;
		  RETVAL = &xst_anintopq;
		#line 685 "Typemap.c"
           1    	XSprePUSH; PUSHp((char *)RETVAL, sizeof(*RETVAL));
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_OPAQUEPTR_OUT); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_OPAQUEPTR_OUT)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_OPAQUEPTR_OUT(ptr)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	intOpq *	ptr = (intOpq *)SvPV_nolen(ST(0));
           1    	intOpq	RETVAL;
           1    	dXSTARG;
		#line 597 "Typemap.xs"
		  RETVAL = *ptr;
		#line 705 "Typemap.c"
           1    	XSprePUSH; PUSHi((IV)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_OPAQUEPTR_OUT_short); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_OPAQUEPTR_OUT_short)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_OPAQUEPTR_OUT_short(ptr)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	shortOPQ *	ptr = (shortOPQ *)SvPV_nolen(ST(0));
           1    	short	RETVAL;
           1    	dXSTARG;
		#line 605 "Typemap.xs"
		  RETVAL = *ptr;
		#line 725 "Typemap.c"
           1    	XSprePUSH; PUSHi((IV)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_OPAQUEPTR_IN_struct); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_OPAQUEPTR_IN_struct)
           1    {
           1        dXSARGS;
           1        if (items != 3)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_OPAQUEPTR_IN_struct(a, b, c)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	int	a = (int)SvIV(ST(0));
           1    	int	b = (int)SvIV(ST(1));
           1    	double	c = (double)SvNV(ST(2));
		#line 616 "Typemap.xs"
		  struct t_opaqueptr test;
		#line 745 "Typemap.c"
           1    	astruct *	RETVAL;
           1    	dXSTARG;
		#line 618 "Typemap.xs"
		  test.a = a;
		  test.b = b;
		  test.c = c;
		  RETVAL = &test;
		#line 753 "Typemap.c"
           1    	XSprePUSH; PUSHp((char *)RETVAL, sizeof(*RETVAL));
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_OPAQUEPTR_OUT_struct); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_OPAQUEPTR_OUT_struct)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_OPAQUEPTR_OUT_struct(test)");
           1        PERL_UNUSED_VAR(cv); /* -W */
           1        PERL_UNUSED_VAR(ax); /* -Wall */
           1        SP -= items;
		    {
           1    	astruct *	test = (astruct *)SvPV_nolen(ST(0));
		#line 629 "Typemap.xs"
		  XPUSHs(sv_2mortal(newSViv(test->a)));
		  XPUSHs(sv_2mortal(newSViv(test->b)));
		  XPUSHs(sv_2mortal(newSVnv(test->c)));
		#line 775 "Typemap.c"
           1    	PUTBACK;
			return;
		    }
		}
		
		
		XS(XS_XS__Typemap_T_OPAQUE_IN); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_OPAQUE_IN)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_OPAQUE_IN(val)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	int	val = (int)SvIV(ST(0));
           1    	shortOPQ	RETVAL;
           1    	dXSTARG;
		#line 657 "Typemap.xs"
		  RETVAL = (shortOPQ)val;
		#line 795 "Typemap.c"
           1    	XSprePUSH; PUSHp((char *)&RETVAL, sizeof(RETVAL));
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_OPAQUE_OUT); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_OPAQUE_OUT)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_OPAQUE_OUT(val)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	shortOPQ	val = *(shortOPQ *)SvPV_nolen(ST(0));
           1    	IV	RETVAL;
           1    	dXSTARG;
		#line 665 "Typemap.xs"
		  RETVAL = (IV)val;
		#line 815 "Typemap.c"
           1    	XSprePUSH; PUSHi((IV)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_OPAQUE_array); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_OPAQUE_array)
           1    {
           1        dXSARGS;
           1        if (items != 3)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_OPAQUE_array(a, b, c)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	int	a = (int)SvIV(ST(0));
           1    	int	b = (int)SvIV(ST(1));
           1    	int	c = (int)SvIV(ST(2));
		#line 694 "Typemap.xs"
		  int array[3];
		#line 835 "Typemap.c"
           1    	int *	RETVAL;
		#line 696 "Typemap.xs"
		  array[0] = a;
		  array[1] = b;
		  array[2] = c;
		  RETVAL = array;
		#line 842 "Typemap.c"
           1    	ST(0) = sv_newmortal();
           1    	sv_setpvn(ST(0), (char *)RETVAL, 3 * sizeof(int));
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_ARRAY); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_ARRAY)
           1    {
           1        dXSARGS;
           1        if (items < 2)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_ARRAY(dummy, array, ...)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	int	dummy = 0;
           1    	intArray *	array;
		#line 770 "Typemap.xs"
		  U32 size_RETVAL;
		#line 862 "Typemap.c"
           1    	intArray *	RETVAL;
		
           1    	U32 ix_array = 1;
           1    	array = intArrayPtr(items -= 1);
          11    	while (items--) {
          10    	    	array[ix_array - 1] = (int)SvIV(ST(ix_array));
          10    	    ix_array++;
			}
		        /* this is the number of elements in the array */
           1            ix_array -= 1;
		#line 772 "Typemap.xs"
		  dummy += 0; /* Fix -Wall */
		  size_RETVAL = ix_array;
		  RETVAL = array;
		#line 877 "Typemap.c"
		        {
           1    	    U32 ix_RETVAL;
           1    	    EXTEND(SP,size_RETVAL);
          11    	    for (ix_RETVAL = 0; ix_RETVAL < size_RETVAL; ix_RETVAL++) {
          10    		ST(ix_RETVAL) = sv_newmortal();
          10    		sv_setiv(ST(ix_RETVAL), (IV)RETVAL[ix_RETVAL]);
			    }
		        }
		#line 778 "Typemap.xs"
		  Safefree(array);
		  XSRETURN(size_RETVAL);
		#line 889 "Typemap.c"
		    }
		    XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_STDIO_open); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_STDIO_open)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_STDIO_open(file)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	const char *	file = (const char *)SvPV_nolen(ST(0));
           1    	FILE *	RETVAL;
		#line 793 "Typemap.xs"
		  RETVAL = xsfopen( file );
		#line 907 "Typemap.c"
           1    	ST(0) = sv_newmortal();
			{
           1    	    GV *gv = newGVgen("XS::Typemap");
           1    	    PerlIO *fp = PerlIO_importFILE(RETVAL,0);
           1    	    if ( fp && do_open(gv, "+<&", 3, FALSE, 0, 0, fp) )
           1    		sv_setsv(ST(0), sv_bless(newRV((SV*)gv), gv_stashpv("XS::Typemap",1)));
			    else
      ######    		ST(0) = &PL_sv_undef;
			}
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_STDIO_close); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_STDIO_close)
           1    {
           1        dXSARGS;
           1        if (items != 1)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_STDIO_close(f)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	PerlIO *	f = IoIFP(sv_2io(ST(0)));
		#line 801 "Typemap.xs"
		  FILE * stream;
		#line 933 "Typemap.c"
           1    	SysRet	RETVAL;
		#line 803 "Typemap.xs"
		  /* Get the FILE* */
		  stream = PerlIO_findFILE( f );  
		  RETVAL = xsfclose( stream );
		  /* Release the FILE* from the PerlIO system so that we do
		     not close the file twice */
		  PerlIO_releaseFILE(f,stream);
		#line 942 "Typemap.c"
           1    	ST(0) = sv_newmortal();
           1    	if (RETVAL != -1) {
           1    	    if (RETVAL == 0)
           1    		sv_setpvn(ST(0), "0 but true", 10);
			    else
      ######    		sv_setiv(ST(0), (IV)RETVAL);
			}
		    }
           1        XSRETURN(1);
		}
		
		
		XS(XS_XS__Typemap_T_STDIO_print); /* prototype to pass -Wmissing-prototypes */
		XS(XS_XS__Typemap_T_STDIO_print)
           1    {
           1        dXSARGS;
           1        if (items != 2)
      ######    	Perl_croak(aTHX_ "Usage: XS::Typemap::T_STDIO_print(stream, string)");
           1        PERL_UNUSED_VAR(cv); /* -W */
		    {
           1    	FILE *	stream = PerlIO_findFILE(IoIFP(sv_2io(ST(0))));
           1    	const char *	string = (const char *)SvPV_nolen(ST(1));
           1    	int	RETVAL;
           1    	dXSTARG;
		#line 817 "Typemap.xs"
		  RETVAL = xsfprintf( stream, string );
		#line 969 "Typemap.c"
           1    	XSprePUSH; PUSHi((IV)RETVAL);
		    }
           1        XSRETURN(1);
		}
		
		#ifdef __cplusplus
		extern "C"
		#endif
		XS(boot_XS__Typemap); /* prototype to pass -Wmissing-prototypes */
		XS(boot_XS__Typemap)
           1    {
           1        dXSARGS;
           1        char* file = __FILE__;
		
           1        PERL_UNUSED_VAR(cv); /* -W */
           1        PERL_UNUSED_VAR(items); /* -W */
           1        XS_VERSION_BOOTCHECK ;
		
           1            newXS("XS::Typemap::T_SV", XS_XS__Typemap_T_SV, file);
           1            newXS("XS::Typemap::T_SVREF", XS_XS__Typemap_T_SVREF, file);
           1            newXS("XS::Typemap::T_AVREF", XS_XS__Typemap_T_AVREF, file);
           1            newXS("XS::Typemap::T_HVREF", XS_XS__Typemap_T_HVREF, file);
           1            newXS("XS::Typemap::T_CVREF", XS_XS__Typemap_T_CVREF, file);
           1            newXS("XS::Typemap::T_SYSRET_pass", XS_XS__Typemap_T_SYSRET_pass, file);
           1            newXS("XS::Typemap::T_SYSRET_fail", XS_XS__Typemap_T_SYSRET_fail, file);
           1            newXS("XS::Typemap::T_UV", XS_XS__Typemap_T_UV, file);
           1            newXS("XS::Typemap::T_IV", XS_XS__Typemap_T_IV, file);
           1            newXS("XS::Typemap::T_ENUM", XS_XS__Typemap_T_ENUM, file);
           1            newXS("XS::Typemap::T_BOOL", XS_XS__Typemap_T_BOOL, file);
           1            newXS("XS::Typemap::T_U_SHORT", XS_XS__Typemap_T_U_SHORT, file);
           1            newXS("XS::Typemap::T_U_LONG", XS_XS__Typemap_T_U_LONG, file);
           1            newXS("XS::Typemap::T_CHAR", XS_XS__Typemap_T_CHAR, file);
           1            newXS("XS::Typemap::T_U_CHAR", XS_XS__Typemap_T_U_CHAR, file);
           1            newXS("XS::Typemap::T_FLOAT", XS_XS__Typemap_T_FLOAT, file);
           1            newXS("XS::Typemap::T_NV", XS_XS__Typemap_T_NV, file);
           1            newXS("XS::Typemap::T_DOUBLE", XS_XS__Typemap_T_DOUBLE, file);
           1            newXS("XS::Typemap::T_PV", XS_XS__Typemap_T_PV, file);
           1            newXS("XS::Typemap::T_PTR_OUT", XS_XS__Typemap_T_PTR_OUT, file);
           1            newXS("XS::Typemap::T_PTR_IN", XS_XS__Typemap_T_PTR_IN, file);
           1            newXS("XS::Typemap::T_PTRREF_OUT", XS_XS__Typemap_T_PTRREF_OUT, file);
           1            newXS("XS::Typemap::T_PTRREF_IN", XS_XS__Typemap_T_PTRREF_IN, file);
           1            newXS("XS::Typemap::T_PTROBJ_OUT", XS_XS__Typemap_T_PTROBJ_OUT, file);
           1            newXS("intObjPtr::T_PTROBJ_IN", XS_intObjPtr_T_PTROBJ_IN, file);
           1            newXS("XS::Typemap::T_REF_IV_PTR_OUT", XS_XS__Typemap_T_REF_IV_PTR_OUT, file);
           1            newXS("intRefIvPtr::T_REF_IV_PTR_IN", XS_intRefIvPtr_T_REF_IV_PTR_IN, file);
           1            newXS("XS::Typemap::T_OPAQUEPTR_IN", XS_XS__Typemap_T_OPAQUEPTR_IN, file);
           1            newXS("XS::Typemap::T_OPAQUEPTR_OUT", XS_XS__Typemap_T_OPAQUEPTR_OUT, file);
           1            newXS("XS::Typemap::T_OPAQUEPTR_OUT_short", XS_XS__Typemap_T_OPAQUEPTR_OUT_short, file);
           1            newXS("XS::Typemap::T_OPAQUEPTR_IN_struct", XS_XS__Typemap_T_OPAQUEPTR_IN_struct, file);
           1            newXS("XS::Typemap::T_OPAQUEPTR_OUT_struct", XS_XS__Typemap_T_OPAQUEPTR_OUT_struct, file);
           1            newXS("XS::Typemap::T_OPAQUE_IN", XS_XS__Typemap_T_OPAQUE_IN, file);
           1            newXS("XS::Typemap::T_OPAQUE_OUT", XS_XS__Typemap_T_OPAQUE_OUT, file);
           1            newXS("XS::Typemap::T_OPAQUE_array", XS_XS__Typemap_T_OPAQUE_array, file);
           1            newXS("XS::Typemap::T_ARRAY", XS_XS__Typemap_T_ARRAY, file);
           1            newXS("XS::Typemap::T_STDIO_open", XS_XS__Typemap_T_STDIO_open, file);
           1            newXS("XS::Typemap::T_STDIO_close", XS_XS__Typemap_T_STDIO_close, file);
           1            newXS("XS::Typemap::T_STDIO_print", XS_XS__Typemap_T_STDIO_print, file);
           1        XSRETURN_YES;
		}
		
