File Coverage

ext/File-Glob/const-c.inc
Criterion Covered Total %
statement 11 12 91.7
branch n/a
condition n/a
subroutine n/a
total 11 12 91.7


line stmt bran cond sub time code
1           #define PERL_constant_NOTFOUND 1
2           #define PERL_constant_NOTDEF 2
3           #define PERL_constant_ISIV 3
4           #define PERL_constant_ISNO 4
5           #define PERL_constant_ISNV 5
6           #define PERL_constant_ISPV 6
7           #define PERL_constant_ISPVN 7
8           #define PERL_constant_ISSV 8
9           #define PERL_constant_ISUNDEF 9
10           #define PERL_constant_ISUV 10
11           #define PERL_constant_ISYES 11
12            
13           #ifndef NVTYPE
14           typedef double NV; /* 5.6 and later define NVTYPE, and typedef NV to it. */
15           #endif
16           #ifndef aTHX_
17           #define aTHX_ /* 5.6 or later define this for threading support. */
18           #endif
19           #ifndef pTHX_
20           #define pTHX_ /* 5.6 or later define this for threading support. */
21           #endif
22            
23           /* This allows slightly more efficient code on !USE_ITHREADS: */
24           #ifdef USE_ITHREADS
25           # define COP_FILE(c) CopFILE(c)
26           # define COP_FILE_F "s"
27           #else
28           # define COP_FILE(c) CopFILESV(c)
29           # define COP_FILE_F SVf
30           #endif
31            
32           static void
33 84600         constant_add_symbol(pTHX_ HV *hash, const char *name, I32 namelen, SV *value) {
34 84600         HE *he = (HE*) hv_common_key_len(hash, name, namelen, HV_FETCH_LVALUE, NULL,
35           0);
36           SV *sv;
37            
38 84600         if (!he) {
39 0         Perl_croak(aTHX_ "Couldn't add key '%s' to %%File::Glob::",
40           name);
41           }
42 84600         sv = HeVAL(he);
43 157920         if (SvOK(sv) || SvTYPE(sv) == SVt_PVGV) {
44           /* Someone has been here before us - have to make a real sub. */
45 11280         newCONSTSUB(hash, name, value);
46           } else {
47 146640         SvUPGRADE(sv, SVt_RV);
48 73320         SvRV_set(sv, value);
49 73320         SvROK_on(sv);
50 73320         SvREADONLY_on(value);
51           }
52 84600         }
53            
54            
55            
56           #ifndef SYMBIAN
57            
58           /* Store a hash of all symbols missing from the package. To avoid trampling on
59           the package namespace (uninvited) put each package's hash in our namespace.
60           To avoid creating lots of typeblogs and symbol tables for sub-packages, put
61           each package's hash into one hash in our namespace. */
62            
63           static HV *
64           get_missing_hash(pTHX) {
65           HV *const parent
66           = get_hv("ExtUtils::Constant::ProxySubs::Missing", GVf_MULTI);
67           /* We could make a hash of hashes directly, but this would confuse anything
68           at Perl space that looks at us, and as we're visible in Perl space,
69           best to play nice. */
70           SV *const *const ref
71           = hv_fetch(parent, "File::Glob", 10, TRUE);
72           HV *new_hv;
73            
74           if (!ref)
75           return NULL;
76            
77           if (SvROK(*ref))
78           return (HV*) SvRV(*ref);
79            
80           new_hv = newHV();
81           SvUPGRADE(*ref, SVt_RV);
82           SvRV_set(*ref, (SV *)new_hv);
83           SvROK_on(*ref);
84           return new_hv;
85           }
86            
87           #endif
88            
89           struct notfound_s {const char *name; I32 namelen;} ;
90            
91           static const struct notfound_s values_for_notfound[] =
92           {
93           #ifndef GLOB_ABEND
94           { "GLOB_ABEND", 10 },
95           #endif
96           #ifndef GLOB_ALPHASORT
97           { "GLOB_ALPHASORT", 14 },
98           #endif
99           #ifndef GLOB_ALTDIRFUNC
100           { "GLOB_ALTDIRFUNC", 15 },
101           #endif
102           #ifndef GLOB_BRACE
103           { "GLOB_BRACE", 10 },
104           #endif
105           #ifndef GLOB_ERR
106           { "GLOB_ERR", 8 },
107           #endif
108           #ifndef GLOB_LIMIT
109           { "GLOB_LIMIT", 10 },
110           #endif
111           #ifndef GLOB_MARK
112           { "GLOB_MARK", 9 },
113           #endif
114           #ifndef GLOB_NOCASE
115           { "GLOB_NOCASE", 11 },
116           #endif
117           #ifndef GLOB_NOCHECK
118           { "GLOB_NOCHECK", 12 },
119           #endif
120           #ifndef GLOB_NOMAGIC
121           { "GLOB_NOMAGIC", 12 },
122           #endif
123           #ifndef GLOB_NOSORT
124           { "GLOB_NOSORT", 11 },
125           #endif
126           #ifndef GLOB_NOSPACE
127           { "GLOB_NOSPACE", 12 },
128           #endif
129           #ifndef GLOB_QUOTE
130           { "GLOB_QUOTE", 10 },
131           #endif
132           #ifndef GLOB_TILDE
133           { "GLOB_TILDE", 10 },
134           #endif
135           { NULL, 0 } };
136           struct iv_s {const char *name; I32 namelen; IV value;};