xref: /openbsd-src/gnu/usr.bin/perl/ext/POSIX/typemap (revision 3d61058aa5c692477b6d18acfbbdb653a9930ff9)
1Mode_t			T_IV
2pid_t			T_IV
3Uid_t			T_UV
4Time_t			T_IV
5Gid_t			T_UV
6Off_t			T_NV
7speed_t			T_IV
8tcflag_t		T_IV
9cc_t			T_IV
10POSIX::SigSet		T_OPAQUEPTROBJ
11POSIX::Termios		T_OPAQUEPTROBJ
12POSIX::SigAction	T_HVREF
13POSIX::SigNo		T_SIGNO
14POSIX::Fd		T_FD
15
16INPUT
17T_OPAQUEPTROBJ
18	{
19	    SV * sv = $arg;
20	    if (SvROK(sv) && sv_derived_from(sv, \"${ntype}\"))
21		$var = ($type)SvPV_nolen(SvRV(sv));
22	    else
23		croak(\"%s: %s is not of type %s\",
24			    ${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
25			\"$var\", \"$ntype\");
26	}
27
28T_SIGNO
29	if (($var = SvIV($arg)) < 0) {
30	   croak(\"%s: Negative signals are not allowed %d\",
31		${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
32                                   $var);
33	}
34
35T_FD
36	if (($var = (int)SvIV($arg)) < 0) {
37	     SETERRNO(EBADF, RMS_IFI);
38	     XSRETURN_IV(-1);
39	}
40
41OUTPUT
42T_OPAQUEPTROBJ
43	sv_setref_pvn($arg, \"${ntype}\", (const char*)$var, sizeof(*$var));
44