summaryrefslogtreecommitdiff
path: root/ext/POSIX/typemap
blob: 753afcd1a5403e634503edbdc2ab6d6e5be768af (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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));