Mode_t			T_NV
pid_t			T_NV
Uid_t			T_NV
Time_t			T_NV
Gid_t			T_NV
Uid_t			T_NV
Off_t			T_NV
Dev_t			T_NV
NV			T_NV
fd			T_IV
speed_t			T_IV
tcflag_t		T_IV
cc_t			T_IV
POSIX::SigSet		T_OPAQUEPTROBJ
POSIX::Termios		T_OPAQUEPTROBJ
POSIX::SigAction	T_HVREF
POSIX::SigNo		T_SIGNO
POSIX::Fd		T_FD

INPUT
T_OPAQUEPTROBJ
	{
	    SV * sv = $arg;
	    if (SvROK(sv) && sv_derived_from(sv, \"${ntype}\"))
		$var = ($type)SvPV_nolen(SvRV(sv));
	    else
		croak(\"%s: %s is not of type %s\",
			    ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
			\"$var\", \"$ntype\");
	}

T_SIGNO
	if ((sig = SvIV($arg)) < 0) {
	   croak(\"%s: Negative signals are not allowed %d\",
		${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
                                   sig);
	}

T_FD
	if ((fd = (int)SvIV($arg)) < 0) {
	     SETERRNO(EBADF, RMS_IFI);
	     XSRETURN_IV(-1);
	}

OUTPUT
T_OPAQUEPTROBJ
	sv_setref_pvn($arg, \"${ntype}\", (const char*)$var, sizeof(*$var));