| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
#include "EXTERN.h" |
|
2
|
|
|
|
|
|
|
#include "perl.h" |
|
3
|
|
|
|
|
|
|
#include "XSUB.h" |
|
4
|
|
|
|
|
|
|
|
|
5
|
|
|
|
|
|
|
MODULE = IPC::Shareable PACKAGE = IPC::Shareable |
|
6
|
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
PROTOTYPES: DISABLE |
|
8
|
|
|
|
|
|
|
|
|
9
|
|
|
|
|
|
|
# XS version of _is_child() |
|
10
|
|
|
|
|
|
|
|
|
11
|
|
|
|
|
|
|
SV * |
|
12
|
|
|
|
|
|
|
_is_child_xs(sv) |
|
13
|
|
|
|
|
|
|
SV *sv |
|
14
|
|
|
|
|
|
|
CODE: |
|
15
|
1231
|
50
|
|
|
|
|
if (!sv || !SvROK(sv)) { |
|
|
|
100
|
|
|
|
|
|
|
16
|
3
|
|
|
|
|
|
RETVAL = &PL_sv_undef; |
|
17
|
|
|
|
|
|
|
} |
|
18
|
|
|
|
|
|
|
else { |
|
19
|
1228
|
|
|
|
|
|
SV *rv = SvRV(sv); |
|
20
|
1228
|
|
|
|
|
|
MAGIC *mg = NULL; |
|
21
|
1228
|
|
|
|
|
|
switch (SvTYPE(rv)) { |
|
22
|
1207
|
|
|
|
|
|
case SVt_PVHV: |
|
23
|
|
|
|
|
|
|
case SVt_PVAV: |
|
24
|
1207
|
|
|
|
|
|
mg = mg_find(rv, PERL_MAGIC_tied); |
|
25
|
1207
|
|
|
|
|
|
break; |
|
26
|
19
|
|
|
|
|
|
case SVt_PVMG: |
|
27
|
19
|
|
|
|
|
|
mg = mg_find(rv, PERL_MAGIC_tiedscalar); |
|
28
|
19
|
|
|
|
|
|
break; |
|
29
|
2
|
|
|
|
|
|
default: |
|
30
|
2
|
|
|
|
|
|
break; |
|
31
|
|
|
|
|
|
|
} |
|
32
|
1228
|
100
|
|
|
|
|
if (mg && mg->mg_obj && sv_derived_from(mg->mg_obj, "IPC::Shareable")) { |
|
|
|
50
|
|
|
|
|
|
|
|
|
50
|
|
|
|
|
|
|
33
|
1223
|
|
|
|
|
|
RETVAL = SvREFCNT_inc(mg->mg_obj); |
|
34
|
|
|
|
|
|
|
} |
|
35
|
|
|
|
|
|
|
else { |
|
36
|
5
|
|
|
|
|
|
RETVAL = &PL_sv_undef; |
|
37
|
|
|
|
|
|
|
} |
|
38
|
|
|
|
|
|
|
} |
|
39
|
|
|
|
|
|
|
OUTPUT: |
|
40
|
|
|
|
|
|
|
RETVAL |