line |
stmt |
bran |
cond |
sub |
time |
code |
1
|
|
|
|
|
|
/* mathoms.c |
2
|
|
|
|
|
|
* |
3
|
|
|
|
|
|
* Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, |
4
|
|
|
|
|
|
* 2011, 2012 by Larry Wall and others |
5
|
|
|
|
|
|
* |
6
|
|
|
|
|
|
* You may distribute under the terms of either the GNU General Public |
7
|
|
|
|
|
|
* License or the Artistic License, as specified in the README file. |
8
|
|
|
|
|
|
* |
9
|
|
|
|
|
|
*/ |
10
|
|
|
|
|
|
|
11
|
|
|
|
|
|
/* |
12
|
|
|
|
|
|
* Anything that Hobbits had no immediate use for, but were unwilling to |
13
|
|
|
|
|
|
* throw away, they called a mathom. Their dwellings were apt to become |
14
|
|
|
|
|
|
* rather crowded with mathoms, and many of the presents that passed from |
15
|
|
|
|
|
|
* hand to hand were of that sort. |
16
|
|
|
|
|
|
* |
17
|
|
|
|
|
|
* [p.5 of _The Lord of the Rings_: "Prologue"] |
18
|
|
|
|
|
|
*/ |
19
|
|
|
|
|
|
|
20
|
|
|
|
|
|
|
21
|
|
|
|
|
|
|
22
|
|
|
|
|
|
/* |
23
|
|
|
|
|
|
* This file contains mathoms, various binary artifacts from previous |
24
|
|
|
|
|
|
* versions of Perl. For binary or source compatibility reasons, though, |
25
|
|
|
|
|
|
* we cannot completely remove them from the core code. |
26
|
|
|
|
|
|
* |
27
|
|
|
|
|
|
* SMP - Oct. 24, 2005 |
28
|
|
|
|
|
|
* |
29
|
|
|
|
|
|
* The compilation of this file can be suppressed; see INSTALL |
30
|
|
|
|
|
|
* |
31
|
|
|
|
|
|
*/ |
32
|
|
|
|
|
|
|
33
|
|
|
|
|
|
#include "EXTERN.h" |
34
|
|
|
|
|
|
#define PERL_IN_MATHOMS_C |
35
|
|
|
|
|
|
#include "perl.h" |
36
|
|
|
|
|
|
|
37
|
|
|
|
|
|
#ifdef NO_MATHOMS |
38
|
|
|
|
|
|
/* ..." warning: ISO C forbids an empty source file" |
39
|
|
|
|
|
|
So make sure we have something in here by processing the headers anyway. |
40
|
|
|
|
|
|
*/ |
41
|
|
|
|
|
|
#else |
42
|
|
|
|
|
|
|
43
|
|
|
|
|
|
/* Not all of these have prototypes elsewhere, so do this to get |
44
|
|
|
|
|
|
* non-mangled names. |
45
|
|
|
|
|
|
*/ |
46
|
|
|
|
|
|
START_EXTERN_C |
47
|
|
|
|
|
|
|
48
|
|
|
|
|
|
PERL_CALLCONV OP * Perl_ref(pTHX_ OP *o, I32 type); |
49
|
|
|
|
|
|
PERL_CALLCONV void Perl_sv_unref(pTHX_ SV *sv); |
50
|
|
|
|
|
|
PERL_CALLCONV void Perl_sv_taint(pTHX_ SV *sv); |
51
|
|
|
|
|
|
PERL_CALLCONV IV Perl_sv_2iv(pTHX_ SV *sv); |
52
|
|
|
|
|
|
PERL_CALLCONV UV Perl_sv_2uv(pTHX_ SV *sv); |
53
|
|
|
|
|
|
PERL_CALLCONV NV Perl_sv_2nv(pTHX_ SV *sv); |
54
|
|
|
|
|
|
PERL_CALLCONV char * Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp); |
55
|
|
|
|
|
|
PERL_CALLCONV char * Perl_sv_2pv_nolen(pTHX_ SV *sv); |
56
|
|
|
|
|
|
PERL_CALLCONV char * Perl_sv_2pvbyte_nolen(pTHX_ SV *sv); |
57
|
|
|
|
|
|
PERL_CALLCONV char * Perl_sv_2pvutf8_nolen(pTHX_ SV *sv); |
58
|
|
|
|
|
|
PERL_CALLCONV void Perl_sv_force_normal(pTHX_ SV *sv); |
59
|
|
|
|
|
|
PERL_CALLCONV void Perl_sv_setsv(pTHX_ SV *dstr, SV *sstr); |
60
|
|
|
|
|
|
PERL_CALLCONV void Perl_sv_catpvn(pTHX_ SV *dsv, const char* sstr, STRLEN slen); |
61
|
|
|
|
|
|
PERL_CALLCONV void Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len); |
62
|
|
|
|
|
|
PERL_CALLCONV void Perl_sv_catsv(pTHX_ SV *dstr, SV *sstr); |
63
|
|
|
|
|
|
PERL_CALLCONV void Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *ssv); |
64
|
|
|
|
|
|
PERL_CALLCONV char * Perl_sv_pv(pTHX_ SV *sv); |
65
|
|
|
|
|
|
PERL_CALLCONV char * Perl_sv_pvn_force(pTHX_ SV *sv, STRLEN *lp); |
66
|
|
|
|
|
|
PERL_CALLCONV char * Perl_sv_pvbyte(pTHX_ SV *sv); |
67
|
|
|
|
|
|
PERL_CALLCONV char * Perl_sv_pvutf8(pTHX_ SV *sv); |
68
|
|
|
|
|
|
PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade(pTHX_ SV *sv); |
69
|
|
|
|
|
|
PERL_CALLCONV NV Perl_huge(void); |
70
|
|
|
|
|
|
PERL_CALLCONV void Perl_gv_fullname3(pTHX_ SV *sv, const GV *gv, const char *prefix); |
71
|
|
|
|
|
|
PERL_CALLCONV void Perl_gv_efullname3(pTHX_ SV *sv, const GV *gv, const char *prefix); |
72
|
|
|
|
|
|
PERL_CALLCONV GV * Perl_gv_fetchmethod(pTHX_ HV *stash, const char *name); |
73
|
|
|
|
|
|
PERL_CALLCONV HE * Perl_hv_iternext(pTHX_ HV *hv); |
74
|
|
|
|
|
|
PERL_CALLCONV void Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how); |
75
|
|
|
|
|
|
PERL_CALLCONV bool Perl_do_open(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp); |
76
|
|
|
|
|
|
PERL_CALLCONV bool Perl_do_aexec(pTHX_ SV *really, SV **mark, SV **sp); |
77
|
|
|
|
|
|
PERL_CALLCONV U8 * Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv); |
78
|
|
|
|
|
|
PERL_CALLCONV bool Perl_is_utf8_string_loc(pTHX_ const U8 *s, STRLEN len, const U8 **ep); |
79
|
|
|
|
|
|
PERL_CALLCONV void Perl_sv_nolocking(pTHX_ SV *sv); |
80
|
|
|
|
|
|
PERL_CALLCONV void Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len); |
81
|
|
|
|
|
|
PERL_CALLCONV void Perl_sv_usepvn(pTHX_ SV *sv, char *ptr, STRLEN len); |
82
|
|
|
|
|
|
PERL_CALLCONV int Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...); |
83
|
|
|
|
|
|
PERL_CALLCONV int Perl_printf_nocontext(const char *format, ...); |
84
|
|
|
|
|
|
PERL_CALLCONV int Perl_magic_setglob(pTHX_ SV* sv, MAGIC* mg); |
85
|
|
|
|
|
|
PERL_CALLCONV AV * Perl_newAV(pTHX); |
86
|
|
|
|
|
|
PERL_CALLCONV HV * Perl_newHV(pTHX); |
87
|
|
|
|
|
|
PERL_CALLCONV IO * Perl_newIO(pTHX); |
88
|
|
|
|
|
|
PERL_CALLCONV I32 Perl_my_stat(pTHX); |
89
|
|
|
|
|
|
PERL_CALLCONV I32 Perl_my_lstat(pTHX); |
90
|
|
|
|
|
|
PERL_CALLCONV I32 Perl_sv_eq(pTHX_ SV *sv1, SV *sv2); |
91
|
|
|
|
|
|
PERL_CALLCONV char * Perl_sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp); |
92
|
|
|
|
|
|
PERL_CALLCONV bool Perl_sv_2bool(pTHX_ SV *const sv); |
93
|
|
|
|
|
|
PERL_CALLCONV CV * Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block); |
94
|
|
|
|
|
|
PERL_CALLCONV UV Perl_to_utf8_lower(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); |
95
|
|
|
|
|
|
PERL_CALLCONV UV Perl_to_utf8_title(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); |
96
|
|
|
|
|
|
PERL_CALLCONV UV Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); |
97
|
|
|
|
|
|
PERL_CALLCONV UV Perl_to_utf8_fold(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); |
98
|
|
|
|
|
|
PERL_CALLCONV SV *Perl_sv_mortalcopy(pTHX_ SV *const oldstr); |
99
|
|
|
|
|
|
|
100
|
|
|
|
|
|
/* ref() is now a macro using Perl_doref; |
101
|
|
|
|
|
|
* this version provided for binary compatibility only. |
102
|
|
|
|
|
|
*/ |
103
|
|
|
|
|
|
OP * |
104
|
0
|
|
|
|
|
Perl_ref(pTHX_ OP *o, I32 type) |
105
|
|
|
|
|
|
{ |
106
|
0
|
|
|
|
|
return doref(o, type, TRUE); |
107
|
|
|
|
|
|
} |
108
|
|
|
|
|
|
|
109
|
|
|
|
|
|
/* |
110
|
|
|
|
|
|
=for apidoc sv_unref |
111
|
|
|
|
|
|
|
112
|
|
|
|
|
|
Unsets the RV status of the SV, and decrements the reference count of |
113
|
|
|
|
|
|
whatever was being referenced by the RV. This can almost be thought of |
114
|
|
|
|
|
|
as a reversal of C. This is C with the C |
115
|
|
|
|
|
|
being zero. See C. |
116
|
|
|
|
|
|
|
117
|
|
|
|
|
|
=cut |
118
|
|
|
|
|
|
*/ |
119
|
|
|
|
|
|
|
120
|
|
|
|
|
|
void |
121
|
0
|
|
|
|
|
Perl_sv_unref(pTHX_ SV *sv) |
122
|
|
|
|
|
|
{ |
123
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_UNREF; |
124
|
|
|
|
|
|
|
125
|
0
|
|
|
|
|
sv_unref_flags(sv, 0); |
126
|
0
|
|
|
|
|
} |
127
|
|
|
|
|
|
|
128
|
|
|
|
|
|
/* |
129
|
|
|
|
|
|
=for apidoc sv_taint |
130
|
|
|
|
|
|
|
131
|
|
|
|
|
|
Taint an SV. Use C instead. |
132
|
|
|
|
|
|
|
133
|
|
|
|
|
|
=cut |
134
|
|
|
|
|
|
*/ |
135
|
|
|
|
|
|
|
136
|
|
|
|
|
|
void |
137
|
0
|
|
|
|
|
Perl_sv_taint(pTHX_ SV *sv) |
138
|
|
|
|
|
|
{ |
139
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_TAINT; |
140
|
|
|
|
|
|
|
141
|
0
|
|
|
|
|
sv_magic((sv), NULL, PERL_MAGIC_taint, NULL, 0); |
142
|
0
|
|
|
|
|
} |
143
|
|
|
|
|
|
|
144
|
|
|
|
|
|
/* sv_2iv() is now a macro using Perl_sv_2iv_flags(); |
145
|
|
|
|
|
|
* this function provided for binary compatibility only |
146
|
|
|
|
|
|
*/ |
147
|
|
|
|
|
|
|
148
|
|
|
|
|
|
IV |
149
|
0
|
|
|
|
|
Perl_sv_2iv(pTHX_ SV *sv) |
150
|
|
|
|
|
|
{ |
151
|
0
|
|
|
|
|
return sv_2iv_flags(sv, SV_GMAGIC); |
152
|
|
|
|
|
|
} |
153
|
|
|
|
|
|
|
154
|
|
|
|
|
|
/* sv_2uv() is now a macro using Perl_sv_2uv_flags(); |
155
|
|
|
|
|
|
* this function provided for binary compatibility only |
156
|
|
|
|
|
|
*/ |
157
|
|
|
|
|
|
|
158
|
|
|
|
|
|
UV |
159
|
0
|
|
|
|
|
Perl_sv_2uv(pTHX_ SV *sv) |
160
|
|
|
|
|
|
{ |
161
|
0
|
|
|
|
|
return sv_2uv_flags(sv, SV_GMAGIC); |
162
|
|
|
|
|
|
} |
163
|
|
|
|
|
|
|
164
|
|
|
|
|
|
/* sv_2nv() is now a macro using Perl_sv_2nv_flags(); |
165
|
|
|
|
|
|
* this function provided for binary compatibility only |
166
|
|
|
|
|
|
*/ |
167
|
|
|
|
|
|
|
168
|
|
|
|
|
|
NV |
169
|
0
|
|
|
|
|
Perl_sv_2nv(pTHX_ SV *sv) |
170
|
|
|
|
|
|
{ |
171
|
0
|
|
|
|
|
return sv_2nv_flags(sv, SV_GMAGIC); |
172
|
|
|
|
|
|
} |
173
|
|
|
|
|
|
|
174
|
|
|
|
|
|
|
175
|
|
|
|
|
|
/* sv_2pv() is now a macro using Perl_sv_2pv_flags(); |
176
|
|
|
|
|
|
* this function provided for binary compatibility only |
177
|
|
|
|
|
|
*/ |
178
|
|
|
|
|
|
|
179
|
|
|
|
|
|
char * |
180
|
0
|
|
|
|
|
Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp) |
181
|
|
|
|
|
|
{ |
182
|
0
|
|
|
|
|
return sv_2pv_flags(sv, lp, SV_GMAGIC); |
183
|
|
|
|
|
|
} |
184
|
|
|
|
|
|
|
185
|
|
|
|
|
|
/* |
186
|
|
|
|
|
|
=for apidoc sv_2pv_nolen |
187
|
|
|
|
|
|
|
188
|
|
|
|
|
|
Like C, but doesn't return the length too. You should usually |
189
|
|
|
|
|
|
use the macro wrapper C instead. |
190
|
|
|
|
|
|
|
191
|
|
|
|
|
|
=cut |
192
|
|
|
|
|
|
*/ |
193
|
|
|
|
|
|
|
194
|
|
|
|
|
|
char * |
195
|
0
|
|
|
|
|
Perl_sv_2pv_nolen(pTHX_ SV *sv) |
196
|
|
|
|
|
|
{ |
197
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_2PV_NOLEN; |
198
|
0
|
|
|
|
|
return sv_2pv(sv, NULL); |
199
|
|
|
|
|
|
} |
200
|
|
|
|
|
|
|
201
|
|
|
|
|
|
/* |
202
|
|
|
|
|
|
=for apidoc sv_2pvbyte_nolen |
203
|
|
|
|
|
|
|
204
|
|
|
|
|
|
Return a pointer to the byte-encoded representation of the SV. |
205
|
|
|
|
|
|
May cause the SV to be downgraded from UTF-8 as a side-effect. |
206
|
|
|
|
|
|
|
207
|
|
|
|
|
|
Usually accessed via the C macro. |
208
|
|
|
|
|
|
|
209
|
|
|
|
|
|
=cut |
210
|
|
|
|
|
|
*/ |
211
|
|
|
|
|
|
|
212
|
|
|
|
|
|
char * |
213
|
0
|
|
|
|
|
Perl_sv_2pvbyte_nolen(pTHX_ SV *sv) |
214
|
|
|
|
|
|
{ |
215
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_2PVBYTE_NOLEN; |
216
|
|
|
|
|
|
|
217
|
0
|
|
|
|
|
return sv_2pvbyte(sv, NULL); |
218
|
|
|
|
|
|
} |
219
|
|
|
|
|
|
|
220
|
|
|
|
|
|
/* |
221
|
|
|
|
|
|
=for apidoc sv_2pvutf8_nolen |
222
|
|
|
|
|
|
|
223
|
|
|
|
|
|
Return a pointer to the UTF-8-encoded representation of the SV. |
224
|
|
|
|
|
|
May cause the SV to be upgraded to UTF-8 as a side-effect. |
225
|
|
|
|
|
|
|
226
|
|
|
|
|
|
Usually accessed via the C macro. |
227
|
|
|
|
|
|
|
228
|
|
|
|
|
|
=cut |
229
|
|
|
|
|
|
*/ |
230
|
|
|
|
|
|
|
231
|
|
|
|
|
|
char * |
232
|
0
|
|
|
|
|
Perl_sv_2pvutf8_nolen(pTHX_ SV *sv) |
233
|
|
|
|
|
|
{ |
234
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_2PVUTF8_NOLEN; |
235
|
|
|
|
|
|
|
236
|
0
|
|
|
|
|
return sv_2pvutf8(sv, NULL); |
237
|
|
|
|
|
|
} |
238
|
|
|
|
|
|
|
239
|
|
|
|
|
|
/* |
240
|
|
|
|
|
|
=for apidoc sv_force_normal |
241
|
|
|
|
|
|
|
242
|
|
|
|
|
|
Undo various types of fakery on an SV: if the PV is a shared string, make |
243
|
|
|
|
|
|
a private copy; if we're a ref, stop refing; if we're a glob, downgrade to |
244
|
|
|
|
|
|
an xpvmg. See also C. |
245
|
|
|
|
|
|
|
246
|
|
|
|
|
|
=cut |
247
|
|
|
|
|
|
*/ |
248
|
|
|
|
|
|
|
249
|
|
|
|
|
|
void |
250
|
0
|
|
|
|
|
Perl_sv_force_normal(pTHX_ SV *sv) |
251
|
|
|
|
|
|
{ |
252
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_FORCE_NORMAL; |
253
|
|
|
|
|
|
|
254
|
0
|
|
|
|
|
sv_force_normal_flags(sv, 0); |
255
|
0
|
|
|
|
|
} |
256
|
|
|
|
|
|
|
257
|
|
|
|
|
|
/* sv_setsv() is now a macro using Perl_sv_setsv_flags(); |
258
|
|
|
|
|
|
* this function provided for binary compatibility only |
259
|
|
|
|
|
|
*/ |
260
|
|
|
|
|
|
|
261
|
|
|
|
|
|
void |
262
|
0
|
|
|
|
|
Perl_sv_setsv(pTHX_ SV *dstr, SV *sstr) |
263
|
|
|
|
|
|
{ |
264
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_SETSV; |
265
|
|
|
|
|
|
|
266
|
0
|
|
|
|
|
sv_setsv_flags(dstr, sstr, SV_GMAGIC); |
267
|
0
|
|
|
|
|
} |
268
|
|
|
|
|
|
|
269
|
|
|
|
|
|
/* sv_catpvn() is now a macro using Perl_sv_catpvn_flags(); |
270
|
|
|
|
|
|
* this function provided for binary compatibility only |
271
|
|
|
|
|
|
*/ |
272
|
|
|
|
|
|
|
273
|
|
|
|
|
|
void |
274
|
0
|
|
|
|
|
Perl_sv_catpvn(pTHX_ SV *dsv, const char* sstr, STRLEN slen) |
275
|
|
|
|
|
|
{ |
276
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_CATPVN; |
277
|
|
|
|
|
|
|
278
|
0
|
|
|
|
|
sv_catpvn_flags(dsv, sstr, slen, SV_GMAGIC); |
279
|
0
|
|
|
|
|
} |
280
|
|
|
|
|
|
|
281
|
|
|
|
|
|
/* |
282
|
|
|
|
|
|
=for apidoc sv_catpvn_mg |
283
|
|
|
|
|
|
|
284
|
|
|
|
|
|
Like C, but also handles 'set' magic. |
285
|
|
|
|
|
|
|
286
|
|
|
|
|
|
=cut |
287
|
|
|
|
|
|
*/ |
288
|
|
|
|
|
|
|
289
|
|
|
|
|
|
void |
290
|
0
|
|
|
|
|
Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len) |
291
|
|
|
|
|
|
{ |
292
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_CATPVN_MG; |
293
|
|
|
|
|
|
|
294
|
0
|
|
|
|
|
sv_catpvn_flags(sv,ptr,len,SV_GMAGIC|SV_SMAGIC); |
295
|
0
|
|
|
|
|
} |
296
|
|
|
|
|
|
|
297
|
|
|
|
|
|
/* sv_catsv() is now a macro using Perl_sv_catsv_flags(); |
298
|
|
|
|
|
|
* this function provided for binary compatibility only |
299
|
|
|
|
|
|
*/ |
300
|
|
|
|
|
|
|
301
|
|
|
|
|
|
void |
302
|
0
|
|
|
|
|
Perl_sv_catsv(pTHX_ SV *dstr, SV *sstr) |
303
|
|
|
|
|
|
{ |
304
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_CATSV; |
305
|
|
|
|
|
|
|
306
|
0
|
|
|
|
|
sv_catsv_flags(dstr, sstr, SV_GMAGIC); |
307
|
0
|
|
|
|
|
} |
308
|
|
|
|
|
|
|
309
|
|
|
|
|
|
/* |
310
|
|
|
|
|
|
=for apidoc sv_catsv_mg |
311
|
|
|
|
|
|
|
312
|
|
|
|
|
|
Like C, but also handles 'set' magic. |
313
|
|
|
|
|
|
|
314
|
|
|
|
|
|
=cut |
315
|
|
|
|
|
|
*/ |
316
|
|
|
|
|
|
|
317
|
|
|
|
|
|
void |
318
|
0
|
|
|
|
|
Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *ssv) |
319
|
|
|
|
|
|
{ |
320
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_CATSV_MG; |
321
|
|
|
|
|
|
|
322
|
0
|
|
|
|
|
sv_catsv_flags(dsv,ssv,SV_GMAGIC|SV_SMAGIC); |
323
|
0
|
|
|
|
|
} |
324
|
|
|
|
|
|
|
325
|
|
|
|
|
|
/* |
326
|
|
|
|
|
|
=for apidoc sv_iv |
327
|
|
|
|
|
|
|
328
|
|
|
|
|
|
A private implementation of the C macro for compilers which can't |
329
|
|
|
|
|
|
cope with complex macro expressions. Always use the macro instead. |
330
|
|
|
|
|
|
|
331
|
|
|
|
|
|
=cut |
332
|
|
|
|
|
|
*/ |
333
|
|
|
|
|
|
|
334
|
|
|
|
|
|
IV |
335
|
0
|
|
|
|
|
Perl_sv_iv(pTHX_ SV *sv) |
336
|
|
|
|
|
|
{ |
337
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_IV; |
338
|
|
|
|
|
|
|
339
|
0
|
0
|
|
|
|
if (SvIOK(sv)) { |
340
|
0
|
0
|
|
|
|
if (SvIsUV(sv)) |
341
|
0
|
|
|
|
|
return (IV)SvUVX(sv); |
342
|
0
|
|
|
|
|
return SvIVX(sv); |
343
|
|
|
|
|
|
} |
344
|
0
|
|
|
|
|
return sv_2iv(sv); |
345
|
|
|
|
|
|
} |
346
|
|
|
|
|
|
|
347
|
|
|
|
|
|
/* |
348
|
|
|
|
|
|
=for apidoc sv_uv |
349
|
|
|
|
|
|
|
350
|
|
|
|
|
|
A private implementation of the C macro for compilers which can't |
351
|
|
|
|
|
|
cope with complex macro expressions. Always use the macro instead. |
352
|
|
|
|
|
|
|
353
|
|
|
|
|
|
=cut |
354
|
|
|
|
|
|
*/ |
355
|
|
|
|
|
|
|
356
|
|
|
|
|
|
UV |
357
|
0
|
|
|
|
|
Perl_sv_uv(pTHX_ SV *sv) |
358
|
|
|
|
|
|
{ |
359
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_UV; |
360
|
|
|
|
|
|
|
361
|
0
|
0
|
|
|
|
if (SvIOK(sv)) { |
362
|
0
|
0
|
|
|
|
if (SvIsUV(sv)) |
363
|
0
|
|
|
|
|
return SvUVX(sv); |
364
|
0
|
|
|
|
|
return (UV)SvIVX(sv); |
365
|
|
|
|
|
|
} |
366
|
0
|
|
|
|
|
return sv_2uv(sv); |
367
|
|
|
|
|
|
} |
368
|
|
|
|
|
|
|
369
|
|
|
|
|
|
/* |
370
|
|
|
|
|
|
=for apidoc sv_nv |
371
|
|
|
|
|
|
|
372
|
|
|
|
|
|
A private implementation of the C macro for compilers which can't |
373
|
|
|
|
|
|
cope with complex macro expressions. Always use the macro instead. |
374
|
|
|
|
|
|
|
375
|
|
|
|
|
|
=cut |
376
|
|
|
|
|
|
*/ |
377
|
|
|
|
|
|
|
378
|
|
|
|
|
|
NV |
379
|
0
|
|
|
|
|
Perl_sv_nv(pTHX_ SV *sv) |
380
|
|
|
|
|
|
{ |
381
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_NV; |
382
|
|
|
|
|
|
|
383
|
0
|
0
|
|
|
|
if (SvNOK(sv)) |
384
|
0
|
|
|
|
|
return SvNVX(sv); |
385
|
0
|
|
|
|
|
return sv_2nv(sv); |
386
|
|
|
|
|
|
} |
387
|
|
|
|
|
|
|
388
|
|
|
|
|
|
/* |
389
|
|
|
|
|
|
=for apidoc sv_pv |
390
|
|
|
|
|
|
|
391
|
|
|
|
|
|
Use the C macro instead |
392
|
|
|
|
|
|
|
393
|
|
|
|
|
|
=for apidoc sv_pvn |
394
|
|
|
|
|
|
|
395
|
|
|
|
|
|
A private implementation of the C macro for compilers which can't |
396
|
|
|
|
|
|
cope with complex macro expressions. Always use the macro instead. |
397
|
|
|
|
|
|
|
398
|
|
|
|
|
|
=cut |
399
|
|
|
|
|
|
*/ |
400
|
|
|
|
|
|
|
401
|
|
|
|
|
|
char * |
402
|
0
|
|
|
|
|
Perl_sv_pvn(pTHX_ SV *sv, STRLEN *lp) |
403
|
|
|
|
|
|
{ |
404
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_PVN; |
405
|
|
|
|
|
|
|
406
|
0
|
0
|
|
|
|
if (SvPOK(sv)) { |
407
|
0
|
|
|
|
|
*lp = SvCUR(sv); |
408
|
0
|
|
|
|
|
return SvPVX(sv); |
409
|
|
|
|
|
|
} |
410
|
0
|
|
|
|
|
return sv_2pv(sv, lp); |
411
|
|
|
|
|
|
} |
412
|
|
|
|
|
|
|
413
|
|
|
|
|
|
|
414
|
|
|
|
|
|
char * |
415
|
0
|
|
|
|
|
Perl_sv_pvn_nomg(pTHX_ SV *sv, STRLEN *lp) |
416
|
|
|
|
|
|
{ |
417
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_PVN_NOMG; |
418
|
|
|
|
|
|
|
419
|
0
|
0
|
|
|
|
if (SvPOK(sv)) { |
420
|
0
|
|
|
|
|
*lp = SvCUR(sv); |
421
|
0
|
|
|
|
|
return SvPVX(sv); |
422
|
|
|
|
|
|
} |
423
|
0
|
|
|
|
|
return sv_2pv_flags(sv, lp, 0); |
424
|
|
|
|
|
|
} |
425
|
|
|
|
|
|
|
426
|
|
|
|
|
|
/* sv_pv() is now a macro using SvPV_nolen(); |
427
|
|
|
|
|
|
* this function provided for binary compatibility only |
428
|
|
|
|
|
|
*/ |
429
|
|
|
|
|
|
|
430
|
|
|
|
|
|
char * |
431
|
0
|
|
|
|
|
Perl_sv_pv(pTHX_ SV *sv) |
432
|
|
|
|
|
|
{ |
433
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_PV; |
434
|
|
|
|
|
|
|
435
|
0
|
0
|
|
|
|
if (SvPOK(sv)) |
436
|
0
|
|
|
|
|
return SvPVX(sv); |
437
|
|
|
|
|
|
|
438
|
0
|
|
|
|
|
return sv_2pv(sv, NULL); |
439
|
|
|
|
|
|
} |
440
|
|
|
|
|
|
|
441
|
|
|
|
|
|
/* sv_pvn_force() is now a macro using Perl_sv_pvn_force_flags(); |
442
|
|
|
|
|
|
* this function provided for binary compatibility only |
443
|
|
|
|
|
|
*/ |
444
|
|
|
|
|
|
|
445
|
|
|
|
|
|
char * |
446
|
0
|
|
|
|
|
Perl_sv_pvn_force(pTHX_ SV *sv, STRLEN *lp) |
447
|
|
|
|
|
|
{ |
448
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_PVN_FORCE; |
449
|
|
|
|
|
|
|
450
|
0
|
|
|
|
|
return sv_pvn_force_flags(sv, lp, SV_GMAGIC); |
451
|
|
|
|
|
|
} |
452
|
|
|
|
|
|
|
453
|
|
|
|
|
|
/* sv_pvbyte () is now a macro using Perl_sv_2pv_flags(); |
454
|
|
|
|
|
|
* this function provided for binary compatibility only |
455
|
|
|
|
|
|
*/ |
456
|
|
|
|
|
|
|
457
|
|
|
|
|
|
char * |
458
|
0
|
|
|
|
|
Perl_sv_pvbyte(pTHX_ SV *sv) |
459
|
|
|
|
|
|
{ |
460
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_PVBYTE; |
461
|
|
|
|
|
|
|
462
|
0
|
|
|
|
|
sv_utf8_downgrade(sv, FALSE); |
463
|
0
|
0
|
|
|
|
return sv_pv(sv); |
464
|
|
|
|
|
|
} |
465
|
|
|
|
|
|
|
466
|
|
|
|
|
|
/* |
467
|
|
|
|
|
|
=for apidoc sv_pvbyte |
468
|
|
|
|
|
|
|
469
|
|
|
|
|
|
Use C instead. |
470
|
|
|
|
|
|
|
471
|
|
|
|
|
|
=for apidoc sv_pvbyten |
472
|
|
|
|
|
|
|
473
|
|
|
|
|
|
A private implementation of the C macro for compilers |
474
|
|
|
|
|
|
which can't cope with complex macro expressions. Always use the macro |
475
|
|
|
|
|
|
instead. |
476
|
|
|
|
|
|
|
477
|
|
|
|
|
|
=cut |
478
|
|
|
|
|
|
*/ |
479
|
|
|
|
|
|
|
480
|
|
|
|
|
|
char * |
481
|
0
|
|
|
|
|
Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp) |
482
|
|
|
|
|
|
{ |
483
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_PVBYTEN; |
484
|
|
|
|
|
|
|
485
|
0
|
|
|
|
|
sv_utf8_downgrade(sv, FALSE); |
486
|
0
|
|
|
|
|
return sv_pvn(sv,lp); |
487
|
|
|
|
|
|
} |
488
|
|
|
|
|
|
|
489
|
|
|
|
|
|
/* sv_pvutf8 () is now a macro using Perl_sv_2pv_flags(); |
490
|
|
|
|
|
|
* this function provided for binary compatibility only |
491
|
|
|
|
|
|
*/ |
492
|
|
|
|
|
|
|
493
|
|
|
|
|
|
char * |
494
|
0
|
|
|
|
|
Perl_sv_pvutf8(pTHX_ SV *sv) |
495
|
|
|
|
|
|
{ |
496
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_PVUTF8; |
497
|
|
|
|
|
|
|
498
|
0
|
|
|
|
|
sv_utf8_upgrade(sv); |
499
|
0
|
0
|
|
|
|
return sv_pv(sv); |
500
|
|
|
|
|
|
} |
501
|
|
|
|
|
|
|
502
|
|
|
|
|
|
/* |
503
|
|
|
|
|
|
=for apidoc sv_pvutf8 |
504
|
|
|
|
|
|
|
505
|
|
|
|
|
|
Use the C macro instead |
506
|
|
|
|
|
|
|
507
|
|
|
|
|
|
=for apidoc sv_pvutf8n |
508
|
|
|
|
|
|
|
509
|
|
|
|
|
|
A private implementation of the C macro for compilers |
510
|
|
|
|
|
|
which can't cope with complex macro expressions. Always use the macro |
511
|
|
|
|
|
|
instead. |
512
|
|
|
|
|
|
|
513
|
|
|
|
|
|
=cut |
514
|
|
|
|
|
|
*/ |
515
|
|
|
|
|
|
|
516
|
|
|
|
|
|
char * |
517
|
0
|
|
|
|
|
Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *lp) |
518
|
|
|
|
|
|
{ |
519
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_PVUTF8N; |
520
|
|
|
|
|
|
|
521
|
0
|
|
|
|
|
sv_utf8_upgrade(sv); |
522
|
0
|
|
|
|
|
return sv_pvn(sv,lp); |
523
|
|
|
|
|
|
} |
524
|
|
|
|
|
|
|
525
|
|
|
|
|
|
/* sv_utf8_upgrade() is now a macro using sv_utf8_upgrade_flags(); |
526
|
|
|
|
|
|
* this function provided for binary compatibility only |
527
|
|
|
|
|
|
*/ |
528
|
|
|
|
|
|
|
529
|
|
|
|
|
|
STRLEN |
530
|
0
|
|
|
|
|
Perl_sv_utf8_upgrade(pTHX_ SV *sv) |
531
|
|
|
|
|
|
{ |
532
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_UTF8_UPGRADE; |
533
|
|
|
|
|
|
|
534
|
0
|
|
|
|
|
return sv_utf8_upgrade_flags(sv, SV_GMAGIC); |
535
|
|
|
|
|
|
} |
536
|
|
|
|
|
|
|
537
|
|
|
|
|
|
int |
538
|
0
|
|
|
|
|
Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...) |
539
|
|
|
|
|
|
{ |
540
|
|
|
|
|
|
dTHXs; |
541
|
|
|
|
|
|
va_list(arglist); |
542
|
|
|
|
|
|
|
543
|
|
|
|
|
|
/* Easier to special case this here than in embed.pl. (Look at what it |
544
|
|
|
|
|
|
generates for proto.h) */ |
545
|
|
|
|
|
|
#ifdef PERL_IMPLICIT_CONTEXT |
546
|
|
|
|
|
|
PERL_ARGS_ASSERT_FPRINTF_NOCONTEXT; |
547
|
|
|
|
|
|
#endif |
548
|
|
|
|
|
|
|
549
|
0
|
|
|
|
|
va_start(arglist, format); |
550
|
0
|
|
|
|
|
return PerlIO_vprintf(stream, format, arglist); |
551
|
|
|
|
|
|
} |
552
|
|
|
|
|
|
|
553
|
|
|
|
|
|
int |
554
|
0
|
|
|
|
|
Perl_printf_nocontext(const char *format, ...) |
555
|
|
|
|
|
|
{ |
556
|
|
|
|
|
|
dTHX; |
557
|
|
|
|
|
|
va_list(arglist); |
558
|
|
|
|
|
|
|
559
|
|
|
|
|
|
#ifdef PERL_IMPLICIT_CONTEXT |
560
|
|
|
|
|
|
PERL_ARGS_ASSERT_PRINTF_NOCONTEXT; |
561
|
|
|
|
|
|
#endif |
562
|
|
|
|
|
|
|
563
|
0
|
|
|
|
|
va_start(arglist, format); |
564
|
0
|
|
|
|
|
return PerlIO_vprintf(PerlIO_stdout(), format, arglist); |
565
|
|
|
|
|
|
} |
566
|
|
|
|
|
|
|
567
|
|
|
|
|
|
#if defined(HUGE_VAL) || (defined(USE_LONG_DOUBLE) && defined(HUGE_VALL)) |
568
|
|
|
|
|
|
/* |
569
|
|
|
|
|
|
* This hack is to force load of "huge" support from libm.a |
570
|
|
|
|
|
|
* So it is in perl for (say) POSIX to use. |
571
|
|
|
|
|
|
* Needed for SunOS with Sun's 'acc' for example. |
572
|
|
|
|
|
|
*/ |
573
|
|
|
|
|
|
NV |
574
|
0
|
|
|
|
|
Perl_huge(void) |
575
|
|
|
|
|
|
{ |
576
|
|
|
|
|
|
# if defined(USE_LONG_DOUBLE) && defined(HUGE_VALL) |
577
|
|
|
|
|
|
return HUGE_VALL; |
578
|
|
|
|
|
|
# else |
579
|
0
|
|
|
|
|
return HUGE_VAL; |
580
|
|
|
|
|
|
# endif |
581
|
|
|
|
|
|
} |
582
|
|
|
|
|
|
#endif |
583
|
|
|
|
|
|
|
584
|
|
|
|
|
|
/* compatibility with versions <= 5.003. */ |
585
|
|
|
|
|
|
void |
586
|
0
|
|
|
|
|
Perl_gv_fullname(pTHX_ SV *sv, const GV *gv) |
587
|
|
|
|
|
|
{ |
588
|
|
|
|
|
|
PERL_ARGS_ASSERT_GV_FULLNAME; |
589
|
|
|
|
|
|
|
590
|
0
|
0
|
|
|
|
gv_fullname3(sv, gv, sv == (const SV*)gv ? "*" : ""); |
591
|
0
|
|
|
|
|
} |
592
|
|
|
|
|
|
|
593
|
|
|
|
|
|
/* compatibility with versions <= 5.003. */ |
594
|
|
|
|
|
|
void |
595
|
0
|
|
|
|
|
Perl_gv_efullname(pTHX_ SV *sv, const GV *gv) |
596
|
|
|
|
|
|
{ |
597
|
|
|
|
|
|
PERL_ARGS_ASSERT_GV_EFULLNAME; |
598
|
|
|
|
|
|
|
599
|
0
|
0
|
|
|
|
gv_efullname3(sv, gv, sv == (const SV*)gv ? "*" : ""); |
600
|
0
|
|
|
|
|
} |
601
|
|
|
|
|
|
|
602
|
|
|
|
|
|
void |
603
|
0
|
|
|
|
|
Perl_gv_fullname3(pTHX_ SV *sv, const GV *gv, const char *prefix) |
604
|
|
|
|
|
|
{ |
605
|
|
|
|
|
|
PERL_ARGS_ASSERT_GV_FULLNAME3; |
606
|
|
|
|
|
|
|
607
|
0
|
|
|
|
|
gv_fullname4(sv, gv, prefix, TRUE); |
608
|
0
|
|
|
|
|
} |
609
|
|
|
|
|
|
|
610
|
|
|
|
|
|
void |
611
|
0
|
|
|
|
|
Perl_gv_efullname3(pTHX_ SV *sv, const GV *gv, const char *prefix) |
612
|
|
|
|
|
|
{ |
613
|
|
|
|
|
|
PERL_ARGS_ASSERT_GV_EFULLNAME3; |
614
|
|
|
|
|
|
|
615
|
0
|
|
|
|
|
gv_efullname4(sv, gv, prefix, TRUE); |
616
|
0
|
|
|
|
|
} |
617
|
|
|
|
|
|
|
618
|
|
|
|
|
|
/* |
619
|
|
|
|
|
|
=for apidoc gv_fetchmethod |
620
|
|
|
|
|
|
|
621
|
|
|
|
|
|
See L. |
622
|
|
|
|
|
|
|
623
|
|
|
|
|
|
=cut |
624
|
|
|
|
|
|
*/ |
625
|
|
|
|
|
|
|
626
|
|
|
|
|
|
GV * |
627
|
0
|
|
|
|
|
Perl_gv_fetchmethod(pTHX_ HV *stash, const char *name) |
628
|
|
|
|
|
|
{ |
629
|
|
|
|
|
|
PERL_ARGS_ASSERT_GV_FETCHMETHOD; |
630
|
|
|
|
|
|
|
631
|
0
|
|
|
|
|
return gv_fetchmethod_autoload(stash, name, TRUE); |
632
|
|
|
|
|
|
} |
633
|
|
|
|
|
|
|
634
|
|
|
|
|
|
HE * |
635
|
0
|
|
|
|
|
Perl_hv_iternext(pTHX_ HV *hv) |
636
|
|
|
|
|
|
{ |
637
|
|
|
|
|
|
PERL_ARGS_ASSERT_HV_ITERNEXT; |
638
|
|
|
|
|
|
|
639
|
0
|
|
|
|
|
return hv_iternext_flags(hv, 0); |
640
|
|
|
|
|
|
} |
641
|
|
|
|
|
|
|
642
|
|
|
|
|
|
void |
643
|
0
|
|
|
|
|
Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how) |
644
|
|
|
|
|
|
{ |
645
|
|
|
|
|
|
PERL_ARGS_ASSERT_HV_MAGIC; |
646
|
|
|
|
|
|
|
647
|
0
|
|
|
|
|
sv_magic(MUTABLE_SV(hv), MUTABLE_SV(gv), how, NULL, 0); |
648
|
0
|
|
|
|
|
} |
649
|
|
|
|
|
|
|
650
|
|
|
|
|
|
bool |
651
|
0
|
|
|
|
|
Perl_do_open(pTHX_ GV *gv, const char *name, I32 len, int as_raw, |
652
|
|
|
|
|
|
int rawmode, int rawperm, PerlIO *supplied_fp) |
653
|
|
|
|
|
|
{ |
654
|
|
|
|
|
|
PERL_ARGS_ASSERT_DO_OPEN; |
655
|
|
|
|
|
|
|
656
|
0
|
|
|
|
|
return do_openn(gv, name, len, as_raw, rawmode, rawperm, |
657
|
|
|
|
|
|
supplied_fp, (SV **) NULL, 0); |
658
|
|
|
|
|
|
} |
659
|
|
|
|
|
|
|
660
|
|
|
|
|
|
bool |
661
|
0
|
|
|
|
|
Perl_do_open9(pTHX_ GV *gv, const char *name, I32 len, int |
662
|
|
|
|
|
|
as_raw, |
663
|
|
|
|
|
|
int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs, |
664
|
|
|
|
|
|
I32 num_svs) |
665
|
|
|
|
|
|
{ |
666
|
|
|
|
|
|
PERL_ARGS_ASSERT_DO_OPEN9; |
667
|
|
|
|
|
|
|
668
|
|
|
|
|
|
PERL_UNUSED_ARG(num_svs); |
669
|
0
|
|
|
|
|
return do_openn(gv, name, len, as_raw, rawmode, rawperm, |
670
|
|
|
|
|
|
supplied_fp, &svs, 1); |
671
|
|
|
|
|
|
} |
672
|
|
|
|
|
|
|
673
|
|
|
|
|
|
int |
674
|
0
|
|
|
|
|
Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int mode) |
675
|
|
|
|
|
|
{ |
676
|
|
|
|
|
|
/* The old body of this is now in non-LAYER part of perlio.c |
677
|
|
|
|
|
|
* This is a stub for any XS code which might have been calling it. |
678
|
|
|
|
|
|
*/ |
679
|
|
|
|
|
|
const char *name = ":raw"; |
680
|
|
|
|
|
|
|
681
|
|
|
|
|
|
PERL_ARGS_ASSERT_DO_BINMODE; |
682
|
|
|
|
|
|
|
683
|
|
|
|
|
|
#ifdef PERLIO_USING_CRLF |
684
|
|
|
|
|
|
if (!(mode & O_BINARY)) |
685
|
|
|
|
|
|
name = ":crlf"; |
686
|
|
|
|
|
|
#endif |
687
|
0
|
|
|
|
|
return PerlIO_binmode(aTHX_ fp, iotype, mode, name); |
688
|
|
|
|
|
|
} |
689
|
|
|
|
|
|
|
690
|
|
|
|
|
|
#ifndef OS2 |
691
|
|
|
|
|
|
bool |
692
|
0
|
|
|
|
|
Perl_do_aexec(pTHX_ SV *really, SV **mark, SV **sp) |
693
|
|
|
|
|
|
{ |
694
|
|
|
|
|
|
PERL_ARGS_ASSERT_DO_AEXEC; |
695
|
|
|
|
|
|
|
696
|
0
|
|
|
|
|
return do_aexec5(really, mark, sp, 0, 0); |
697
|
|
|
|
|
|
} |
698
|
|
|
|
|
|
#endif |
699
|
|
|
|
|
|
|
700
|
|
|
|
|
|
/* Backwards compatibility. */ |
701
|
|
|
|
|
|
int |
702
|
0
|
|
|
|
|
Perl_init_i18nl14n(pTHX_ int printwarn) |
703
|
|
|
|
|
|
{ |
704
|
0
|
|
|
|
|
return init_i18nl10n(printwarn); |
705
|
|
|
|
|
|
} |
706
|
|
|
|
|
|
|
707
|
|
|
|
|
|
U8 * |
708
|
16340
|
|
|
|
|
Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv) |
709
|
|
|
|
|
|
{ |
710
|
|
|
|
|
|
PERL_ARGS_ASSERT_UVUNI_TO_UTF8; |
711
|
|
|
|
|
|
|
712
|
16340
|
|
|
|
|
return Perl_uvoffuni_to_utf8_flags(aTHX_ d, uv, 0); |
713
|
|
|
|
|
|
} |
714
|
|
|
|
|
|
|
715
|
|
|
|
|
|
bool |
716
|
0
|
|
|
|
|
Perl_is_utf8_string_loc(pTHX_ const U8 *s, STRLEN len, const U8 **ep) |
717
|
|
|
|
|
|
{ |
718
|
|
|
|
|
|
PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC; |
719
|
|
|
|
|
|
|
720
|
0
|
|
|
|
|
return is_utf8_string_loclen(s, len, ep, 0); |
721
|
|
|
|
|
|
} |
722
|
|
|
|
|
|
|
723
|
|
|
|
|
|
/* |
724
|
|
|
|
|
|
=for apidoc sv_nolocking |
725
|
|
|
|
|
|
|
726
|
|
|
|
|
|
Dummy routine which "locks" an SV when there is no locking module present. |
727
|
|
|
|
|
|
Exists to avoid test for a NULL function pointer and because it could |
728
|
|
|
|
|
|
potentially warn under some level of strict-ness. |
729
|
|
|
|
|
|
|
730
|
|
|
|
|
|
"Superseded" by sv_nosharing(). |
731
|
|
|
|
|
|
|
732
|
|
|
|
|
|
=cut |
733
|
|
|
|
|
|
*/ |
734
|
|
|
|
|
|
|
735
|
|
|
|
|
|
void |
736
|
0
|
|
|
|
|
Perl_sv_nolocking(pTHX_ SV *sv) |
737
|
|
|
|
|
|
{ |
738
|
|
|
|
|
|
PERL_UNUSED_CONTEXT; |
739
|
|
|
|
|
|
PERL_UNUSED_ARG(sv); |
740
|
0
|
|
|
|
|
} |
741
|
|
|
|
|
|
|
742
|
|
|
|
|
|
|
743
|
|
|
|
|
|
/* |
744
|
|
|
|
|
|
=for apidoc sv_nounlocking |
745
|
|
|
|
|
|
|
746
|
|
|
|
|
|
Dummy routine which "unlocks" an SV when there is no locking module present. |
747
|
|
|
|
|
|
Exists to avoid test for a NULL function pointer and because it could |
748
|
|
|
|
|
|
potentially warn under some level of strict-ness. |
749
|
|
|
|
|
|
|
750
|
|
|
|
|
|
"Superseded" by sv_nosharing(). |
751
|
|
|
|
|
|
|
752
|
|
|
|
|
|
=cut |
753
|
|
|
|
|
|
*/ |
754
|
|
|
|
|
|
|
755
|
|
|
|
|
|
void |
756
|
0
|
|
|
|
|
Perl_sv_nounlocking(pTHX_ SV *sv) |
757
|
|
|
|
|
|
{ |
758
|
|
|
|
|
|
PERL_UNUSED_CONTEXT; |
759
|
|
|
|
|
|
PERL_UNUSED_ARG(sv); |
760
|
0
|
|
|
|
|
} |
761
|
|
|
|
|
|
|
762
|
|
|
|
|
|
void |
763
|
0
|
|
|
|
|
Perl_save_long(pTHX_ long int *longp) |
764
|
|
|
|
|
|
{ |
765
|
|
|
|
|
|
dVAR; |
766
|
|
|
|
|
|
|
767
|
|
|
|
|
|
PERL_ARGS_ASSERT_SAVE_LONG; |
768
|
|
|
|
|
|
|
769
|
0
|
0
|
|
|
|
SSCHECK(3); |
770
|
0
|
|
|
|
|
SSPUSHLONG(*longp); |
771
|
0
|
|
|
|
|
SSPUSHPTR(longp); |
772
|
0
|
|
|
|
|
SSPUSHUV(SAVEt_LONG); |
773
|
0
|
|
|
|
|
} |
774
|
|
|
|
|
|
|
775
|
|
|
|
|
|
void |
776
|
0
|
|
|
|
|
Perl_save_iv(pTHX_ IV *ivp) |
777
|
|
|
|
|
|
{ |
778
|
|
|
|
|
|
dVAR; |
779
|
|
|
|
|
|
|
780
|
|
|
|
|
|
PERL_ARGS_ASSERT_SAVE_IV; |
781
|
|
|
|
|
|
|
782
|
0
|
0
|
|
|
|
SSCHECK(3); |
783
|
0
|
|
|
|
|
SSPUSHIV(*ivp); |
784
|
0
|
|
|
|
|
SSPUSHPTR(ivp); |
785
|
0
|
|
|
|
|
SSPUSHUV(SAVEt_IV); |
786
|
0
|
|
|
|
|
} |
787
|
|
|
|
|
|
|
788
|
|
|
|
|
|
void |
789
|
0
|
|
|
|
|
Perl_save_nogv(pTHX_ GV *gv) |
790
|
|
|
|
|
|
{ |
791
|
|
|
|
|
|
dVAR; |
792
|
|
|
|
|
|
|
793
|
|
|
|
|
|
PERL_ARGS_ASSERT_SAVE_NOGV; |
794
|
|
|
|
|
|
|
795
|
0
|
0
|
|
|
|
SSCHECK(2); |
796
|
0
|
|
|
|
|
SSPUSHPTR(gv); |
797
|
0
|
|
|
|
|
SSPUSHUV(SAVEt_NSTAB); |
798
|
0
|
|
|
|
|
} |
799
|
|
|
|
|
|
|
800
|
|
|
|
|
|
void |
801
|
0
|
|
|
|
|
Perl_save_list(pTHX_ SV **sarg, I32 maxsarg) |
802
|
|
|
|
|
|
{ |
803
|
|
|
|
|
|
dVAR; |
804
|
|
|
|
|
|
I32 i; |
805
|
|
|
|
|
|
|
806
|
|
|
|
|
|
PERL_ARGS_ASSERT_SAVE_LIST; |
807
|
|
|
|
|
|
|
808
|
0
|
0
|
|
|
|
for (i = 1; i <= maxsarg; i++) { |
|
|
0
|
|
|
|
|
809
|
|
|
|
|
|
SV *sv; |
810
|
0
|
|
|
|
|
SvGETMAGIC(sarg[i]); |
811
|
0
|
|
|
|
|
sv = newSV(0); |
812
|
0
|
|
|
|
|
sv_setsv_nomg(sv,sarg[i]); |
813
|
0
|
0
|
|
|
|
SSCHECK(3); |
814
|
0
|
|
|
|
|
SSPUSHPTR(sarg[i]); /* remember the pointer */ |
815
|
0
|
|
|
|
|
SSPUSHPTR(sv); /* remember the value */ |
816
|
0
|
|
|
|
|
SSPUSHUV(SAVEt_ITEM); |
817
|
|
|
|
|
|
} |
818
|
0
|
|
|
|
|
} |
819
|
|
|
|
|
|
|
820
|
|
|
|
|
|
/* |
821
|
|
|
|
|
|
=for apidoc sv_usepvn_mg |
822
|
|
|
|
|
|
|
823
|
|
|
|
|
|
Like C, but also handles 'set' magic. |
824
|
|
|
|
|
|
|
825
|
|
|
|
|
|
=cut |
826
|
|
|
|
|
|
*/ |
827
|
|
|
|
|
|
|
828
|
|
|
|
|
|
void |
829
|
0
|
|
|
|
|
Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len) |
830
|
|
|
|
|
|
{ |
831
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_USEPVN_MG; |
832
|
|
|
|
|
|
|
833
|
0
|
|
|
|
|
sv_usepvn_flags(sv,ptr,len, SV_SMAGIC); |
834
|
0
|
|
|
|
|
} |
835
|
|
|
|
|
|
|
836
|
|
|
|
|
|
/* |
837
|
|
|
|
|
|
=for apidoc sv_usepvn |
838
|
|
|
|
|
|
|
839
|
|
|
|
|
|
Tells an SV to use C to find its string value. Implemented by |
840
|
|
|
|
|
|
calling C with C of 0, hence does not handle 'set' |
841
|
|
|
|
|
|
magic. See C. |
842
|
|
|
|
|
|
|
843
|
|
|
|
|
|
=cut |
844
|
|
|
|
|
|
*/ |
845
|
|
|
|
|
|
|
846
|
|
|
|
|
|
void |
847
|
0
|
|
|
|
|
Perl_sv_usepvn(pTHX_ SV *sv, char *ptr, STRLEN len) |
848
|
|
|
|
|
|
{ |
849
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_USEPVN; |
850
|
|
|
|
|
|
|
851
|
0
|
|
|
|
|
sv_usepvn_flags(sv,ptr,len, 0); |
852
|
0
|
|
|
|
|
} |
853
|
|
|
|
|
|
|
854
|
|
|
|
|
|
/* |
855
|
|
|
|
|
|
=for apidoc unpack_str |
856
|
|
|
|
|
|
|
857
|
|
|
|
|
|
The engine implementing unpack() Perl function. Note: parameters strbeg, new_s |
858
|
|
|
|
|
|
and ocnt are not used. This call should not be used, use unpackstring instead. |
859
|
|
|
|
|
|
|
860
|
|
|
|
|
|
=cut */ |
861
|
|
|
|
|
|
|
862
|
|
|
|
|
|
I32 |
863
|
0
|
|
|
|
|
Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s, |
864
|
|
|
|
|
|
const char *strbeg, const char *strend, char **new_s, I32 ocnt, |
865
|
|
|
|
|
|
U32 flags) |
866
|
|
|
|
|
|
{ |
867
|
|
|
|
|
|
PERL_ARGS_ASSERT_UNPACK_STR; |
868
|
|
|
|
|
|
|
869
|
|
|
|
|
|
PERL_UNUSED_ARG(strbeg); |
870
|
|
|
|
|
|
PERL_UNUSED_ARG(new_s); |
871
|
|
|
|
|
|
PERL_UNUSED_ARG(ocnt); |
872
|
|
|
|
|
|
|
873
|
0
|
|
|
|
|
return unpackstring(pat, patend, s, strend, flags); |
874
|
|
|
|
|
|
} |
875
|
|
|
|
|
|
|
876
|
|
|
|
|
|
/* |
877
|
|
|
|
|
|
=for apidoc pack_cat |
878
|
|
|
|
|
|
|
879
|
|
|
|
|
|
The engine implementing pack() Perl function. Note: parameters next_in_list and |
880
|
|
|
|
|
|
flags are not used. This call should not be used; use packlist instead. |
881
|
|
|
|
|
|
|
882
|
|
|
|
|
|
=cut |
883
|
|
|
|
|
|
*/ |
884
|
|
|
|
|
|
|
885
|
|
|
|
|
|
void |
886
|
0
|
|
|
|
|
Perl_pack_cat(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags) |
887
|
|
|
|
|
|
{ |
888
|
|
|
|
|
|
PERL_ARGS_ASSERT_PACK_CAT; |
889
|
|
|
|
|
|
|
890
|
|
|
|
|
|
PERL_UNUSED_ARG(next_in_list); |
891
|
|
|
|
|
|
PERL_UNUSED_ARG(flags); |
892
|
|
|
|
|
|
|
893
|
0
|
|
|
|
|
packlist(cat, pat, patend, beglist, endlist); |
894
|
0
|
|
|
|
|
} |
895
|
|
|
|
|
|
|
896
|
|
|
|
|
|
HE * |
897
|
0
|
|
|
|
|
Perl_hv_store_ent(pTHX_ HV *hv, SV *keysv, SV *val, U32 hash) |
898
|
|
|
|
|
|
{ |
899
|
0
|
|
|
|
|
return (HE *)hv_common(hv, keysv, NULL, 0, 0, HV_FETCH_ISSTORE, val, hash); |
900
|
|
|
|
|
|
} |
901
|
|
|
|
|
|
|
902
|
|
|
|
|
|
bool |
903
|
0
|
|
|
|
|
Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash) |
904
|
|
|
|
|
|
{ |
905
|
|
|
|
|
|
PERL_ARGS_ASSERT_HV_EXISTS_ENT; |
906
|
|
|
|
|
|
|
907
|
0
|
|
|
|
|
return hv_common(hv, keysv, NULL, 0, 0, HV_FETCH_ISEXISTS, 0, hash) |
908
|
|
|
|
|
|
? TRUE : FALSE; |
909
|
|
|
|
|
|
} |
910
|
|
|
|
|
|
|
911
|
|
|
|
|
|
HE * |
912
|
0
|
|
|
|
|
Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash) |
913
|
|
|
|
|
|
{ |
914
|
|
|
|
|
|
PERL_ARGS_ASSERT_HV_FETCH_ENT; |
915
|
|
|
|
|
|
|
916
|
0
|
0
|
|
|
|
return (HE *)hv_common(hv, keysv, NULL, 0, 0, |
917
|
|
|
|
|
|
(lval ? HV_FETCH_LVALUE : 0), NULL, hash); |
918
|
|
|
|
|
|
} |
919
|
|
|
|
|
|
|
920
|
|
|
|
|
|
SV * |
921
|
0
|
|
|
|
|
Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash) |
922
|
|
|
|
|
|
{ |
923
|
|
|
|
|
|
PERL_ARGS_ASSERT_HV_DELETE_ENT; |
924
|
|
|
|
|
|
|
925
|
0
|
|
|
|
|
return MUTABLE_SV(hv_common(hv, keysv, NULL, 0, 0, flags | HV_DELETE, NULL, |
926
|
|
|
|
|
|
hash)); |
927
|
|
|
|
|
|
} |
928
|
|
|
|
|
|
|
929
|
|
|
|
|
|
SV** |
930
|
0
|
|
|
|
|
Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, |
931
|
|
|
|
|
|
int flags) |
932
|
|
|
|
|
|
{ |
933
|
0
|
|
|
|
|
return (SV**) hv_common(hv, NULL, key, klen, flags, |
934
|
|
|
|
|
|
(HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), val, hash); |
935
|
|
|
|
|
|
} |
936
|
|
|
|
|
|
|
937
|
|
|
|
|
|
SV** |
938
|
0
|
|
|
|
|
Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen_i32, SV *val, U32 hash) |
939
|
|
|
|
|
|
{ |
940
|
|
|
|
|
|
STRLEN klen; |
941
|
|
|
|
|
|
int flags; |
942
|
|
|
|
|
|
|
943
|
0
|
0
|
|
|
|
if (klen_i32 < 0) { |
944
|
0
|
|
|
|
|
klen = -klen_i32; |
945
|
|
|
|
|
|
flags = HVhek_UTF8; |
946
|
|
|
|
|
|
} else { |
947
|
0
|
|
|
|
|
klen = klen_i32; |
948
|
|
|
|
|
|
flags = 0; |
949
|
|
|
|
|
|
} |
950
|
0
|
|
|
|
|
return (SV **) hv_common(hv, NULL, key, klen, flags, |
951
|
|
|
|
|
|
(HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), val, hash); |
952
|
|
|
|
|
|
} |
953
|
|
|
|
|
|
|
954
|
|
|
|
|
|
bool |
955
|
0
|
|
|
|
|
Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen_i32) |
956
|
|
|
|
|
|
{ |
957
|
|
|
|
|
|
STRLEN klen; |
958
|
|
|
|
|
|
int flags; |
959
|
|
|
|
|
|
|
960
|
|
|
|
|
|
PERL_ARGS_ASSERT_HV_EXISTS; |
961
|
|
|
|
|
|
|
962
|
0
|
0
|
|
|
|
if (klen_i32 < 0) { |
963
|
0
|
|
|
|
|
klen = -klen_i32; |
964
|
|
|
|
|
|
flags = HVhek_UTF8; |
965
|
|
|
|
|
|
} else { |
966
|
0
|
|
|
|
|
klen = klen_i32; |
967
|
|
|
|
|
|
flags = 0; |
968
|
|
|
|
|
|
} |
969
|
0
|
|
|
|
|
return hv_common(hv, NULL, key, klen, flags, HV_FETCH_ISEXISTS, 0, 0) |
970
|
|
|
|
|
|
? TRUE : FALSE; |
971
|
|
|
|
|
|
} |
972
|
|
|
|
|
|
|
973
|
|
|
|
|
|
SV** |
974
|
0
|
|
|
|
|
Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen_i32, I32 lval) |
975
|
|
|
|
|
|
{ |
976
|
|
|
|
|
|
STRLEN klen; |
977
|
|
|
|
|
|
int flags; |
978
|
|
|
|
|
|
|
979
|
|
|
|
|
|
PERL_ARGS_ASSERT_HV_FETCH; |
980
|
|
|
|
|
|
|
981
|
0
|
0
|
|
|
|
if (klen_i32 < 0) { |
982
|
0
|
|
|
|
|
klen = -klen_i32; |
983
|
|
|
|
|
|
flags = HVhek_UTF8; |
984
|
|
|
|
|
|
} else { |
985
|
0
|
|
|
|
|
klen = klen_i32; |
986
|
|
|
|
|
|
flags = 0; |
987
|
|
|
|
|
|
} |
988
|
0
|
0
|
|
|
|
return (SV **) hv_common(hv, NULL, key, klen, flags, |
989
|
|
|
|
|
|
lval ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) |
990
|
|
|
|
|
|
: HV_FETCH_JUST_SV, NULL, 0); |
991
|
|
|
|
|
|
} |
992
|
|
|
|
|
|
|
993
|
|
|
|
|
|
SV * |
994
|
0
|
|
|
|
|
Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen_i32, I32 flags) |
995
|
|
|
|
|
|
{ |
996
|
|
|
|
|
|
STRLEN klen; |
997
|
|
|
|
|
|
int k_flags; |
998
|
|
|
|
|
|
|
999
|
|
|
|
|
|
PERL_ARGS_ASSERT_HV_DELETE; |
1000
|
|
|
|
|
|
|
1001
|
0
|
0
|
|
|
|
if (klen_i32 < 0) { |
1002
|
0
|
|
|
|
|
klen = -klen_i32; |
1003
|
|
|
|
|
|
k_flags = HVhek_UTF8; |
1004
|
|
|
|
|
|
} else { |
1005
|
0
|
|
|
|
|
klen = klen_i32; |
1006
|
|
|
|
|
|
k_flags = 0; |
1007
|
|
|
|
|
|
} |
1008
|
0
|
|
|
|
|
return MUTABLE_SV(hv_common(hv, NULL, key, klen, k_flags, flags | HV_DELETE, |
1009
|
|
|
|
|
|
NULL, 0)); |
1010
|
|
|
|
|
|
} |
1011
|
|
|
|
|
|
|
1012
|
|
|
|
|
|
/* Functions after here were made mathoms post 5.10.0 but pre 5.8.9 */ |
1013
|
|
|
|
|
|
|
1014
|
|
|
|
|
|
AV * |
1015
|
0
|
|
|
|
|
Perl_newAV(pTHX) |
1016
|
|
|
|
|
|
{ |
1017
|
0
|
|
|
|
|
return MUTABLE_AV(newSV_type(SVt_PVAV)); |
1018
|
|
|
|
|
|
/* sv_upgrade does AvREAL_only(): |
1019
|
|
|
|
|
|
AvALLOC(av) = 0; |
1020
|
|
|
|
|
|
AvARRAY(av) = NULL; |
1021
|
|
|
|
|
|
AvMAX(av) = AvFILLp(av) = -1; */ |
1022
|
|
|
|
|
|
} |
1023
|
|
|
|
|
|
|
1024
|
|
|
|
|
|
HV * |
1025
|
0
|
|
|
|
|
Perl_newHV(pTHX) |
1026
|
|
|
|
|
|
{ |
1027
|
0
|
|
|
|
|
HV * const hv = MUTABLE_HV(newSV_type(SVt_PVHV)); |
1028
|
|
|
|
|
|
assert(!SvOK(hv)); |
1029
|
|
|
|
|
|
|
1030
|
0
|
|
|
|
|
return hv; |
1031
|
|
|
|
|
|
} |
1032
|
|
|
|
|
|
|
1033
|
|
|
|
|
|
void |
1034
|
0
|
|
|
|
|
Perl_sv_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, |
1035
|
|
|
|
|
|
const char *const little, const STRLEN littlelen) |
1036
|
|
|
|
|
|
{ |
1037
|
|
|
|
|
|
PERL_ARGS_ASSERT_SV_INSERT; |
1038
|
0
|
|
|
|
|
sv_insert_flags(bigstr, offset, len, little, littlelen, SV_GMAGIC); |
1039
|
0
|
|
|
|
|
} |
1040
|
|
|
|
|
|
|
1041
|
|
|
|
|
|
void |
1042
|
0
|
|
|
|
|
Perl_save_freesv(pTHX_ SV *sv) |
1043
|
|
|
|
|
|
{ |
1044
|
|
|
|
|
|
dVAR; |
1045
|
0
|
|
|
|
|
save_freesv(sv); |
1046
|
0
|
|
|
|
|
} |
1047
|
|
|
|
|
|
|
1048
|
|
|
|
|
|
void |
1049
|
0
|
|
|
|
|
Perl_save_mortalizesv(pTHX_ SV *sv) |
1050
|
|
|
|
|
|
{ |
1051
|
|
|
|
|
|
dVAR; |
1052
|
|
|
|
|
|
|
1053
|
|
|
|
|
|
PERL_ARGS_ASSERT_SAVE_MORTALIZESV; |
1054
|
|
|
|
|
|
|
1055
|
0
|
|
|
|
|
save_mortalizesv(sv); |
1056
|
0
|
|
|
|
|
} |
1057
|
|
|
|
|
|
|
1058
|
|
|
|
|
|
void |
1059
|
0
|
|
|
|
|
Perl_save_freeop(pTHX_ OP *o) |
1060
|
|
|
|
|
|
{ |
1061
|
|
|
|
|
|
dVAR; |
1062
|
0
|
|
|
|
|
save_freeop(o); |
1063
|
0
|
|
|
|
|
} |
1064
|
|
|
|
|
|
|
1065
|
|
|
|
|
|
void |
1066
|
0
|
|
|
|
|
Perl_save_freepv(pTHX_ char *pv) |
1067
|
|
|
|
|
|
{ |
1068
|
|
|
|
|
|
dVAR; |
1069
|
0
|
|
|
|
|
save_freepv(pv); |
1070
|
0
|
|
|
|
|
} |
1071
|
|
|
|
|
|
|
1072
|
|
|
|
|
|
void |
1073
|
0
|
|
|
|
|
Perl_save_op(pTHX) |
1074
|
|
|
|
|
|
{ |
1075
|
|
|
|
|
|
dVAR; |
1076
|
0
|
|
|
|
|
save_op(); |
1077
|
0
|
|
|
|
|
} |
1078
|
|
|
|
|
|
|
1079
|
|
|
|
|
|
#ifdef PERL_DONT_CREATE_GVSV |
1080
|
|
|
|
|
|
GV * |
1081
|
0
|
|
|
|
|
Perl_gv_SVadd(pTHX_ GV *gv) |
1082
|
|
|
|
|
|
{ |
1083
|
0
|
|
|
|
|
return gv_SVadd(gv); |
1084
|
|
|
|
|
|
} |
1085
|
|
|
|
|
|
#endif |
1086
|
|
|
|
|
|
|
1087
|
|
|
|
|
|
GV * |
1088
|
0
|
|
|
|
|
Perl_gv_AVadd(pTHX_ GV *gv) |
1089
|
|
|
|
|
|
{ |
1090
|
0
|
|
|
|
|
return gv_AVadd(gv); |
1091
|
|
|
|
|
|
} |
1092
|
|
|
|
|
|
|
1093
|
|
|
|
|
|
GV * |
1094
|
0
|
|
|
|
|
Perl_gv_HVadd(pTHX_ GV *gv) |
1095
|
|
|
|
|
|
{ |
1096
|
0
|
|
|
|
|
return gv_HVadd(gv); |
1097
|
|
|
|
|
|
} |
1098
|
|
|
|
|
|
|
1099
|
|
|
|
|
|
GV * |
1100
|
0
|
|
|
|
|
Perl_gv_IOadd(pTHX_ GV *gv) |
1101
|
|
|
|
|
|
{ |
1102
|
0
|
|
|
|
|
return gv_IOadd(gv); |
1103
|
|
|
|
|
|
} |
1104
|
|
|
|
|
|
|
1105
|
|
|
|
|
|
IO * |
1106
|
0
|
|
|
|
|
Perl_newIO(pTHX) |
1107
|
|
|
|
|
|
{ |
1108
|
0
|
|
|
|
|
return MUTABLE_IO(newSV_type(SVt_PVIO)); |
1109
|
|
|
|
|
|
} |
1110
|
|
|
|
|
|
|
1111
|
|
|
|
|
|
I32 |
1112
|
0
|
|
|
|
|
Perl_my_stat(pTHX) |
1113
|
|
|
|
|
|
{ |
1114
|
0
|
|
|
|
|
return my_stat_flags(SV_GMAGIC); |
1115
|
|
|
|
|
|
} |
1116
|
|
|
|
|
|
|
1117
|
|
|
|
|
|
I32 |
1118
|
0
|
|
|
|
|
Perl_my_lstat(pTHX) |
1119
|
|
|
|
|
|
{ |
1120
|
0
|
|
|
|
|
return my_lstat_flags(SV_GMAGIC); |
1121
|
|
|
|
|
|
} |
1122
|
|
|
|
|
|
|
1123
|
|
|
|
|
|
I32 |
1124
|
0
|
|
|
|
|
Perl_sv_eq(pTHX_ SV *sv1, SV *sv2) |
1125
|
|
|
|
|
|
{ |
1126
|
0
|
|
|
|
|
return sv_eq_flags(sv1, sv2, SV_GMAGIC); |
1127
|
|
|
|
|
|
} |
1128
|
|
|
|
|
|
|
1129
|
|
|
|
|
|
#ifdef USE_LOCALE_COLLATE |
1130
|
|
|
|
|
|
char * |
1131
|
0
|
|
|
|
|
Perl_sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp) |
1132
|
|
|
|
|
|
{ |
1133
|
0
|
|
|
|
|
return sv_collxfrm_flags(sv, nxp, SV_GMAGIC); |
1134
|
|
|
|
|
|
} |
1135
|
|
|
|
|
|
#endif |
1136
|
|
|
|
|
|
|
1137
|
|
|
|
|
|
bool |
1138
|
0
|
|
|
|
|
Perl_sv_2bool(pTHX_ SV *const sv) |
1139
|
|
|
|
|
|
{ |
1140
|
0
|
|
|
|
|
return sv_2bool_flags(sv, SV_GMAGIC); |
1141
|
|
|
|
|
|
} |
1142
|
|
|
|
|
|
|
1143
|
|
|
|
|
|
|
1144
|
|
|
|
|
|
/* |
1145
|
|
|
|
|
|
=for apidoc custom_op_name |
1146
|
|
|
|
|
|
Return the name for a given custom op. This was once used by the OP_NAME |
1147
|
|
|
|
|
|
macro, but is no longer: it has only been kept for compatibility, and |
1148
|
|
|
|
|
|
should not be used. |
1149
|
|
|
|
|
|
|
1150
|
|
|
|
|
|
=for apidoc custom_op_desc |
1151
|
|
|
|
|
|
Return the description of a given custom op. This was once used by the |
1152
|
|
|
|
|
|
OP_DESC macro, but is no longer: it has only been kept for |
1153
|
|
|
|
|
|
compatibility, and should not be used. |
1154
|
|
|
|
|
|
|
1155
|
|
|
|
|
|
=cut |
1156
|
|
|
|
|
|
*/ |
1157
|
|
|
|
|
|
|
1158
|
|
|
|
|
|
const char* |
1159
|
0
|
|
|
|
|
Perl_custom_op_name(pTHX_ const OP* o) |
1160
|
|
|
|
|
|
{ |
1161
|
|
|
|
|
|
PERL_ARGS_ASSERT_CUSTOM_OP_NAME; |
1162
|
0
|
0
|
|
|
|
return XopENTRY(Perl_custom_op_xop(aTHX_ o), xop_name); |
1163
|
|
|
|
|
|
} |
1164
|
|
|
|
|
|
|
1165
|
|
|
|
|
|
const char* |
1166
|
0
|
|
|
|
|
Perl_custom_op_desc(pTHX_ const OP* o) |
1167
|
|
|
|
|
|
{ |
1168
|
|
|
|
|
|
PERL_ARGS_ASSERT_CUSTOM_OP_DESC; |
1169
|
0
|
0
|
|
|
|
return XopENTRY(Perl_custom_op_xop(aTHX_ o), xop_desc); |
1170
|
|
|
|
|
|
} |
1171
|
|
|
|
|
|
|
1172
|
|
|
|
|
|
CV * |
1173
|
0
|
|
|
|
|
Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block) |
1174
|
|
|
|
|
|
{ |
1175
|
0
|
|
|
|
|
return Perl_newATTRSUB(aTHX_ floor, o, proto, NULL, block); |
1176
|
|
|
|
|
|
} |
1177
|
|
|
|
|
|
|
1178
|
|
|
|
|
|
UV |
1179
|
0
|
|
|
|
|
Perl_to_utf8_fold(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) |
1180
|
|
|
|
|
|
{ |
1181
|
|
|
|
|
|
PERL_ARGS_ASSERT_TO_UTF8_FOLD; |
1182
|
|
|
|
|
|
|
1183
|
0
|
|
|
|
|
return _to_utf8_fold_flags(p, ustrp, lenp, FOLD_FLAGS_FULL, NULL); |
1184
|
|
|
|
|
|
} |
1185
|
|
|
|
|
|
|
1186
|
|
|
|
|
|
UV |
1187
|
0
|
|
|
|
|
Perl_to_utf8_lower(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) |
1188
|
|
|
|
|
|
{ |
1189
|
|
|
|
|
|
PERL_ARGS_ASSERT_TO_UTF8_LOWER; |
1190
|
|
|
|
|
|
|
1191
|
0
|
|
|
|
|
return _to_utf8_lower_flags(p, ustrp, lenp, FALSE, NULL); |
1192
|
|
|
|
|
|
} |
1193
|
|
|
|
|
|
|
1194
|
|
|
|
|
|
UV |
1195
|
0
|
|
|
|
|
Perl_to_utf8_title(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) |
1196
|
|
|
|
|
|
{ |
1197
|
|
|
|
|
|
PERL_ARGS_ASSERT_TO_UTF8_TITLE; |
1198
|
|
|
|
|
|
|
1199
|
0
|
|
|
|
|
return _to_utf8_title_flags(p, ustrp, lenp, FALSE, NULL); |
1200
|
|
|
|
|
|
} |
1201
|
|
|
|
|
|
|
1202
|
|
|
|
|
|
UV |
1203
|
0
|
|
|
|
|
Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) |
1204
|
|
|
|
|
|
{ |
1205
|
|
|
|
|
|
PERL_ARGS_ASSERT_TO_UTF8_UPPER; |
1206
|
|
|
|
|
|
|
1207
|
0
|
|
|
|
|
return _to_utf8_upper_flags(p, ustrp, lenp, FALSE, NULL); |
1208
|
|
|
|
|
|
} |
1209
|
|
|
|
|
|
|
1210
|
|
|
|
|
|
SV * |
1211
|
0
|
|
|
|
|
Perl_sv_mortalcopy(pTHX_ SV *const oldstr) |
1212
|
|
|
|
|
|
{ |
1213
|
0
|
|
|
|
|
return Perl_sv_mortalcopy_flags(aTHX_ oldstr, SV_GMAGIC); |
1214
|
|
|
|
|
|
} |
1215
|
|
|
|
|
|
|
1216
|
|
|
|
|
|
UV /* Made into a function, so can be deprecated */ |
1217
|
0
|
|
|
|
|
NATIVE_TO_NEED(const UV enc, const UV ch) |
1218
|
|
|
|
|
|
{ |
1219
|
|
|
|
|
|
PERL_UNUSED_ARG(enc); |
1220
|
0
|
|
|
|
|
return ch; |
1221
|
|
|
|
|
|
} |
1222
|
|
|
|
|
|
|
1223
|
|
|
|
|
|
UV /* Made into a function, so can be deprecated */ |
1224
|
0
|
|
|
|
|
ASCII_TO_NEED(const UV enc, const UV ch) |
1225
|
|
|
|
|
|
{ |
1226
|
|
|
|
|
|
PERL_UNUSED_ARG(enc); |
1227
|
0
|
|
|
|
|
return ch; |
1228
|
|
|
|
|
|
} |
1229
|
|
|
|
|
|
|
1230
|
|
|
|
|
|
/* |
1231
|
|
|
|
|
|
=for apidoc uvuni_to_utf8_flags |
1232
|
|
|
|
|
|
|
1233
|
|
|
|
|
|
Instead you almost certainly want to use L or |
1234
|
|
|
|
|
|
L>. |
1235
|
|
|
|
|
|
|
1236
|
|
|
|
|
|
This function is a deprecated synonym for L, |
1237
|
|
|
|
|
|
which itself, while not deprecated, should be used only in isolated |
1238
|
|
|
|
|
|
circumstances. These functions were useful for code that wanted to handle |
1239
|
|
|
|
|
|
both EBCDIC and ASCII platforms with Unicode properties, but starting in Perl |
1240
|
|
|
|
|
|
v5.20, the distinctions between the platforms have mostly been made invisible |
1241
|
|
|
|
|
|
to most code, so this function is quite unlikely to be what you want. |
1242
|
|
|
|
|
|
|
1243
|
|
|
|
|
|
=cut |
1244
|
|
|
|
|
|
*/ |
1245
|
|
|
|
|
|
|
1246
|
|
|
|
|
|
U8 * |
1247
|
3276868
|
|
|
|
|
Perl_uvuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags) |
1248
|
|
|
|
|
|
{ |
1249
|
|
|
|
|
|
PERL_ARGS_ASSERT_UVUNI_TO_UTF8_FLAGS; |
1250
|
|
|
|
|
|
|
1251
|
3276868
|
|
|
|
|
return uvoffuni_to_utf8_flags(d, uv, flags); |
1252
|
|
|
|
|
|
} |
1253
|
|
|
|
|
|
|
1254
|
|
|
|
|
|
/* |
1255
|
|
|
|
|
|
=for apidoc utf8n_to_uvuni |
1256
|
|
|
|
|
|
|
1257
|
|
|
|
|
|
Instead use L, or rarely, L. |
1258
|
|
|
|
|
|
|
1259
|
|
|
|
|
|
This function was usefulfor code that wanted to handle both EBCDIC and |
1260
|
|
|
|
|
|
ASCII platforms with Unicode properties, but starting in Perl v5.20, the |
1261
|
|
|
|
|
|
distinctions between the platforms have mostly been made invisible to most |
1262
|
|
|
|
|
|
code, so this function is quite unlikely to be what you want. |
1263
|
|
|
|
|
|
C> instead. |
1264
|
|
|
|
|
|
|
1265
|
|
|
|
|
|
=cut |
1266
|
|
|
|
|
|
*/ |
1267
|
|
|
|
|
|
|
1268
|
|
|
|
|
|
UV |
1269
|
4196944
|
|
|
|
|
Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags) |
1270
|
|
|
|
|
|
{ |
1271
|
|
|
|
|
|
PERL_ARGS_ASSERT_UTF8N_TO_UVUNI; |
1272
|
|
|
|
|
|
|
1273
|
4196944
|
|
|
|
|
return NATIVE_TO_UNI(utf8n_to_uvchr(s, curlen, retlen, flags)); |
1274
|
|
|
|
|
|
} |
1275
|
|
|
|
|
|
|
1276
|
|
|
|
|
|
END_EXTERN_C |
1277
|
|
|
|
|
|
|
1278
|
|
|
|
|
|
#endif /* NO_MATHOMS */ |
1279
|
|
|
|
|
|
|
1280
|
|
|
|
|
|
/* |
1281
|
|
|
|
|
|
* Local variables: |
1282
|
|
|
|
|
|
* c-indentation-style: bsd |
1283
|
|
|
|
|
|
* c-basic-offset: 4 |
1284
|
|
|
|
|
|
* indent-tabs-mode: nil |
1285
|
|
|
|
|
|
* End: |
1286
|
|
|
|
|
|
* |
1287
|
|
|
|
|
|
* ex: set ts=8 sts=4 sw=4 et: |
1288
|
|
|
|
|
|
*/ |