line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Perl::APIReference::V5_010_000; |
2
|
1
|
|
|
1
|
|
5
|
use strict; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
40
|
|
3
|
1
|
|
|
1
|
|
4
|
use warnings; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
32
|
|
4
|
1
|
|
|
1
|
|
6
|
use parent 'Perl::APIReference'; |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
16
|
|
5
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
sub new { |
7
|
3
|
|
|
3
|
1
|
5
|
my $class = shift; |
8
|
3
|
|
|
|
|
5
|
my $VAR1; |
9
|
|
|
|
|
|
|
|
10
|
3
|
|
|
|
|
4
|
do{$VAR1 = {'hv_store_ent' => {'text' => 'Stores C in a hash. The hash key is specified as C. The C |
|
3
|
|
|
|
|
2439
|
|
11
|
|
|
|
|
|
|
parameter is the precomputed hash value; if it is zero then Perl will |
12
|
|
|
|
|
|
|
compute it. The return value is the new hash entry so created. It will be |
13
|
|
|
|
|
|
|
NULL if the operation failed or if the value did not need to be actually |
14
|
|
|
|
|
|
|
stored within the hash (as in the case of tied hashes). Otherwise the |
15
|
|
|
|
|
|
|
contents of the return value can be accessed using the C macros |
16
|
|
|
|
|
|
|
described here. Note that the caller is responsible for suitably |
17
|
|
|
|
|
|
|
incrementing the reference count of C before the call, and |
18
|
|
|
|
|
|
|
decrementing it if the function returned NULL. Effectively a successful |
19
|
|
|
|
|
|
|
hv_store_ent takes ownership of one reference to C. This is |
20
|
|
|
|
|
|
|
usually what you want; a newly created SV has a reference count of one, so |
21
|
|
|
|
|
|
|
if all your code does is create SVs then store them in a hash, hv_store |
22
|
|
|
|
|
|
|
will own the only reference to the new SV, and your code doesn\'t need to do |
23
|
|
|
|
|
|
|
anything further to tidy up. Note that hv_store_ent only reads the C; |
24
|
|
|
|
|
|
|
unlike C it does not take ownership of it, so maintaining the correct |
25
|
|
|
|
|
|
|
reference count on C is entirely the caller\'s responsibility. hv_store |
26
|
|
|
|
|
|
|
is not implemented as a call to hv_store_ent, and does not create a temporary |
27
|
|
|
|
|
|
|
SV for the key, so if your key data is not already in SV form then use |
28
|
|
|
|
|
|
|
hv_store in preference to hv_store_ent. |
29
|
|
|
|
|
|
|
|
30
|
|
|
|
|
|
|
See L for more |
31
|
|
|
|
|
|
|
information on how to use this function on tied hashes. |
32
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
HE* hv_store_ent(HV* tb, SV* key, SV* val, U32 hash)','name' => 'hv_store_ent'},'gv_stashsv' => {'text' => 'Returns a pointer to the stash for a specified package. See C. |
34
|
|
|
|
|
|
|
|
35
|
|
|
|
|
|
|
HV* gv_stashsv(SV* sv, I32 flags)','name' => 'gv_stashsv'},'newXSproto' => {'text' => 'Used by C to hook up XSUBs as Perl subs. Adds Perl prototypes to |
36
|
|
|
|
|
|
|
the subs.','name' => 'newXSproto'},'strGE' => {'text' => 'Test two strings to see if the first, C, is greater than or equal to |
37
|
|
|
|
|
|
|
the second, C. Returns true or false. |
38
|
|
|
|
|
|
|
|
39
|
|
|
|
|
|
|
bool strGE(char* s1, char* s2)','name' => 'strGE'},'form' => {'text' => 'Takes a sprintf-style format pattern and conventional |
40
|
|
|
|
|
|
|
(non-SV) arguments and returns the formatted string. |
41
|
|
|
|
|
|
|
|
42
|
|
|
|
|
|
|
(char *) Perl_form(pTHX_ const char* pat, ...) |
43
|
|
|
|
|
|
|
|
44
|
|
|
|
|
|
|
can be used any place a string (char *) is required: |
45
|
|
|
|
|
|
|
|
46
|
|
|
|
|
|
|
char * s = Perl_form("%d.%d",major,minor); |
47
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
Uses a single private buffer so if you want to format several strings you |
49
|
|
|
|
|
|
|
must explicitly copy the earlier strings away (and free the copies when you |
50
|
|
|
|
|
|
|
are done). |
51
|
|
|
|
|
|
|
|
52
|
|
|
|
|
|
|
char* form(const char* pat, ...)','name' => 'form'},'SvPV' => {'text' => 'Returns a pointer to the string in the SV, or a stringified form of |
53
|
|
|
|
|
|
|
the SV if the SV does not contain a string. The SV may cache the |
54
|
|
|
|
|
|
|
stringified version becoming C. Handles \'get\' magic. See also |
55
|
|
|
|
|
|
|
C for a version which guarantees to evaluate sv only once. |
56
|
|
|
|
|
|
|
|
57
|
|
|
|
|
|
|
char* SvPV(SV* sv, STRLEN len)','name' => 'SvPV'},'is_utf8_string' => {'text' => 'Returns true if first C bytes of the given string form a valid |
58
|
|
|
|
|
|
|
UTF-8 string, false otherwise. Note that \'a valid UTF-8 string\' does |
59
|
|
|
|
|
|
|
not mean \'a string that contains code points above 0x7F encoded in UTF-8\' |
60
|
|
|
|
|
|
|
because a valid ASCII string is a valid UTF-8 string. |
61
|
|
|
|
|
|
|
|
62
|
|
|
|
|
|
|
See also is_utf8_string_loclen() and is_utf8_string_loc(). |
63
|
|
|
|
|
|
|
|
64
|
|
|
|
|
|
|
bool is_utf8_string(const U8 *s, STRLEN len)','name' => 'is_utf8_string'},'sv_insert' => {'text' => 'Inserts a string at the specified offset/length within the SV. Similar to |
65
|
|
|
|
|
|
|
the Perl substr() function. |
66
|
|
|
|
|
|
|
|
67
|
|
|
|
|
|
|
void sv_insert(SV* bigsv, STRLEN offset, STRLEN len, const char* little, STRLEN littlelen)','name' => 'sv_insert'},'SvPOK' => {'text' => 'Returns a U32 value indicating whether the SV contains a character |
68
|
|
|
|
|
|
|
string. |
69
|
|
|
|
|
|
|
|
70
|
|
|
|
|
|
|
U32 SvPOK(SV* sv)','name' => 'SvPOK'},'sv_vsetpvf_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
71
|
|
|
|
|
|
|
|
72
|
|
|
|
|
|
|
Usually used via its frontend C. |
73
|
|
|
|
|
|
|
|
74
|
|
|
|
|
|
|
void sv_vsetpvf_mg(SV* sv, const char* pat, va_list* args)','name' => 'sv_vsetpvf_mg'},'sv_destroyable' => {'text' => 'Dummy routine which reports that object can be destroyed when there is no |
75
|
|
|
|
|
|
|
sharing module present. It ignores its single SV argument, and returns |
76
|
|
|
|
|
|
|
\'true\'. Exists to avoid test for a NULL function pointer and because it |
77
|
|
|
|
|
|
|
could potentially warn under some level of strict-ness. |
78
|
|
|
|
|
|
|
|
79
|
|
|
|
|
|
|
bool sv_destroyable(SV *sv)','name' => 'sv_destroyable'},'SvPVutf8' => {'text' => 'Like C, but converts sv to utf8 first if necessary. |
80
|
|
|
|
|
|
|
|
81
|
|
|
|
|
|
|
char* SvPVutf8(SV* sv, STRLEN len)','name' => 'SvPVutf8'},'sortsv_flags' => {'text' => 'Sort an array, with various options. |
82
|
|
|
|
|
|
|
|
83
|
|
|
|
|
|
|
void sortsv_flags(SV** array, size_t num_elts, SVCOMPARE_t cmp, U32 flags)','name' => 'sortsv_flags'},'XS' => {'text' => 'Macro to declare an XSUB and its C parameter list. This is handled by |
84
|
|
|
|
|
|
|
C.','name' => 'XS'},'scan_oct' => {'text' => 'For backwards compatibility. Use C instead. |
85
|
|
|
|
|
|
|
|
86
|
|
|
|
|
|
|
NV scan_oct(const char* start, STRLEN len, STRLEN* retlen)','name' => 'scan_oct'},'sv_setpvn' => {'text' => 'Copies a string into an SV. The C parameter indicates the number of |
87
|
|
|
|
|
|
|
bytes to be copied. If the C argument is NULL the SV will become |
88
|
|
|
|
|
|
|
undefined. Does not handle \'set\' magic. See C. |
89
|
|
|
|
|
|
|
|
90
|
|
|
|
|
|
|
void sv_setpvn(SV* sv, const char* ptr, STRLEN len)','name' => 'sv_setpvn'},'mg_magical' => {'text' => 'Turns on the magical status of an SV. See C. |
91
|
|
|
|
|
|
|
|
92
|
|
|
|
|
|
|
void mg_magical(SV* sv)','name' => 'mg_magical'},'newSVrv' => {'text' => 'Creates a new SV for the RV, C, to point to. If C is not an RV then |
93
|
|
|
|
|
|
|
it will be upgraded to one. If C is non-null then the new SV will |
94
|
|
|
|
|
|
|
be blessed in the specified package. The new SV is returned and its |
95
|
|
|
|
|
|
|
reference count is 1. |
96
|
|
|
|
|
|
|
|
97
|
|
|
|
|
|
|
SV* newSVrv(SV* rv, const char* classname)','name' => 'newSVrv'},'strnEQ' => {'text' => 'Test two strings to see if they are equal. The C parameter indicates |
98
|
|
|
|
|
|
|
the number of bytes to compare. Returns true or false. (A wrapper for |
99
|
|
|
|
|
|
|
C). |
100
|
|
|
|
|
|
|
|
101
|
|
|
|
|
|
|
bool strnEQ(char* s1, char* s2, STRLEN len)','name' => 'strnEQ'},'find_runcv' => {'text' => 'Locate the CV corresponding to the currently executing sub or eval. |
102
|
|
|
|
|
|
|
If db_seqp is non_null, skip CVs that are in the DB package and populate |
103
|
|
|
|
|
|
|
*db_seqp with the cop sequence number at the point that the DB:: code was |
104
|
|
|
|
|
|
|
entered. (allows debuggers to eval in the scope of the breakpoint rather |
105
|
|
|
|
|
|
|
than in the scope of the debugger itself). |
106
|
|
|
|
|
|
|
|
107
|
|
|
|
|
|
|
CV* find_runcv(U32 *db_seqp)','name' => 'find_runcv'},'PoisonWith' => {'text' => 'Fill up memory with a byte pattern (a byte repeated over and over |
108
|
|
|
|
|
|
|
again) that hopefully catches attempts to access uninitialized memory. |
109
|
|
|
|
|
|
|
|
110
|
|
|
|
|
|
|
void PoisonWith(void* dest, int nitems, type, U8 byte)','name' => 'PoisonWith'},'utf8n_to_uvuni' => {'text' => 'Bottom level UTF-8 decode routine. |
111
|
|
|
|
|
|
|
Returns the Unicode code point value of the first character in the string C |
112
|
|
|
|
|
|
|
which is assumed to be in UTF-8 encoding and no longer than C; |
113
|
|
|
|
|
|
|
C will be set to the length, in bytes, of that character. |
114
|
|
|
|
|
|
|
|
115
|
|
|
|
|
|
|
If C does not point to a well-formed UTF-8 character, the behaviour |
116
|
|
|
|
|
|
|
is dependent on the value of C: if it contains UTF8_CHECK_ONLY, |
117
|
|
|
|
|
|
|
it is assumed that the caller will raise a warning, and this function |
118
|
|
|
|
|
|
|
will silently just set C to C<-1> and return zero. If the |
119
|
|
|
|
|
|
|
C does not contain UTF8_CHECK_ONLY, warnings about |
120
|
|
|
|
|
|
|
malformations will be given, C will be set to the expected |
121
|
|
|
|
|
|
|
length of the UTF-8 character in bytes, and zero will be returned. |
122
|
|
|
|
|
|
|
|
123
|
|
|
|
|
|
|
The C can also contain various flags to allow deviations from |
124
|
|
|
|
|
|
|
the strict UTF-8 encoding (see F). |
125
|
|
|
|
|
|
|
|
126
|
|
|
|
|
|
|
Most code should use utf8_to_uvchr() rather than call this directly. |
127
|
|
|
|
|
|
|
|
128
|
|
|
|
|
|
|
UV utf8n_to_uvuni(const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)','name' => 'utf8n_to_uvuni'},'av_create_and_unshift_one' => {'text' => 'Unshifts an SV onto the beginning of the array, creating the array if |
129
|
|
|
|
|
|
|
necessary. |
130
|
|
|
|
|
|
|
A small internal helper function to remove a commonly duplicated idiom. |
131
|
|
|
|
|
|
|
|
132
|
|
|
|
|
|
|
NOTE: this function is experimental and may change or be |
133
|
|
|
|
|
|
|
removed without notice. |
134
|
|
|
|
|
|
|
|
135
|
|
|
|
|
|
|
SV** av_create_and_unshift_one(AV **const avp, SV *const val)','name' => 'av_create_and_unshift_one'},'SvNIOK_off' => {'text' => 'Unsets the NV/IV status of an SV. |
136
|
|
|
|
|
|
|
|
137
|
|
|
|
|
|
|
void SvNIOK_off(SV* sv)','name' => 'SvNIOK_off'},'sv_magic' => {'text' => 'Adds magic to an SV. First upgrades C to type C if necessary, |
138
|
|
|
|
|
|
|
then adds a new magic item of type C to the head of the magic list. |
139
|
|
|
|
|
|
|
|
140
|
|
|
|
|
|
|
See C (which C now calls) for a description of the |
141
|
|
|
|
|
|
|
handling of the C and C arguments. |
142
|
|
|
|
|
|
|
|
143
|
|
|
|
|
|
|
You need to use C to add magic to SvREADONLY SVs and also |
144
|
|
|
|
|
|
|
to add more than one instance of the same \'how\'. |
145
|
|
|
|
|
|
|
|
146
|
|
|
|
|
|
|
void sv_magic(SV* sv, SV* obj, int how, const char* name, I32 namlen)','name' => 'sv_magic'},'dMARK' => {'text' => 'Declare a stack marker variable, C, for the XSUB. See C and |
147
|
|
|
|
|
|
|
C. |
148
|
|
|
|
|
|
|
|
149
|
|
|
|
|
|
|
dMARK;','name' => 'dMARK'},'sv_utf8_upgrade_flags' => {'text' => 'Converts the PV of an SV to its UTF-8-encoded form. |
150
|
|
|
|
|
|
|
Forces the SV to string form if it is not already. |
151
|
|
|
|
|
|
|
Always sets the SvUTF8 flag to avoid future validity checks even |
152
|
|
|
|
|
|
|
if all the bytes have hibit clear. If C has C bit set, |
153
|
|
|
|
|
|
|
will C on C if appropriate, else not. C and |
154
|
|
|
|
|
|
|
C are implemented in terms of this function. |
155
|
|
|
|
|
|
|
|
156
|
|
|
|
|
|
|
This is not as a general purpose byte encoding to Unicode interface: |
157
|
|
|
|
|
|
|
use the Encode extension for that. |
158
|
|
|
|
|
|
|
|
159
|
|
|
|
|
|
|
STRLEN sv_utf8_upgrade_flags(SV *sv, I32 flags)','name' => 'sv_utf8_upgrade_flags'},'ibcmp_utf8' => {'text' => 'Return true if the strings s1 and s2 differ case-insensitively, false |
160
|
|
|
|
|
|
|
if not (if they are equal case-insensitively). If u1 is true, the |
161
|
|
|
|
|
|
|
string s1 is assumed to be in UTF-8-encoded Unicode. If u2 is true, |
162
|
|
|
|
|
|
|
the string s2 is assumed to be in UTF-8-encoded Unicode. If u1 or u2 |
163
|
|
|
|
|
|
|
are false, the respective string is assumed to be in native 8-bit |
164
|
|
|
|
|
|
|
encoding. |
165
|
|
|
|
|
|
|
|
166
|
|
|
|
|
|
|
If the pe1 and pe2 are non-NULL, the scanning pointers will be copied |
167
|
|
|
|
|
|
|
in there (they will point at the beginning of the I character). |
168
|
|
|
|
|
|
|
If the pointers behind pe1 or pe2 are non-NULL, they are the end |
169
|
|
|
|
|
|
|
pointers beyond which scanning will not continue under any |
170
|
|
|
|
|
|
|
circumstances. If the byte lengths l1 and l2 are non-zero, s1+l1 and |
171
|
|
|
|
|
|
|
s2+l2 will be used as goal end pointers that will also stop the scan, |
172
|
|
|
|
|
|
|
and which qualify towards defining a successful match: all the scans |
173
|
|
|
|
|
|
|
that define an explicit length must reach their goal pointers for |
174
|
|
|
|
|
|
|
a match to succeed). |
175
|
|
|
|
|
|
|
|
176
|
|
|
|
|
|
|
For case-insensitiveness, the "casefolding" of Unicode is used |
177
|
|
|
|
|
|
|
instead of upper/lowercasing both the characters, see |
178
|
|
|
|
|
|
|
http://www.unicode.org/unicode/reports/tr21/ (Case Mappings). |
179
|
|
|
|
|
|
|
|
180
|
|
|
|
|
|
|
I32 ibcmp_utf8(const char* a, char **pe1, UV l1, bool u1, const char* b, char **pe2, UV l2, bool u2)','name' => 'ibcmp_utf8'},'SvREFCNT_inc_void' => {'text' => 'Same as SvREFCNT_inc, but can only be used if you don\'t need the |
181
|
|
|
|
|
|
|
return value. The macro doesn\'t need to return a meaningful value. |
182
|
|
|
|
|
|
|
|
183
|
|
|
|
|
|
|
void SvREFCNT_inc_void(SV* sv)','name' => 'SvREFCNT_inc_void'},'mXPUSHp' => {'text' => 'Push a string onto the stack, extending the stack if necessary. The C |
184
|
|
|
|
|
|
|
indicates the length of the string. Handles \'set\' magic. Does not use |
185
|
|
|
|
|
|
|
C. See also C, C and C. |
186
|
|
|
|
|
|
|
|
187
|
|
|
|
|
|
|
void mXPUSHp(char* str, STRLEN len)','name' => 'mXPUSHp'},'CvSTASH' => {'text' => 'Returns the stash of the CV. |
188
|
|
|
|
|
|
|
|
189
|
|
|
|
|
|
|
HV* CvSTASH(CV* cv)','name' => 'CvSTASH'},'gv_const_sv' => {'text' => 'If C is a typeglob whose subroutine entry is a constant sub eligible for |
190
|
|
|
|
|
|
|
inlining, or C is a placeholder reference that would be promoted to such |
191
|
|
|
|
|
|
|
a typeglob, then returns the value returned by the sub. Otherwise, returns |
192
|
|
|
|
|
|
|
NULL. |
193
|
|
|
|
|
|
|
|
194
|
|
|
|
|
|
|
SV* gv_const_sv(GV* gv)','name' => 'gv_const_sv'},'sv_replace' => {'text' => 'Make the first argument a copy of the second, then delete the original. |
195
|
|
|
|
|
|
|
The target SV physically takes over ownership of the body of the source SV |
196
|
|
|
|
|
|
|
and inherits its flags; however, the target keeps any magic it owns, |
197
|
|
|
|
|
|
|
and any magic in the source is discarded. |
198
|
|
|
|
|
|
|
Note that this is a rather specialist SV copying operation; most of the |
199
|
|
|
|
|
|
|
time you\'ll want to use C or one of its many macro front-ends. |
200
|
|
|
|
|
|
|
|
201
|
|
|
|
|
|
|
void sv_replace(SV* sv, SV* nsv)','name' => 'sv_replace'},'utf8n_to_uvchr' => {'text' => 'flags |
202
|
|
|
|
|
|
|
|
203
|
|
|
|
|
|
|
Returns the native character value of the first character in the string |
204
|
|
|
|
|
|
|
C |
205
|
|
|
|
|
|
|
which is assumed to be in UTF-8 encoding; C will be set to the |
206
|
|
|
|
|
|
|
length, in bytes, of that character. |
207
|
|
|
|
|
|
|
|
208
|
|
|
|
|
|
|
Allows length and flags to be passed to low level routine. |
209
|
|
|
|
|
|
|
|
210
|
|
|
|
|
|
|
UV utf8n_to_uvchr(const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)','name' => 'utf8n_to_uvchr'},'G_ARRAY' => {'text' => 'Used to indicate list context. See C, C and |
211
|
|
|
|
|
|
|
L.','name' => 'G_ARRAY'},'XS_VERSION_BOOTCHECK' => {'text' => 'Macro to verify that a PM module\'s $VERSION variable matches the XS |
212
|
|
|
|
|
|
|
module\'s C variable. This is usually handled automatically by |
213
|
|
|
|
|
|
|
C. See L. |
214
|
|
|
|
|
|
|
|
215
|
|
|
|
|
|
|
XS_VERSION_BOOTCHECK;','name' => 'XS_VERSION_BOOTCHECK'},'SvROK' => {'text' => 'Tests if the SV is an RV. |
216
|
|
|
|
|
|
|
|
217
|
|
|
|
|
|
|
U32 SvROK(SV* sv)','name' => 'SvROK'},'mXPUSHn' => {'text' => 'Push a double onto the stack, extending the stack if necessary. Handles |
218
|
|
|
|
|
|
|
\'set\' magic. Does not use C. See also C, C and |
219
|
|
|
|
|
|
|
C. |
220
|
|
|
|
|
|
|
|
221
|
|
|
|
|
|
|
void mXPUSHn(NV nv)','name' => 'mXPUSHn'},'sv_unref' => {'text' => 'Unsets the RV status of the SV, and decrements the reference count of |
222
|
|
|
|
|
|
|
whatever was being referenced by the RV. This can almost be thought of |
223
|
|
|
|
|
|
|
as a reversal of C. This is C with the C |
224
|
|
|
|
|
|
|
being zero. See C. |
225
|
|
|
|
|
|
|
|
226
|
|
|
|
|
|
|
void sv_unref(SV* sv)','name' => 'sv_unref'},'SvSETMAGIC' => {'text' => 'Invokes C on an SV if it has \'set\' magic. This macro evaluates its |
227
|
|
|
|
|
|
|
argument more than once. |
228
|
|
|
|
|
|
|
|
229
|
|
|
|
|
|
|
void SvSETMAGIC(SV* sv)','name' => 'SvSETMAGIC'},'G_EVAL' => {'text' => 'Used to force a Perl C wrapper around a callback. See |
230
|
|
|
|
|
|
|
L.','name' => 'G_EVAL'},'sv_catsv_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
231
|
|
|
|
|
|
|
|
232
|
|
|
|
|
|
|
void sv_catsv_mg(SV *dstr, SV *sstr)','name' => 'sv_catsv_mg'},'call_argv' => {'text' => 'Performs a callback to the specified Perl sub. See L. |
233
|
|
|
|
|
|
|
|
234
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
235
|
|
|
|
|
|
|
|
236
|
|
|
|
|
|
|
I32 call_argv(const char* sub_name, I32 flags, char** argv)','name' => 'call_argv'},'SvPV_nolen' => {'text' => 'Returns a pointer to the string in the SV, or a stringified form of |
237
|
|
|
|
|
|
|
the SV if the SV does not contain a string. The SV may cache the |
238
|
|
|
|
|
|
|
stringified form becoming C. Handles \'get\' magic. |
239
|
|
|
|
|
|
|
|
240
|
|
|
|
|
|
|
char* SvPV_nolen(SV* sv)','name' => 'SvPV_nolen'},'perl_clone' => {'text' => 'Create and return a new interpreter by cloning the current one. |
241
|
|
|
|
|
|
|
|
242
|
|
|
|
|
|
|
perl_clone takes these flags as parameters: |
243
|
|
|
|
|
|
|
|
244
|
|
|
|
|
|
|
CLONEf_COPY_STACKS - is used to, well, copy the stacks also, |
245
|
|
|
|
|
|
|
without it we only clone the data and zero the stacks, |
246
|
|
|
|
|
|
|
with it we copy the stacks and the new perl interpreter is |
247
|
|
|
|
|
|
|
ready to run at the exact same point as the previous one. |
248
|
|
|
|
|
|
|
The pseudo-fork code uses COPY_STACKS while the |
249
|
|
|
|
|
|
|
threads->create doesn\'t. |
250
|
|
|
|
|
|
|
|
251
|
|
|
|
|
|
|
CLONEf_KEEP_PTR_TABLE |
252
|
|
|
|
|
|
|
perl_clone keeps a ptr_table with the pointer of the old |
253
|
|
|
|
|
|
|
variable as a key and the new variable as a value, |
254
|
|
|
|
|
|
|
this allows it to check if something has been cloned and not |
255
|
|
|
|
|
|
|
clone it again but rather just use the value and increase the |
256
|
|
|
|
|
|
|
refcount. If KEEP_PTR_TABLE is not set then perl_clone will kill |
257
|
|
|
|
|
|
|
the ptr_table using the function |
258
|
|
|
|
|
|
|
C, |
259
|
|
|
|
|
|
|
reason to keep it around is if you want to dup some of your own |
260
|
|
|
|
|
|
|
variable who are outside the graph perl scans, example of this |
261
|
|
|
|
|
|
|
code is in threads.xs create |
262
|
|
|
|
|
|
|
|
263
|
|
|
|
|
|
|
CLONEf_CLONE_HOST |
264
|
|
|
|
|
|
|
This is a win32 thing, it is ignored on unix, it tells perls |
265
|
|
|
|
|
|
|
win32host code (which is c++) to clone itself, this is needed on |
266
|
|
|
|
|
|
|
win32 if you want to run two threads at the same time, |
267
|
|
|
|
|
|
|
if you just want to do some stuff in a separate perl interpreter |
268
|
|
|
|
|
|
|
and then throw it away and return to the original one, |
269
|
|
|
|
|
|
|
you don\'t need to do anything. |
270
|
|
|
|
|
|
|
|
271
|
|
|
|
|
|
|
PerlInterpreter* perl_clone(PerlInterpreter* interp, UV flags)','name' => 'perl_clone'},'sv_setnv' => {'text' => 'Copies a double into the given SV, upgrading first if necessary. |
272
|
|
|
|
|
|
|
Does not handle \'set\' magic. See also C. |
273
|
|
|
|
|
|
|
|
274
|
|
|
|
|
|
|
void sv_setnv(SV* sv, NV num)','name' => 'sv_setnv'},'sv_2nv' => {'text' => 'Return the num value of an SV, doing any necessary string or integer |
275
|
|
|
|
|
|
|
conversion, magic etc. Normally used via the C and C |
276
|
|
|
|
|
|
|
macros. |
277
|
|
|
|
|
|
|
|
278
|
|
|
|
|
|
|
NV sv_2nv(SV* sv)','name' => 'sv_2nv'},'SvREFCNT_inc_simple_NN' => {'text' => 'Same as SvREFCNT_inc_simple, but can only be used if you know I |
279
|
|
|
|
|
|
|
is not NULL. Since we don\'t have to check the NULLness, it\'s faster |
280
|
|
|
|
|
|
|
and smaller. |
281
|
|
|
|
|
|
|
|
282
|
|
|
|
|
|
|
SV* SvREFCNT_inc_simple_NN(SV* sv)','name' => 'SvREFCNT_inc_simple_NN'},'SvSetSV' => {'text' => 'Calls C if dsv is not the same as ssv. May evaluate arguments |
283
|
|
|
|
|
|
|
more than once. |
284
|
|
|
|
|
|
|
|
285
|
|
|
|
|
|
|
void SvSetSV(SV* dsb, SV* ssv)','name' => 'SvSetSV'},'hv_fetchs' => {'text' => 'Like C, but takes a literal string instead of a string/length pair. |
286
|
|
|
|
|
|
|
|
287
|
|
|
|
|
|
|
SV** hv_fetchs(HV* tb, const char* key, I32 lval)','name' => 'hv_fetchs'},'newHV' => {'text' => 'Creates a new HV. The reference count is set to 1. |
288
|
|
|
|
|
|
|
|
289
|
|
|
|
|
|
|
HV* newHV()','name' => 'newHV'},'strnNE' => {'text' => 'Test two strings to see if they are different. The C parameter |
290
|
|
|
|
|
|
|
indicates the number of bytes to compare. Returns true or false. (A |
291
|
|
|
|
|
|
|
wrapper for C). |
292
|
|
|
|
|
|
|
|
293
|
|
|
|
|
|
|
bool strnNE(char* s1, char* s2, STRLEN len)','name' => 'strnNE'},'strNE' => {'text' => 'Test two strings to see if they are different. Returns true or |
294
|
|
|
|
|
|
|
false. |
295
|
|
|
|
|
|
|
|
296
|
|
|
|
|
|
|
bool strNE(char* s1, char* s2)','name' => 'strNE'},'sv_pvutf8n_force' => {'text' => 'The backend for the C macro. Always use the macro instead. |
297
|
|
|
|
|
|
|
|
298
|
|
|
|
|
|
|
char* sv_pvutf8n_force(SV* sv, STRLEN* lp)','name' => 'sv_pvutf8n_force'},'savepv' => {'text' => 'Perl\'s version of C. Returns a pointer to a newly allocated |
299
|
|
|
|
|
|
|
string which is a duplicate of C. The size of the string is |
300
|
|
|
|
|
|
|
determined by C. The memory allocated for the new string can |
301
|
|
|
|
|
|
|
be freed with the C function. |
302
|
|
|
|
|
|
|
|
303
|
|
|
|
|
|
|
char* savepv(const char* pv)','name' => 'savepv'},'SvNV_set' => {'text' => 'Set the value of the NV pointer in sv to val. See C. |
304
|
|
|
|
|
|
|
|
305
|
|
|
|
|
|
|
void SvNV_set(SV* sv, NV val)','name' => 'SvNV_set'},'bytes_from_utf8' => {'text' => 'Converts a string C of length C from UTF-8 into byte encoding. |
306
|
|
|
|
|
|
|
Unlike C but like C, returns a pointer to |
307
|
|
|
|
|
|
|
the newly-created string, and updates C to contain the new |
308
|
|
|
|
|
|
|
length. Returns the original string if no conversion occurs, C |
309
|
|
|
|
|
|
|
is unchanged. Do nothing if C points to 0. Sets C to |
310
|
|
|
|
|
|
|
0 if C is converted or contains all 7bit characters. |
311
|
|
|
|
|
|
|
|
312
|
|
|
|
|
|
|
NOTE: this function is experimental and may change or be |
313
|
|
|
|
|
|
|
removed without notice. |
314
|
|
|
|
|
|
|
|
315
|
|
|
|
|
|
|
U8* bytes_from_utf8(const U8 *s, STRLEN *len, bool *is_utf8)','name' => 'bytes_from_utf8'},'newAV' => {'text' => 'Creates a new AV. The reference count is set to 1. |
316
|
|
|
|
|
|
|
|
317
|
|
|
|
|
|
|
AV* newAV()','name' => 'newAV'},'HvNAME' => {'text' => 'Returns the package name of a stash, or NULL if C isn\'t a stash. |
318
|
|
|
|
|
|
|
See C, C. |
319
|
|
|
|
|
|
|
|
320
|
|
|
|
|
|
|
char* HvNAME(HV* stash)','name' => 'HvNAME'},'sv_recode_to_utf8' => {'text' => 'The encoding is assumed to be an Encode object, on entry the PV |
321
|
|
|
|
|
|
|
of the sv is assumed to be octets in that encoding, and the sv |
322
|
|
|
|
|
|
|
will be converted into Unicode (and UTF-8). |
323
|
|
|
|
|
|
|
|
324
|
|
|
|
|
|
|
If the sv already is UTF-8 (or if it is not POK), or if the encoding |
325
|
|
|
|
|
|
|
is not a reference, nothing is done to the sv. If the encoding is not |
326
|
|
|
|
|
|
|
an C Encoding object, bad things will happen. |
327
|
|
|
|
|
|
|
(See F and L). |
328
|
|
|
|
|
|
|
|
329
|
|
|
|
|
|
|
The PV of the sv is returned. |
330
|
|
|
|
|
|
|
|
331
|
|
|
|
|
|
|
char* sv_recode_to_utf8(SV* sv, SV *encoding)','name' => 'sv_recode_to_utf8'},'av_make' => {'text' => 'Creates a new AV and populates it with a list of SVs. The SVs are copied |
332
|
|
|
|
|
|
|
into the array, so they may be freed after the call to av_make. The new AV |
333
|
|
|
|
|
|
|
will have a reference count of 1. |
334
|
|
|
|
|
|
|
|
335
|
|
|
|
|
|
|
AV* av_make(I32 size, SV** svp)','name' => 'av_make'},'SvUV' => {'text' => 'Coerces the given SV to an unsigned integer and returns it. See C |
336
|
|
|
|
|
|
|
for a version which guarantees to evaluate sv only once. |
337
|
|
|
|
|
|
|
|
338
|
|
|
|
|
|
|
UV SvUV(SV* sv)','name' => 'SvUV'},'perl_run' => {'text' => 'Tells a Perl interpreter to run. See L. |
339
|
|
|
|
|
|
|
|
340
|
|
|
|
|
|
|
int perl_run(PerlInterpreter* interp)','name' => 'perl_run'},'vstringify' => {'text' => 'In order to maintain maximum compatibility with earlier versions |
341
|
|
|
|
|
|
|
of Perl, this function will return either the floating point |
342
|
|
|
|
|
|
|
notation or the multiple dotted notation, depending on whether |
343
|
|
|
|
|
|
|
the original version contained 1 or more dots, respectively |
344
|
|
|
|
|
|
|
|
345
|
|
|
|
|
|
|
SV* vstringify(SV *vs)','name' => 'vstringify'},'sv_catsv_flags' => {'text' => 'Concatenates the string from SV C onto the end of the string in |
346
|
|
|
|
|
|
|
SV C. Modifies C but not C. If C has C |
347
|
|
|
|
|
|
|
bit set, will C on the SVs if appropriate, else not. C |
348
|
|
|
|
|
|
|
and C are implemented in terms of this function. |
349
|
|
|
|
|
|
|
|
350
|
|
|
|
|
|
|
void sv_catsv_flags(SV* dsv, SV* ssv, I32 flags)','name' => 'sv_catsv_flags'},'SvPVutf8_nolen' => {'text' => 'Like C, but converts sv to utf8 first if necessary. |
351
|
|
|
|
|
|
|
|
352
|
|
|
|
|
|
|
char* SvPVutf8_nolen(SV* sv)','name' => 'SvPVutf8_nolen'},'SvRXOK' => {'text' => 'Returns a boolean indicating whether the SV contains qr magic |
353
|
|
|
|
|
|
|
(PERL_MAGIC_qr). |
354
|
|
|
|
|
|
|
|
355
|
|
|
|
|
|
|
If you want to do something with the REGEXP* later use SvRX instead |
356
|
|
|
|
|
|
|
and check for NULL. |
357
|
|
|
|
|
|
|
|
358
|
|
|
|
|
|
|
bool SvRXOK(SV* sv)','name' => 'SvRXOK'},'sv_setpviv' => {'text' => 'Copies an integer into the given SV, also updating its string value. |
359
|
|
|
|
|
|
|
Does not handle \'set\' magic. See C. |
360
|
|
|
|
|
|
|
|
361
|
|
|
|
|
|
|
void sv_setpviv(SV* sv, IV num)','name' => 'sv_setpviv'},'sv_true' => {'text' => 'Returns true if the SV has a true value by Perl\'s rules. |
362
|
|
|
|
|
|
|
Use the C macro instead, which may call C or may |
363
|
|
|
|
|
|
|
instead use an in-line version. |
364
|
|
|
|
|
|
|
|
365
|
|
|
|
|
|
|
I32 sv_true(SV *sv)','name' => 'sv_true'},'sv_derived_from' => {'text' => 'Returns a boolean indicating whether the SV is derived from the specified class |
366
|
|
|
|
|
|
|
I. To check derivation at the Perl level, call C as a |
367
|
|
|
|
|
|
|
normal Perl method. |
368
|
|
|
|
|
|
|
|
369
|
|
|
|
|
|
|
bool sv_derived_from(SV* sv, const char* name)','name' => 'sv_derived_from'},'SvIOK_on' => {'text' => 'Tells an SV that it is an integer. |
370
|
|
|
|
|
|
|
|
371
|
|
|
|
|
|
|
void SvIOK_on(SV* sv)','name' => 'SvIOK_on'},'sv_cmp_locale' => {'text' => 'Compares the strings in two SVs in a locale-aware manner. Is UTF-8 and |
372
|
|
|
|
|
|
|
\'use bytes\' aware, handles get magic, and will coerce its args to strings |
373
|
|
|
|
|
|
|
if necessary. See also C. See also C. |
374
|
|
|
|
|
|
|
|
375
|
|
|
|
|
|
|
I32 sv_cmp_locale(SV* sv1, SV* sv2)','name' => 'sv_cmp_locale'},'sv_catpvs' => {'text' => 'Like C, but takes a literal string instead of a string/length pair. |
376
|
|
|
|
|
|
|
|
377
|
|
|
|
|
|
|
void sv_catpvs(SV* sv, const char* s)','name' => 'sv_catpvs'},'hv_exists' => {'text' => 'Returns a boolean indicating whether the specified hash key exists. The |
378
|
|
|
|
|
|
|
C is the length of the key. |
379
|
|
|
|
|
|
|
|
380
|
|
|
|
|
|
|
bool hv_exists(HV* tb, const char* key, I32 klen)','name' => 'hv_exists'},'dSP' => {'text' => 'Declares a local copy of perl\'s stack pointer for the XSUB, available via |
381
|
|
|
|
|
|
|
the C macro. See C. |
382
|
|
|
|
|
|
|
|
383
|
|
|
|
|
|
|
dSP;','name' => 'dSP'},'Nullsv' => {'text' => 'Null SV pointer.','name' => 'Nullsv'},'mg_length' => {'text' => 'Report on the SV\'s length. See C. |
384
|
|
|
|
|
|
|
|
385
|
|
|
|
|
|
|
U32 mg_length(SV* sv)','name' => 'mg_length'},'SvPVX' => {'text' => 'Returns a pointer to the physical string in the SV. The SV must contain a |
386
|
|
|
|
|
|
|
string. |
387
|
|
|
|
|
|
|
|
388
|
|
|
|
|
|
|
char* SvPVX(SV* sv)','name' => 'SvPVX'},'XPUSHi' => {'text' => 'Push an integer onto the stack, extending the stack if necessary. Handles |
389
|
|
|
|
|
|
|
\'set\' magic. Uses C, so C or C should be called to |
390
|
|
|
|
|
|
|
declare it. Do not call multiple C-oriented macros to return lists |
391
|
|
|
|
|
|
|
from XSUB\'s - see C instead. See also C and C. |
392
|
|
|
|
|
|
|
|
393
|
|
|
|
|
|
|
void XPUSHi(IV iv)','name' => 'XPUSHi'},'HEf_SVKEY' => {'text' => 'This flag, used in the length slot of hash entries and magic structures, |
394
|
|
|
|
|
|
|
specifies the structure contains an C pointer where a C pointer |
395
|
|
|
|
|
|
|
is to be expected. (For information only--not to be used).','name' => 'HEf_SVKEY'},'utf8_length' => {'text' => 'Return the length of the UTF-8 char encoded string C in characters. |
396
|
|
|
|
|
|
|
Stops at C (inclusive). If C s> or if the scan would end |
397
|
|
|
|
|
|
|
up past C, croaks. |
398
|
|
|
|
|
|
|
|
399
|
|
|
|
|
|
|
STRLEN utf8_length(const U8* s, const U8 *e)','name' => 'utf8_length'},'SvTAINTED_on' => {'text' => 'Marks an SV as tainted if tainting is enabled. |
400
|
|
|
|
|
|
|
|
401
|
|
|
|
|
|
|
void SvTAINTED_on(SV* sv)','name' => 'SvTAINTED_on'},'SvIOK_only_UV' => {'text' => 'Tells and SV that it is an unsigned integer and disables all other OK bits. |
402
|
|
|
|
|
|
|
|
403
|
|
|
|
|
|
|
void SvIOK_only_UV(SV* sv)','name' => 'SvIOK_only_UV'},'sv_nolocking' => {'text' => 'Dummy routine which "locks" an SV when there is no locking module present. |
404
|
|
|
|
|
|
|
Exists to avoid test for a NULL function pointer and because it could |
405
|
|
|
|
|
|
|
potentially warn under some level of strict-ness. |
406
|
|
|
|
|
|
|
|
407
|
|
|
|
|
|
|
"Superseded" by sv_nosharing(). |
408
|
|
|
|
|
|
|
|
409
|
|
|
|
|
|
|
void sv_nolocking(SV *sv)','name' => 'sv_nolocking'},'sv_vcatpvfn' => {'text' => 'Processes its arguments like C and appends the formatted output |
410
|
|
|
|
|
|
|
to an SV. Uses an array of SVs if the C style variable argument list is |
411
|
|
|
|
|
|
|
missing (NULL). When running with taint checks enabled, indicates via |
412
|
|
|
|
|
|
|
C if results are untrustworthy (often due to the use of |
413
|
|
|
|
|
|
|
locales). |
414
|
|
|
|
|
|
|
|
415
|
|
|
|
|
|
|
Usually used via one of its frontends C and C. |
416
|
|
|
|
|
|
|
|
417
|
|
|
|
|
|
|
void sv_vcatpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)','name' => 'sv_vcatpvfn'},'strLT' => {'text' => 'Test two strings to see if the first, C, is less than the second, |
418
|
|
|
|
|
|
|
C. Returns true or false. |
419
|
|
|
|
|
|
|
|
420
|
|
|
|
|
|
|
bool strLT(char* s1, char* s2)','name' => 'strLT'},'av_shift' => {'text' => 'Shifts an SV off the beginning of the array. |
421
|
|
|
|
|
|
|
|
422
|
|
|
|
|
|
|
SV* av_shift(AV* ar)','name' => 'av_shift'},'sv_pvutf8n' => {'text' => 'A private implementation of the C macro for compilers |
423
|
|
|
|
|
|
|
which can\'t cope with complex macro expressions. Always use the macro |
424
|
|
|
|
|
|
|
instead. |
425
|
|
|
|
|
|
|
|
426
|
|
|
|
|
|
|
char* sv_pvutf8n(SV *sv, STRLEN *len)','name' => 'sv_pvutf8n'},'newSV' => {'text' => 'Creates a new SV. A non-zero C parameter indicates the number of |
427
|
|
|
|
|
|
|
bytes of preallocated string space the SV should have. An extra byte for a |
428
|
|
|
|
|
|
|
trailing NUL is also reserved. (SvPOK is not set for the SV even if string |
429
|
|
|
|
|
|
|
space is allocated.) The reference count for the new SV is set to 1. |
430
|
|
|
|
|
|
|
|
431
|
|
|
|
|
|
|
In 5.9.3, newSV() replaces the older NEWSV() API, and drops the first |
432
|
|
|
|
|
|
|
parameter, I, a debug aid which allowed callers to identify themselves. |
433
|
|
|
|
|
|
|
This aid has been superseded by a new build option, PERL_MEM_LOG (see |
434
|
|
|
|
|
|
|
L). The older API is still there for use in XS |
435
|
|
|
|
|
|
|
modules supporting older perls. |
436
|
|
|
|
|
|
|
|
437
|
|
|
|
|
|
|
SV* newSV(STRLEN len)','name' => 'newSV'},'sv_2pvutf8' => {'text' => 'Return a pointer to the UTF-8-encoded representation of the SV, and set *lp |
438
|
|
|
|
|
|
|
to its length. May cause the SV to be upgraded to UTF-8 as a side-effect. |
439
|
|
|
|
|
|
|
|
440
|
|
|
|
|
|
|
Usually accessed via the C macro. |
441
|
|
|
|
|
|
|
|
442
|
|
|
|
|
|
|
char* sv_2pvutf8(SV* sv, STRLEN* lp)','name' => 'sv_2pvutf8'},'sv_nounlocking' => {'text' => 'Dummy routine which "unlocks" an SV when there is no locking module present. |
443
|
|
|
|
|
|
|
Exists to avoid test for a NULL function pointer and because it could |
444
|
|
|
|
|
|
|
potentially warn under some level of strict-ness. |
445
|
|
|
|
|
|
|
|
446
|
|
|
|
|
|
|
"Superseded" by sv_nosharing(). |
447
|
|
|
|
|
|
|
|
448
|
|
|
|
|
|
|
void sv_nounlocking(SV *sv)','name' => 'sv_nounlocking'},'dITEMS' => {'text' => 'Sets up the C variable. |
449
|
|
|
|
|
|
|
This is usually handled automatically by C by calling C. |
450
|
|
|
|
|
|
|
|
451
|
|
|
|
|
|
|
dITEMS;','name' => 'dITEMS'},'SvUV_set' => {'text' => 'Set the value of the UV pointer in sv to val. See C. |
452
|
|
|
|
|
|
|
|
453
|
|
|
|
|
|
|
void SvUV_set(SV* sv, UV val)','name' => 'SvUV_set'},'CopyD' => {'text' => 'Like C but returns dest. Useful for encouraging compilers to tail-call |
454
|
|
|
|
|
|
|
optimise. |
455
|
|
|
|
|
|
|
|
456
|
|
|
|
|
|
|
void * CopyD(void* src, void* dest, int nitems, type)','name' => 'CopyD'},'sv_setiv_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
457
|
|
|
|
|
|
|
|
458
|
|
|
|
|
|
|
void sv_setiv_mg(SV *sv, IV i)','name' => 'sv_setiv_mg'},'PUTBACK' => {'text' => 'Closing bracket for XSUB arguments. This is usually handled by C. |
459
|
|
|
|
|
|
|
See C and L for other uses. |
460
|
|
|
|
|
|
|
|
461
|
|
|
|
|
|
|
PUTBACK;','name' => 'PUTBACK'},'savesharedpvn' => {'text' => 'A version of C which allocates the duplicate string in memory |
462
|
|
|
|
|
|
|
which is shared between threads. (With the specific difference that a NULL |
463
|
|
|
|
|
|
|
pointer is not acceptable) |
464
|
|
|
|
|
|
|
|
465
|
|
|
|
|
|
|
char* savesharedpvn(const char *const pv, const STRLEN len)','name' => 'savesharedpvn'},'dAXMARK' => {'text' => 'Sets up the C variable and stack marker variable C. |
466
|
|
|
|
|
|
|
This is usually handled automatically by C by calling C. |
467
|
|
|
|
|
|
|
|
468
|
|
|
|
|
|
|
dAXMARK;','name' => 'dAXMARK'},'SvCUR_set' => {'text' => 'Set the current length of the string which is in the SV. See C |
469
|
|
|
|
|
|
|
and C. |
470
|
|
|
|
|
|
|
|
471
|
|
|
|
|
|
|
void SvCUR_set(SV* sv, STRLEN len)','name' => 'SvCUR_set'},'sv_2uv_flags' => {'text' => 'Return the unsigned integer value of an SV, doing any necessary string |
472
|
|
|
|
|
|
|
conversion. If flags includes SV_GMAGIC, does an mg_get() first. |
473
|
|
|
|
|
|
|
Normally used via the C and C macros. |
474
|
|
|
|
|
|
|
|
475
|
|
|
|
|
|
|
UV sv_2uv_flags(SV* sv, I32 flags)','name' => 'sv_2uv_flags'},'SvNOK' => {'text' => 'Returns a U32 value indicating whether the SV contains a double. |
476
|
|
|
|
|
|
|
|
477
|
|
|
|
|
|
|
U32 SvNOK(SV* sv)','name' => 'SvNOK'},'mPUSHn' => {'text' => 'Push a double onto the stack. The stack must have room for this element. |
478
|
|
|
|
|
|
|
Handles \'set\' magic. Does not use C. See also C, C |
479
|
|
|
|
|
|
|
and C. |
480
|
|
|
|
|
|
|
|
481
|
|
|
|
|
|
|
void mPUSHn(NV nv)','name' => 'mPUSHn'},'G_SCALAR' => {'text' => 'Used to indicate scalar context. See C, C, and |
482
|
|
|
|
|
|
|
L.','name' => 'G_SCALAR'},'sv_reset' => {'text' => 'Underlying implementation for the C Perl function. |
483
|
|
|
|
|
|
|
Note that the perl-level function is vaguely deprecated. |
484
|
|
|
|
|
|
|
|
485
|
|
|
|
|
|
|
void sv_reset(const char* s, HV* stash)','name' => 'sv_reset'},'sv_2pv_flags' => {'text' => 'Returns a pointer to the string value of an SV, and sets *lp to its length. |
486
|
|
|
|
|
|
|
If flags includes SV_GMAGIC, does an mg_get() first. Coerces sv to a string |
487
|
|
|
|
|
|
|
if necessary. |
488
|
|
|
|
|
|
|
Normally invoked via the C macro. C and C |
489
|
|
|
|
|
|
|
usually end up here too. |
490
|
|
|
|
|
|
|
|
491
|
|
|
|
|
|
|
char* sv_2pv_flags(SV* sv, STRLEN* lp, I32 flags)','name' => 'sv_2pv_flags'},'SvTAINTED_off' => {'text' => 'Untaints an SV. Be I careful with this routine, as it short-circuits |
492
|
|
|
|
|
|
|
some of Perl\'s fundamental security features. XS module authors should not |
493
|
|
|
|
|
|
|
use this function unless they fully understand all the implications of |
494
|
|
|
|
|
|
|
unconditionally untainting the value. Untainting should be done in the |
495
|
|
|
|
|
|
|
standard perl fashion, via a carefully crafted regexp, rather than directly |
496
|
|
|
|
|
|
|
untainting variables. |
497
|
|
|
|
|
|
|
|
498
|
|
|
|
|
|
|
void SvTAINTED_off(SV* sv)','name' => 'SvTAINTED_off'},'SvNVx' => {'text' => 'Coerces the given SV to a double and returns it. Guarantees to evaluate |
499
|
|
|
|
|
|
|
C only once. Only use this if C is an expression with side effects, |
500
|
|
|
|
|
|
|
otherwise use the more efficient C. |
501
|
|
|
|
|
|
|
|
502
|
|
|
|
|
|
|
NV SvNVx(SV* sv)','name' => 'SvNVx'},'require_pv' => {'text' => 'Tells Perl to C the file named by the string argument. It is |
503
|
|
|
|
|
|
|
analogous to the Perl code C. It\'s even |
504
|
|
|
|
|
|
|
implemented that way; consider using load_module instead. |
505
|
|
|
|
|
|
|
|
506
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
507
|
|
|
|
|
|
|
|
508
|
|
|
|
|
|
|
void require_pv(const char* pv)','name' => 'require_pv'},'sv_upgrade' => {'text' => 'Upgrade an SV to a more complex form. Generally adds a new body type to the |
509
|
|
|
|
|
|
|
SV, then copies across as much information as possible from the old body. |
510
|
|
|
|
|
|
|
You generally want to use the C macro wrapper. See also C. |
511
|
|
|
|
|
|
|
|
512
|
|
|
|
|
|
|
void sv_upgrade(SV* sv, svtype new_type)','name' => 'sv_upgrade'},'strEQ' => {'text' => 'Test two strings to see if they are equal. Returns true or false. |
513
|
|
|
|
|
|
|
|
514
|
|
|
|
|
|
|
bool strEQ(char* s1, char* s2)','name' => 'strEQ'},'hv_store' => {'text' => 'Stores an SV in a hash. The hash key is specified as C and C is |
515
|
|
|
|
|
|
|
the length of the key. The C parameter is the precomputed hash |
516
|
|
|
|
|
|
|
value; if it is zero then Perl will compute it. The return value will be |
517
|
|
|
|
|
|
|
NULL if the operation failed or if the value did not need to be actually |
518
|
|
|
|
|
|
|
stored within the hash (as in the case of tied hashes). Otherwise it can |
519
|
|
|
|
|
|
|
be dereferenced to get the original C. Note that the caller is |
520
|
|
|
|
|
|
|
responsible for suitably incrementing the reference count of C before |
521
|
|
|
|
|
|
|
the call, and decrementing it if the function returned NULL. Effectively |
522
|
|
|
|
|
|
|
a successful hv_store takes ownership of one reference to C. This is |
523
|
|
|
|
|
|
|
usually what you want; a newly created SV has a reference count of one, so |
524
|
|
|
|
|
|
|
if all your code does is create SVs then store them in a hash, hv_store |
525
|
|
|
|
|
|
|
will own the only reference to the new SV, and your code doesn\'t need to do |
526
|
|
|
|
|
|
|
anything further to tidy up. hv_store is not implemented as a call to |
527
|
|
|
|
|
|
|
hv_store_ent, and does not create a temporary SV for the key, so if your |
528
|
|
|
|
|
|
|
key data is not already in SV form then use hv_store in preference to |
529
|
|
|
|
|
|
|
hv_store_ent. |
530
|
|
|
|
|
|
|
|
531
|
|
|
|
|
|
|
See L for more |
532
|
|
|
|
|
|
|
information on how to use this function on tied hashes. |
533
|
|
|
|
|
|
|
|
534
|
|
|
|
|
|
|
SV** hv_store(HV* tb, const char* key, I32 klen, SV* val, U32 hash)','name' => 'hv_store'},'isUPPER' => {'text' => 'Returns a boolean indicating whether the C C is an uppercase |
535
|
|
|
|
|
|
|
character. |
536
|
|
|
|
|
|
|
|
537
|
|
|
|
|
|
|
bool isUPPER(char ch)','name' => 'isUPPER'},'sv_setsv_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
538
|
|
|
|
|
|
|
|
539
|
|
|
|
|
|
|
void sv_setsv_mg(SV *dstr, SV *sstr)','name' => 'sv_setsv_mg'},'hv_fetch_ent' => {'text' => 'Returns the hash entry which corresponds to the specified key in the hash. |
540
|
|
|
|
|
|
|
C must be a valid precomputed hash number for the given C, or 0 |
541
|
|
|
|
|
|
|
if you want the function to compute it. IF C is set then the fetch |
542
|
|
|
|
|
|
|
will be part of a store. Make sure the return value is non-null before |
543
|
|
|
|
|
|
|
accessing it. The return value when C is a tied hash is a pointer to a |
544
|
|
|
|
|
|
|
static location, so be sure to make a copy of the structure if you need to |
545
|
|
|
|
|
|
|
store it somewhere. |
546
|
|
|
|
|
|
|
|
547
|
|
|
|
|
|
|
See L for more |
548
|
|
|
|
|
|
|
information on how to use this function on tied hashes. |
549
|
|
|
|
|
|
|
|
550
|
|
|
|
|
|
|
HE* hv_fetch_ent(HV* tb, SV* key, I32 lval, U32 hash)','name' => 'hv_fetch_ent'},'isLOWER' => {'text' => 'Returns a boolean indicating whether the C C is a lowercase |
551
|
|
|
|
|
|
|
character. |
552
|
|
|
|
|
|
|
|
553
|
|
|
|
|
|
|
bool isLOWER(char ch)','name' => 'isLOWER'},'ENTER' => {'text' => 'Opening bracket on a callback. See C and L. |
554
|
|
|
|
|
|
|
|
555
|
|
|
|
|
|
|
ENTER;','name' => 'ENTER'},'PL_sv_no' => {'text' => 'This is the C SV. See C. Always refer to this as |
556
|
|
|
|
|
|
|
C<&PL_sv_no>. |
557
|
|
|
|
|
|
|
|
558
|
|
|
|
|
|
|
SV PL_sv_no','name' => 'PL_sv_no'},'hv_iterkey' => {'text' => 'Returns the key from the current position of the hash iterator. See |
559
|
|
|
|
|
|
|
C. |
560
|
|
|
|
|
|
|
|
561
|
|
|
|
|
|
|
char* hv_iterkey(HE* entry, I32* retlen)','name' => 'hv_iterkey'},'SvNOKp' => {'text' => 'Returns a U32 value indicating whether the SV contains a double. Checks the |
562
|
|
|
|
|
|
|
B setting. Use C. |
563
|
|
|
|
|
|
|
|
564
|
|
|
|
|
|
|
U32 SvNOKp(SV* sv)','name' => 'SvNOKp'},'Newx' => {'text' => 'The XSUB-writer\'s interface to the C C function. |
565
|
|
|
|
|
|
|
|
566
|
|
|
|
|
|
|
In 5.9.3, Newx() and friends replace the older New() API, and drops |
567
|
|
|
|
|
|
|
the first parameter, I, a debug aid which allowed callers to identify |
568
|
|
|
|
|
|
|
themselves. This aid has been superseded by a new build option, |
569
|
|
|
|
|
|
|
PERL_MEM_LOG (see L). The older API is still |
570
|
|
|
|
|
|
|
there for use in XS modules supporting older perls. |
571
|
|
|
|
|
|
|
|
572
|
|
|
|
|
|
|
void Newx(void* ptr, int nitems, type)','name' => 'Newx'},'PUSHs' => {'text' => 'Push an SV onto the stack. The stack must have room for this element. |
573
|
|
|
|
|
|
|
Does not handle \'set\' magic. Does not use C. See also C, |
574
|
|
|
|
|
|
|
C and C. |
575
|
|
|
|
|
|
|
|
576
|
|
|
|
|
|
|
void PUSHs(SV* sv)','name' => 'PUSHs'},'sv_setuv' => {'text' => 'Copies an unsigned integer into the given SV, upgrading first if necessary. |
577
|
|
|
|
|
|
|
Does not handle \'set\' magic. See also C. |
578
|
|
|
|
|
|
|
|
579
|
|
|
|
|
|
|
void sv_setuv(SV* sv, UV num)','name' => 'sv_setuv'},'SvUPGRADE' => {'text' => 'Used to upgrade an SV to a more complex form. Uses C to |
580
|
|
|
|
|
|
|
perform the upgrade if necessary. See C. |
581
|
|
|
|
|
|
|
|
582
|
|
|
|
|
|
|
void SvUPGRADE(SV* sv, svtype type)','name' => 'SvUPGRADE'},'utf8_to_uvchr' => {'text' => 'Returns the native character value of the first character in the string C |
583
|
|
|
|
|
|
|
which is assumed to be in UTF-8 encoding; C will be set to the |
584
|
|
|
|
|
|
|
length, in bytes, of that character. |
585
|
|
|
|
|
|
|
|
586
|
|
|
|
|
|
|
If C does not point to a well-formed UTF-8 character, zero is |
587
|
|
|
|
|
|
|
returned and retlen is set, if possible, to -1. |
588
|
|
|
|
|
|
|
|
589
|
|
|
|
|
|
|
UV utf8_to_uvchr(const U8 *s, STRLEN *retlen)','name' => 'utf8_to_uvchr'},'nothreadhook' => {'text' => 'Stub that provides thread hook for perl_destruct when there are |
590
|
|
|
|
|
|
|
no threads. |
591
|
|
|
|
|
|
|
|
592
|
|
|
|
|
|
|
int nothreadhook()','name' => 'nothreadhook'},'bytes_to_utf8' => {'text' => 'Converts a string C of length C from ASCII into UTF-8 encoding. |
593
|
|
|
|
|
|
|
Returns a pointer to the newly-created string, and sets C to |
594
|
|
|
|
|
|
|
reflect the new length. |
595
|
|
|
|
|
|
|
|
596
|
|
|
|
|
|
|
If you want to convert to UTF-8 from other encodings than ASCII, |
597
|
|
|
|
|
|
|
see sv_recode_to_utf8(). |
598
|
|
|
|
|
|
|
|
599
|
|
|
|
|
|
|
NOTE: this function is experimental and may change or be |
600
|
|
|
|
|
|
|
removed without notice. |
601
|
|
|
|
|
|
|
|
602
|
|
|
|
|
|
|
U8* bytes_to_utf8(const U8 *s, STRLEN *len)','name' => 'bytes_to_utf8'},'SvIsCOW_shared_hash' => {'text' => 'Returns a boolean indicating whether the SV is Copy-On-Write shared hash key |
603
|
|
|
|
|
|
|
scalar. |
604
|
|
|
|
|
|
|
|
605
|
|
|
|
|
|
|
bool SvIsCOW_shared_hash(SV* sv)','name' => 'SvIsCOW_shared_hash'},'sv_pvn' => {'text' => 'A private implementation of the C macro for compilers which can\'t |
606
|
|
|
|
|
|
|
cope with complex macro expressions. Always use the macro instead. |
607
|
|
|
|
|
|
|
|
608
|
|
|
|
|
|
|
char* sv_pvn(SV *sv, STRLEN *len)','name' => 'sv_pvn'},'sv_setref_iv' => {'text' => 'Copies an integer into a new SV, optionally blessing the SV. The C |
609
|
|
|
|
|
|
|
argument will be upgraded to an RV. That RV will be modified to point to |
610
|
|
|
|
|
|
|
the new SV. The C argument indicates the package for the |
611
|
|
|
|
|
|
|
blessing. Set C to C to avoid the blessing. The new SV |
612
|
|
|
|
|
|
|
will have a reference count of 1, and the RV will be returned. |
613
|
|
|
|
|
|
|
|
614
|
|
|
|
|
|
|
SV* sv_setref_iv(SV* rv, const char* classname, IV iv)','name' => 'sv_setref_iv'},'sv_chop' => {'text' => 'Efficient removal of characters from the beginning of the string buffer. |
615
|
|
|
|
|
|
|
SvPOK(sv) must be true and the C must be a pointer to somewhere inside |
616
|
|
|
|
|
|
|
the string buffer. The C becomes the first character of the adjusted |
617
|
|
|
|
|
|
|
string. Uses the "OOK hack". |
618
|
|
|
|
|
|
|
Beware: after this function returns, C and SvPVX_const(sv) may no longer |
619
|
|
|
|
|
|
|
refer to the same chunk of data. |
620
|
|
|
|
|
|
|
|
621
|
|
|
|
|
|
|
void sv_chop(SV* sv, const char* ptr)','name' => 'sv_chop'},'sv_backoff' => {'text' => 'Remove any string offset. You should normally use the C macro |
622
|
|
|
|
|
|
|
wrapper instead. |
623
|
|
|
|
|
|
|
|
624
|
|
|
|
|
|
|
int sv_backoff(SV* sv)','name' => 'sv_backoff'},'sv_catsv_nomg' => {'text' => 'Like C but doesn\'t process magic. |
625
|
|
|
|
|
|
|
|
626
|
|
|
|
|
|
|
void sv_catsv_nomg(SV* dsv, SV* ssv)','name' => 'sv_catsv_nomg'},'XPUSHu' => {'text' => 'Push an unsigned integer onto the stack, extending the stack if necessary. |
627
|
|
|
|
|
|
|
Handles \'set\' magic. Uses C, so C or C should be |
628
|
|
|
|
|
|
|
called to declare it. Do not call multiple C-oriented macros to |
629
|
|
|
|
|
|
|
return lists from XSUB\'s - see C instead. See also C and |
630
|
|
|
|
|
|
|
C. |
631
|
|
|
|
|
|
|
|
632
|
|
|
|
|
|
|
void XPUSHu(UV uv)','name' => 'XPUSHu'},'sv_setuv_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
633
|
|
|
|
|
|
|
|
634
|
|
|
|
|
|
|
void sv_setuv_mg(SV *sv, UV u)','name' => 'sv_setuv_mg'},'XS_VERSION' => {'text' => 'The version identifier for an XS module. This is usually |
635
|
|
|
|
|
|
|
handled automatically by C. See C.','name' => 'XS_VERSION'},'PL_na' => {'text' => 'A convenience variable which is typically used with C when one |
636
|
|
|
|
|
|
|
doesn\'t care about the length of the string. It is usually more efficient |
637
|
|
|
|
|
|
|
to either declare a local variable and use that instead or to use the |
638
|
|
|
|
|
|
|
C macro. |
639
|
|
|
|
|
|
|
|
640
|
|
|
|
|
|
|
STRLEN PL_na','name' => 'PL_na'},'newSViv' => {'text' => 'Creates a new SV and copies an integer into it. The reference count for the |
641
|
|
|
|
|
|
|
SV is set to 1. |
642
|
|
|
|
|
|
|
|
643
|
|
|
|
|
|
|
SV* newSViv(IV i)','name' => 'newSViv'},'sv_untaint' => {'text' => 'Untaint an SV. Use C instead. |
644
|
|
|
|
|
|
|
void sv_untaint(SV* sv)','name' => 'sv_untaint'},'sv_setpv' => {'text' => 'Copies a string into an SV. The string must be null-terminated. Does not |
645
|
|
|
|
|
|
|
handle \'set\' magic. See C. |
646
|
|
|
|
|
|
|
|
647
|
|
|
|
|
|
|
void sv_setpv(SV* sv, const char* ptr)','name' => 'sv_setpv'},'Newxz' => {'text' => 'The XSUB-writer\'s interface to the C C function. The allocated |
648
|
|
|
|
|
|
|
memory is zeroed with C. See also C. |
649
|
|
|
|
|
|
|
|
650
|
|
|
|
|
|
|
void Newxz(void* ptr, int nitems, type)','name' => 'Newxz'},'SVt_PVHV' => {'text' => 'Type flag for hashes. See C.','name' => 'SVt_PVHV'},'SvGROW' => {'text' => 'Expands the character buffer in the SV so that it has room for the |
651
|
|
|
|
|
|
|
indicated number of bytes (remember to reserve space for an extra trailing |
652
|
|
|
|
|
|
|
NUL character). Calls C to perform the expansion if necessary. |
653
|
|
|
|
|
|
|
Returns a pointer to the character buffer. |
654
|
|
|
|
|
|
|
|
655
|
|
|
|
|
|
|
char * SvGROW(SV* sv, STRLEN len)','name' => 'SvGROW'},'gv_fetchmethod' => {'text' => 'See L. |
656
|
|
|
|
|
|
|
|
657
|
|
|
|
|
|
|
GV* gv_fetchmethod(HV* stash, const char* name)','name' => 'gv_fetchmethod'},'dMULTICALL' => {'text' => 'Declare local variables for a multicall. See L. |
658
|
|
|
|
|
|
|
|
659
|
|
|
|
|
|
|
dMULTICALL;','name' => 'dMULTICALL'},'sv_catpv' => {'text' => 'Concatenates the string onto the end of the string which is in the SV. |
660
|
|
|
|
|
|
|
If the SV has the UTF-8 status set, then the bytes appended should be |
661
|
|
|
|
|
|
|
valid UTF-8. Handles \'get\' magic, but not \'set\' magic. See C. |
662
|
|
|
|
|
|
|
|
663
|
|
|
|
|
|
|
void sv_catpv(SV* sv, const char* ptr)','name' => 'sv_catpv'},'sv_len' => {'text' => 'Returns the length of the string in the SV. Handles magic and type |
664
|
|
|
|
|
|
|
coercion. See also C, which gives raw access to the xpv_cur slot. |
665
|
|
|
|
|
|
|
|
666
|
|
|
|
|
|
|
STRLEN sv_len(SV* sv)','name' => 'sv_len'},'SvPVbyte_nolen' => {'text' => 'Like C, but converts sv to byte representation first if necessary. |
667
|
|
|
|
|
|
|
|
668
|
|
|
|
|
|
|
char* SvPVbyte_nolen(SV* sv)','name' => 'SvPVbyte_nolen'},'sv_pvutf8' => {'text' => 'Use the C macro instead |
669
|
|
|
|
|
|
|
|
670
|
|
|
|
|
|
|
char* sv_pvutf8(SV *sv)','name' => 'sv_pvutf8'},'SvRX' => {'text' => 'Convenience macro to get the REGEXP from a SV. This is approximately |
671
|
|
|
|
|
|
|
equivalent to the following snippet: |
672
|
|
|
|
|
|
|
|
673
|
|
|
|
|
|
|
if (SvMAGICAL(sv)) |
674
|
|
|
|
|
|
|
mg_get(sv); |
675
|
|
|
|
|
|
|
if (SvROK(sv) && |
676
|
|
|
|
|
|
|
(tmpsv = (SV*)SvRV(sv)) && |
677
|
|
|
|
|
|
|
SvTYPE(tmpsv) == SVt_PVMG && |
678
|
|
|
|
|
|
|
(tmpmg = mg_find(tmpsv, PERL_MAGIC_qr))) |
679
|
|
|
|
|
|
|
{ |
680
|
|
|
|
|
|
|
return (REGEXP *)tmpmg->mg_obj; |
681
|
|
|
|
|
|
|
} |
682
|
|
|
|
|
|
|
|
683
|
|
|
|
|
|
|
NULL will be returned if a REGEXP* is not found. |
684
|
|
|
|
|
|
|
|
685
|
|
|
|
|
|
|
REGEXP * SvRX(SV *sv)','name' => 'SvRX'},'SVt_PVAV' => {'text' => 'Type flag for arrays. See C.','name' => 'SVt_PVAV'},'LEAVE' => {'text' => 'Closing bracket on a callback. See C and L. |
686
|
|
|
|
|
|
|
|
687
|
|
|
|
|
|
|
LEAVE;','name' => 'LEAVE'},'hv_undef' => {'text' => 'Undefines the hash. |
688
|
|
|
|
|
|
|
|
689
|
|
|
|
|
|
|
void hv_undef(HV* tb)','name' => 'hv_undef'},'SvSetMagicSV_nosteal' => {'text' => 'Like C, but does any set magic required afterwards. |
690
|
|
|
|
|
|
|
|
691
|
|
|
|
|
|
|
void SvSetMagicSV_nosteal(SV* dsv, SV* ssv)','name' => 'SvSetMagicSV_nosteal'},'hv_delete_ent' => {'text' => 'Deletes a key/value pair in the hash. The value SV is removed from the |
692
|
|
|
|
|
|
|
hash and returned to the caller. The C value will normally be zero; |
693
|
|
|
|
|
|
|
if set to G_DISCARD then NULL will be returned. C can be a valid |
694
|
|
|
|
|
|
|
precomputed hash value, or 0 to ask for it to be computed. |
695
|
|
|
|
|
|
|
|
696
|
|
|
|
|
|
|
SV* hv_delete_ent(HV* tb, SV* key, I32 flags, U32 hash)','name' => 'hv_delete_ent'},'CLASS' => {'text' => 'Variable which is setup by C to indicate the |
697
|
|
|
|
|
|
|
class name for a C++ XS constructor. This is always a C. See C. |
698
|
|
|
|
|
|
|
|
699
|
|
|
|
|
|
|
char* CLASS','name' => 'CLASS'},'savesvpv' => {'text' => 'A version of C/C which gets the string to duplicate from |
700
|
|
|
|
|
|
|
the passed in SV using C |
701
|
|
|
|
|
|
|
|
702
|
|
|
|
|
|
|
char* savesvpv(SV* sv)','name' => 'savesvpv'},'sv_isobject' => {'text' => 'Returns a boolean indicating whether the SV is an RV pointing to a blessed |
703
|
|
|
|
|
|
|
object. If the SV is not an RV, or if the object is not blessed, then this |
704
|
|
|
|
|
|
|
will return false. |
705
|
|
|
|
|
|
|
|
706
|
|
|
|
|
|
|
int sv_isobject(SV* sv)','name' => 'sv_isobject'},'sv_pvn_force_flags' => {'text' => 'Get a sensible string out of the SV somehow. |
707
|
|
|
|
|
|
|
If C has C bit set, will C on C if |
708
|
|
|
|
|
|
|
appropriate, else not. C and C are |
709
|
|
|
|
|
|
|
implemented in terms of this function. |
710
|
|
|
|
|
|
|
You normally want to use the various wrapper macros instead: see |
711
|
|
|
|
|
|
|
C and C |
712
|
|
|
|
|
|
|
|
713
|
|
|
|
|
|
|
char* sv_pvn_force_flags(SV* sv, STRLEN* lp, I32 flags)','name' => 'sv_pvn_force_flags'},'HeKLEN' => {'text' => 'If this is negative, and amounts to C, it indicates the entry |
714
|
|
|
|
|
|
|
holds an C key. Otherwise, holds the actual length of the key. Can |
715
|
|
|
|
|
|
|
be assigned to. The C macro is usually preferable for finding key |
716
|
|
|
|
|
|
|
lengths. |
717
|
|
|
|
|
|
|
|
718
|
|
|
|
|
|
|
STRLEN HeKLEN(HE* he)','name' => 'HeKLEN'},'to_utf8_title' => {'text' => 'Convert the UTF-8 encoded character at p to its titlecase version and |
719
|
|
|
|
|
|
|
store that in UTF-8 in ustrp and its length in bytes in lenp. Note |
720
|
|
|
|
|
|
|
that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the |
721
|
|
|
|
|
|
|
titlecase version may be longer than the original character. |
722
|
|
|
|
|
|
|
|
723
|
|
|
|
|
|
|
The first character of the titlecased version is returned |
724
|
|
|
|
|
|
|
(but note, as explained above, that there may be more.) |
725
|
|
|
|
|
|
|
|
726
|
|
|
|
|
|
|
UV to_utf8_title(const U8 *p, U8* ustrp, STRLEN *lenp)','name' => 'to_utf8_title'},'mPUSHi' => {'text' => 'Push an integer onto the stack. The stack must have room for this element. |
727
|
|
|
|
|
|
|
Handles \'set\' magic. Does not use C. See also C, C |
728
|
|
|
|
|
|
|
and C. |
729
|
|
|
|
|
|
|
|
730
|
|
|
|
|
|
|
void mPUSHi(IV iv)','name' => 'mPUSHi'},'PUSHn' => {'text' => 'Push a double onto the stack. The stack must have room for this element. |
731
|
|
|
|
|
|
|
Handles \'set\' magic. Uses C, so C or C should be |
732
|
|
|
|
|
|
|
called to declare it. Do not call multiple C-oriented macros to |
733
|
|
|
|
|
|
|
return lists from XSUB\'s - see C instead. See also C and |
734
|
|
|
|
|
|
|
C. |
735
|
|
|
|
|
|
|
|
736
|
|
|
|
|
|
|
void PUSHn(NV nv)','name' => 'PUSHn'},'SvIV' => {'text' => 'Coerces the given SV to an integer and returns it. See C for a |
737
|
|
|
|
|
|
|
version which guarantees to evaluate sv only once. |
738
|
|
|
|
|
|
|
|
739
|
|
|
|
|
|
|
IV SvIV(SV* sv)','name' => 'SvIV'},'PL_sv_yes' => {'text' => 'This is the C SV. See C. Always refer to this as |
740
|
|
|
|
|
|
|
C<&PL_sv_yes>. |
741
|
|
|
|
|
|
|
|
742
|
|
|
|
|
|
|
SV PL_sv_yes','name' => 'PL_sv_yes'},'sv_nosharing' => {'text' => 'Dummy routine which "shares" an SV when there is no sharing module present. |
743
|
|
|
|
|
|
|
Or "locks" it. Or "unlocks" it. In other words, ignores its single SV argument. |
744
|
|
|
|
|
|
|
Exists to avoid test for a NULL function pointer and because it could |
745
|
|
|
|
|
|
|
potentially warn under some level of strict-ness. |
746
|
|
|
|
|
|
|
|
747
|
|
|
|
|
|
|
void sv_nosharing(SV *sv)','name' => 'sv_nosharing'},'SvUTF8_off' => {'text' => 'Unsets the UTF-8 status of an SV. |
748
|
|
|
|
|
|
|
|
749
|
|
|
|
|
|
|
void SvUTF8_off(SV *sv)','name' => 'SvUTF8_off'},'looks_like_number' => {'text' => 'Test if the content of an SV looks like a number (or is a number). |
750
|
|
|
|
|
|
|
C and C are treated as numbers (so will not issue a |
751
|
|
|
|
|
|
|
non-numeric warning), even if your atof() doesn\'t grok them. |
752
|
|
|
|
|
|
|
|
753
|
|
|
|
|
|
|
I32 looks_like_number(SV* sv)','name' => 'looks_like_number'},'sv_catpv_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
754
|
|
|
|
|
|
|
|
755
|
|
|
|
|
|
|
void sv_catpv_mg(SV *sv, const char *ptr)','name' => 'sv_catpv_mg'},'XSRETURN_EMPTY' => {'text' => 'Return an empty list from an XSUB immediately. |
756
|
|
|
|
|
|
|
|
757
|
|
|
|
|
|
|
XSRETURN_EMPTY;','name' => 'XSRETURN_EMPTY'},'sv_setref_uv' => {'text' => 'Copies an unsigned integer into a new SV, optionally blessing the SV. The C |
758
|
|
|
|
|
|
|
argument will be upgraded to an RV. That RV will be modified to point to |
759
|
|
|
|
|
|
|
the new SV. The C argument indicates the package for the |
760
|
|
|
|
|
|
|
blessing. Set C to C to avoid the blessing. The new SV |
761
|
|
|
|
|
|
|
will have a reference count of 1, and the RV will be returned. |
762
|
|
|
|
|
|
|
|
763
|
|
|
|
|
|
|
SV* sv_setref_uv(SV* rv, const char* classname, UV uv)','name' => 'sv_setref_uv'},'getcwd_sv' => {'text' => 'Fill the sv with current working directory |
764
|
|
|
|
|
|
|
|
765
|
|
|
|
|
|
|
int getcwd_sv(SV* sv)','name' => 'getcwd_sv'},'newSVpvs_share' => {'text' => 'Like C, but takes a literal string instead of a string/length |
766
|
|
|
|
|
|
|
pair and omits the hash parameter. |
767
|
|
|
|
|
|
|
|
768
|
|
|
|
|
|
|
SV* newSVpvs_share(const char* s)','name' => 'newSVpvs_share'},'newSVpv' => {'text' => 'Creates a new SV and copies a string into it. The reference count for the |
769
|
|
|
|
|
|
|
SV is set to 1. If C is zero, Perl will compute the length using |
770
|
|
|
|
|
|
|
strlen(). For efficiency, consider using C instead. |
771
|
|
|
|
|
|
|
|
772
|
|
|
|
|
|
|
SV* newSVpv(const char* s, STRLEN len)','name' => 'newSVpv'},'sv_2pvbyte' => {'text' => 'Return a pointer to the byte-encoded representation of the SV, and set *lp |
773
|
|
|
|
|
|
|
to its length. May cause the SV to be downgraded from UTF-8 as a |
774
|
|
|
|
|
|
|
side-effect. |
775
|
|
|
|
|
|
|
|
776
|
|
|
|
|
|
|
Usually accessed via the C macro. |
777
|
|
|
|
|
|
|
|
778
|
|
|
|
|
|
|
char* sv_2pvbyte(SV* sv, STRLEN* lp)','name' => 'sv_2pvbyte'},'fbm_instr' => {'text' => 'Returns the location of the SV in the string delimited by C and |
779
|
|
|
|
|
|
|
C. It returns C if the string can\'t be found. The C |
780
|
|
|
|
|
|
|
does not have to be fbm_compiled, but the search will not be as fast |
781
|
|
|
|
|
|
|
then. |
782
|
|
|
|
|
|
|
|
783
|
|
|
|
|
|
|
char* fbm_instr(unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags)','name' => 'fbm_instr'},'sv_setpvf' => {'text' => 'Works like C but copies the text into the SV instead of |
784
|
|
|
|
|
|
|
appending it. Does not handle \'set\' magic. See C. |
785
|
|
|
|
|
|
|
|
786
|
|
|
|
|
|
|
void sv_setpvf(SV* sv, const char* pat, ...)','name' => 'sv_setpvf'},'XPUSHn' => {'text' => 'Push a double onto the stack, extending the stack if necessary. Handles |
787
|
|
|
|
|
|
|
\'set\' magic. Uses C, so C or C should be called to |
788
|
|
|
|
|
|
|
declare it. Do not call multiple C-oriented macros to return lists |
789
|
|
|
|
|
|
|
from XSUB\'s - see C instead. See also C and C. |
790
|
|
|
|
|
|
|
|
791
|
|
|
|
|
|
|
void XPUSHn(NV nv)','name' => 'XPUSHn'},'SVt_PV' => {'text' => 'Pointer type flag for scalars. See C.','name' => 'SVt_PV'},'call_sv' => {'text' => 'Performs a callback to the Perl sub whose name is in the SV. See |
792
|
|
|
|
|
|
|
L. |
793
|
|
|
|
|
|
|
|
794
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
795
|
|
|
|
|
|
|
|
796
|
|
|
|
|
|
|
I32 call_sv(SV* sv, I32 flags)','name' => 'call_sv'},'strGT' => {'text' => 'Test two strings to see if the first, C, is greater than the second, |
797
|
|
|
|
|
|
|
C. Returns true or false. |
798
|
|
|
|
|
|
|
|
799
|
|
|
|
|
|
|
bool strGT(char* s1, char* s2)','name' => 'strGT'},'sv_vcatpvf' => {'text' => 'Processes its arguments like C and appends the formatted output |
800
|
|
|
|
|
|
|
to an SV. Does not handle \'set\' magic. See C. |
801
|
|
|
|
|
|
|
|
802
|
|
|
|
|
|
|
Usually used via its frontend C. |
803
|
|
|
|
|
|
|
|
804
|
|
|
|
|
|
|
void sv_vcatpvf(SV* sv, const char* pat, va_list* args)','name' => 'sv_vcatpvf'},'sv_pos_u2b' => {'text' => 'Converts the value pointed to by offsetp from a count of UTF-8 chars from |
805
|
|
|
|
|
|
|
the start of the string, to a count of the equivalent number of bytes; if |
806
|
|
|
|
|
|
|
lenp is non-zero, it does the same to lenp, but this time starting from |
807
|
|
|
|
|
|
|
the offset, rather than from the start of the string. Handles magic and |
808
|
|
|
|
|
|
|
type coercion. |
809
|
|
|
|
|
|
|
|
810
|
|
|
|
|
|
|
void sv_pos_u2b(SV* sv, I32* offsetp, I32* lenp)','name' => 'sv_pos_u2b'},'upg_version' => {'text' => 'In-place upgrade of the supplied SV to a version object. |
811
|
|
|
|
|
|
|
|
812
|
|
|
|
|
|
|
SV *sv = upg_version(SV *sv, bool qv); |
813
|
|
|
|
|
|
|
|
814
|
|
|
|
|
|
|
Returns a pointer to the upgraded SV. Set the boolean qv if you want |
815
|
|
|
|
|
|
|
to force this SV to be interpreted as an "extended" version. |
816
|
|
|
|
|
|
|
|
817
|
|
|
|
|
|
|
SV* upg_version(SV *ver, bool qv)','name' => 'upg_version'},'HeSVKEY_set' => {'text' => 'Sets the key to a given C, taking care to set the appropriate flags to |
818
|
|
|
|
|
|
|
indicate the presence of an C key, and returns the same |
819
|
|
|
|
|
|
|
C. |
820
|
|
|
|
|
|
|
|
821
|
|
|
|
|
|
|
SV* HeSVKEY_set(HE* he, SV* sv)','name' => 'HeSVKEY_set'},'POPl' => {'text' => 'Pops a long off the stack. |
822
|
|
|
|
|
|
|
|
823
|
|
|
|
|
|
|
long POPl','name' => 'POPl'},'SPAGAIN' => {'text' => 'Refetch the stack pointer. Used after a callback. See L. |
824
|
|
|
|
|
|
|
|
825
|
|
|
|
|
|
|
SPAGAIN;','name' => 'SPAGAIN'},'scan_version' => {'text' => 'Returns a pointer to the next character after the parsed |
826
|
|
|
|
|
|
|
version string, as well as upgrading the passed in SV to |
827
|
|
|
|
|
|
|
an RV. |
828
|
|
|
|
|
|
|
|
829
|
|
|
|
|
|
|
Function must be called with an already existing SV like |
830
|
|
|
|
|
|
|
|
831
|
|
|
|
|
|
|
sv = newSV(0); |
832
|
|
|
|
|
|
|
s = scan_version(s, SV *sv, bool qv); |
833
|
|
|
|
|
|
|
|
834
|
|
|
|
|
|
|
Performs some preprocessing to the string to ensure that |
835
|
|
|
|
|
|
|
it has the correct characteristics of a version. Flags the |
836
|
|
|
|
|
|
|
object if it contains an underscore (which denotes this |
837
|
|
|
|
|
|
|
is an alpha version). The boolean qv denotes that the version |
838
|
|
|
|
|
|
|
should be interpreted as if it had multiple decimals, even if |
839
|
|
|
|
|
|
|
it doesn\'t. |
840
|
|
|
|
|
|
|
|
841
|
|
|
|
|
|
|
const char* scan_version(const char *vstr, SV *sv, bool qv)','name' => 'scan_version'},'SvIOKp' => {'text' => 'Returns a U32 value indicating whether the SV contains an integer. Checks |
842
|
|
|
|
|
|
|
the B setting. Use C. |
843
|
|
|
|
|
|
|
|
844
|
|
|
|
|
|
|
U32 SvIOKp(SV* sv)','name' => 'SvIOKp'},'get_cv' => {'text' => 'Uses C to get the length of C, then calls C. |
845
|
|
|
|
|
|
|
|
846
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
847
|
|
|
|
|
|
|
|
848
|
|
|
|
|
|
|
CV* get_cv(const char* name, I32 flags)','name' => 'get_cv'},'vnumify' => {'text' => 'Accepts a version object and returns the normalized floating |
849
|
|
|
|
|
|
|
point representation. Call like: |
850
|
|
|
|
|
|
|
|
851
|
|
|
|
|
|
|
sv = vnumify(rv); |
852
|
|
|
|
|
|
|
|
853
|
|
|
|
|
|
|
NOTE: you can pass either the object directly or the SV |
854
|
|
|
|
|
|
|
contained within the RV. |
855
|
|
|
|
|
|
|
|
856
|
|
|
|
|
|
|
SV* vnumify(SV *vs)','name' => 'vnumify'},'XST_mUNDEF' => {'text' => 'Place C<&PL_sv_undef> into the specified position C on the |
857
|
|
|
|
|
|
|
stack. |
858
|
|
|
|
|
|
|
|
859
|
|
|
|
|
|
|
void XST_mUNDEF(int pos)','name' => 'XST_mUNDEF'},'SvUNLOCK' => {'text' => 'Releases a mutual exclusion lock on sv if a suitable module |
860
|
|
|
|
|
|
|
has been loaded. |
861
|
|
|
|
|
|
|
|
862
|
|
|
|
|
|
|
void SvUNLOCK(SV* sv)','name' => 'SvUNLOCK'},'mg_set' => {'text' => 'Do magic after a value is assigned to the SV. See C. |
863
|
|
|
|
|
|
|
|
864
|
|
|
|
|
|
|
int mg_set(SV* sv)','name' => 'mg_set'},'sv_mortalcopy' => {'text' => 'Creates a new SV which is a copy of the original SV (using C). |
865
|
|
|
|
|
|
|
The new SV is marked as mortal. It will be destroyed "soon", either by an |
866
|
|
|
|
|
|
|
explicit call to FREETMPS, or by an implicit call at places such as |
867
|
|
|
|
|
|
|
statement boundaries. See also C and C. |
868
|
|
|
|
|
|
|
|
869
|
|
|
|
|
|
|
SV* sv_mortalcopy(SV* oldsv)','name' => 'sv_mortalcopy'},'sv_catpvn_nomg' => {'text' => 'Like C but doesn\'t process magic. |
870
|
|
|
|
|
|
|
|
871
|
|
|
|
|
|
|
void sv_catpvn_nomg(SV* sv, const char* ptr, STRLEN len)','name' => 'sv_catpvn_nomg'},'G_NOARGS' => {'text' => 'Indicates that no arguments are being sent to a callback. See |
872
|
|
|
|
|
|
|
L.','name' => 'G_NOARGS'},'savepvn' => {'text' => 'Perl\'s version of what C would be if it existed. Returns a |
873
|
|
|
|
|
|
|
pointer to a newly allocated string which is a duplicate of the first |
874
|
|
|
|
|
|
|
C bytes from C, plus a trailing NUL byte. The memory allocated for |
875
|
|
|
|
|
|
|
the new string can be freed with the C function. |
876
|
|
|
|
|
|
|
|
877
|
|
|
|
|
|
|
char* savepvn(const char* pv, I32 len)','name' => 'savepvn'},'av_exists' => {'text' => 'Returns true if the element indexed by C has been initialized. |
878
|
|
|
|
|
|
|
|
879
|
|
|
|
|
|
|
This relies on the fact that uninitialized array elements are set to |
880
|
|
|
|
|
|
|
C<&PL_sv_undef>. |
881
|
|
|
|
|
|
|
|
882
|
|
|
|
|
|
|
bool av_exists(AV* ar, I32 key)','name' => 'av_exists'},'SvCUR' => {'text' => 'Returns the length of the string which is in the SV. See C. |
883
|
|
|
|
|
|
|
|
884
|
|
|
|
|
|
|
STRLEN SvCUR(SV* sv)','name' => 'SvCUR'},'sv_bless' => {'text' => 'Blesses an SV into a specified package. The SV must be an RV. The package |
885
|
|
|
|
|
|
|
must be designated by its stash (see C). The reference count |
886
|
|
|
|
|
|
|
of the SV is unaffected. |
887
|
|
|
|
|
|
|
|
888
|
|
|
|
|
|
|
SV* sv_bless(SV* sv, HV* stash)','name' => 'sv_bless'},'sv_isa' => {'text' => 'Returns a boolean indicating whether the SV is blessed into the specified |
889
|
|
|
|
|
|
|
class. This does not check for subtypes; use C to verify |
890
|
|
|
|
|
|
|
an inheritance relationship. |
891
|
|
|
|
|
|
|
|
892
|
|
|
|
|
|
|
int sv_isa(SV* sv, const char* name)','name' => 'sv_isa'},'sv_catpvf' => {'text' => 'Processes its arguments like C and appends the formatted |
893
|
|
|
|
|
|
|
output to an SV. If the appended data contains "wide" characters |
894
|
|
|
|
|
|
|
(including, but not limited to, SVs with a UTF-8 PV formatted with %s, |
895
|
|
|
|
|
|
|
and characters >255 formatted with %c), the original SV might get |
896
|
|
|
|
|
|
|
upgraded to UTF-8. Handles \'get\' magic, but not \'set\' magic. See |
897
|
|
|
|
|
|
|
C. If the original SV was UTF-8, the pattern should be |
898
|
|
|
|
|
|
|
valid UTF-8; if the original SV was bytes, the pattern should be too. |
899
|
|
|
|
|
|
|
|
900
|
|
|
|
|
|
|
void sv_catpvf(SV* sv, const char* pat, ...)','name' => 'sv_catpvf'},'XSRETURN_PV' => {'text' => 'Return a copy of a string from an XSUB immediately. Uses C. |
901
|
|
|
|
|
|
|
|
902
|
|
|
|
|
|
|
void XSRETURN_PV(char* str)','name' => 'XSRETURN_PV'},'utf8_to_uvuni' => {'text' => 'Returns the Unicode code point of the first character in the string C |
903
|
|
|
|
|
|
|
which is assumed to be in UTF-8 encoding; C will be set to the |
904
|
|
|
|
|
|
|
length, in bytes, of that character. |
905
|
|
|
|
|
|
|
|
906
|
|
|
|
|
|
|
This function should only be used when returned UV is considered |
907
|
|
|
|
|
|
|
an index into the Unicode semantic tables (e.g. swashes). |
908
|
|
|
|
|
|
|
|
909
|
|
|
|
|
|
|
If C does not point to a well-formed UTF-8 character, zero is |
910
|
|
|
|
|
|
|
returned and retlen is set, if possible, to -1. |
911
|
|
|
|
|
|
|
|
912
|
|
|
|
|
|
|
UV utf8_to_uvuni(const U8 *s, STRLEN *retlen)','name' => 'utf8_to_uvuni'},'sv_2io' => {'text' => 'Using various gambits, try to get an IO from an SV: the IO slot if its a |
913
|
|
|
|
|
|
|
GV; or the recursive result if we\'re an RV; or the IO slot of the symbol |
914
|
|
|
|
|
|
|
named after the PV if we\'re a string. |
915
|
|
|
|
|
|
|
|
916
|
|
|
|
|
|
|
IO* sv_2io(SV* sv)','name' => 'sv_2io'},'SvMAGIC_set' => {'text' => 'Set the value of the MAGIC pointer in sv to val. See C. |
917
|
|
|
|
|
|
|
|
918
|
|
|
|
|
|
|
void SvMAGIC_set(SV* sv, MAGIC* val)','name' => 'SvMAGIC_set'},'newSVhek' => {'text' => 'Creates a new SV from the hash key structure. It will generate scalars that |
919
|
|
|
|
|
|
|
point to the shared string table where possible. Returns a new (undefined) |
920
|
|
|
|
|
|
|
SV if the hek is NULL. |
921
|
|
|
|
|
|
|
|
922
|
|
|
|
|
|
|
SV* newSVhek(const HEK *hek)','name' => 'newSVhek'},'isALPHA' => {'text' => 'Returns a boolean indicating whether the C C is an ASCII alphabetic |
923
|
|
|
|
|
|
|
character. |
924
|
|
|
|
|
|
|
|
925
|
|
|
|
|
|
|
bool isALPHA(char ch)','name' => 'isALPHA'},'Nullhv' => {'text' => 'Null HV pointer.','name' => 'Nullhv'},'av_fill' => {'text' => 'Set the highest index in the array to the given number, equivalent to |
926
|
|
|
|
|
|
|
Perl\'s C<$#array = $fill;>. |
927
|
|
|
|
|
|
|
|
928
|
|
|
|
|
|
|
The number of elements in the an array will be C after |
929
|
|
|
|
|
|
|
av_fill() returns. If the array was previously shorter then the |
930
|
|
|
|
|
|
|
additional elements appended are set to C. If the array |
931
|
|
|
|
|
|
|
was longer, then the excess elements are freed. C is |
932
|
|
|
|
|
|
|
the same as C. |
933
|
|
|
|
|
|
|
|
934
|
|
|
|
|
|
|
void av_fill(AV* ar, I32 fill)','name' => 'av_fill'},'SvREFCNT_inc' => {'text' => 'Increments the reference count of the given SV. |
935
|
|
|
|
|
|
|
|
936
|
|
|
|
|
|
|
All of the following SvREFCNT_inc* macros are optimized versions of |
937
|
|
|
|
|
|
|
SvREFCNT_inc, and can be replaced with SvREFCNT_inc. |
938
|
|
|
|
|
|
|
|
939
|
|
|
|
|
|
|
SV* SvREFCNT_inc(SV* sv)','name' => 'SvREFCNT_inc'},'SvTYPE' => {'text' => 'Returns the type of the SV. See C. |
940
|
|
|
|
|
|
|
|
941
|
|
|
|
|
|
|
svtype SvTYPE(SV* sv)','name' => 'SvTYPE'},'SvIOK_only' => {'text' => 'Tells an SV that it is an integer and disables all other OK bits. |
942
|
|
|
|
|
|
|
|
943
|
|
|
|
|
|
|
void SvIOK_only(SV* sv)','name' => 'SvIOK_only'},'MoveD' => {'text' => 'Like C but returns dest. Useful for encouraging compilers to tail-call |
944
|
|
|
|
|
|
|
optimise. |
945
|
|
|
|
|
|
|
|
946
|
|
|
|
|
|
|
void * MoveD(void* src, void* dest, int nitems, type)','name' => 'MoveD'},'SvROK_off' => {'text' => 'Unsets the RV status of an SV. |
947
|
|
|
|
|
|
|
|
948
|
|
|
|
|
|
|
void SvROK_off(SV* sv)','name' => 'SvROK_off'},'Renew' => {'text' => 'The XSUB-writer\'s interface to the C C function. |
949
|
|
|
|
|
|
|
|
950
|
|
|
|
|
|
|
void Renew(void* ptr, int nitems, type)','name' => 'Renew'},'grok_bin' => {'text' => 'converts a string representing a binary number to numeric form. |
951
|
|
|
|
|
|
|
|
952
|
|
|
|
|
|
|
On entry I and I<*len> give the string to scan, I<*flags> gives |
953
|
|
|
|
|
|
|
conversion flags, and I should be NULL or a pointer to an NV. |
954
|
|
|
|
|
|
|
The scan stops at the end of the string, or the first invalid character. |
955
|
|
|
|
|
|
|
Unless C is set in I<*flags>, encountering an |
956
|
|
|
|
|
|
|
invalid character will also trigger a warning. |
957
|
|
|
|
|
|
|
On return I<*len> is set to the length of the scanned string, |
958
|
|
|
|
|
|
|
and I<*flags> gives output flags. |
959
|
|
|
|
|
|
|
|
960
|
|
|
|
|
|
|
If the value is <= C it is returned as a UV, the output flags are clear, |
961
|
|
|
|
|
|
|
and nothing is written to I<*result>. If the value is > UV_MAX C |
962
|
|
|
|
|
|
|
returns UV_MAX, sets C in the output flags, |
963
|
|
|
|
|
|
|
and writes the value to I<*result> (or the value is discarded if I |
964
|
|
|
|
|
|
|
is NULL). |
965
|
|
|
|
|
|
|
|
966
|
|
|
|
|
|
|
The binary number may optionally be prefixed with "0b" or "b" unless |
967
|
|
|
|
|
|
|
C is set in I<*flags> on entry. If |
968
|
|
|
|
|
|
|
C is set in I<*flags> then the binary |
969
|
|
|
|
|
|
|
number may use \'_\' characters to separate digits. |
970
|
|
|
|
|
|
|
|
971
|
|
|
|
|
|
|
UV grok_bin(const char* start, STRLEN* len_p, I32* flags, NV *result)','name' => 'grok_bin'},'perl_free' => {'text' => 'Releases a Perl interpreter. See L. |
972
|
|
|
|
|
|
|
|
973
|
|
|
|
|
|
|
void perl_free(PerlInterpreter* interp)','name' => 'perl_free'},'mg_find' => {'text' => 'Finds the magic pointer for type matching the SV. See C. |
974
|
|
|
|
|
|
|
|
975
|
|
|
|
|
|
|
MAGIC* mg_find(const SV* sv, int type)','name' => 'mg_find'},'SvNOK_on' => {'text' => 'Tells an SV that it is a double. |
976
|
|
|
|
|
|
|
|
977
|
|
|
|
|
|
|
void SvNOK_on(SV* sv)','name' => 'SvNOK_on'},'XPUSHmortal' => {'text' => 'Push a new mortal SV onto the stack, extending the stack if necessary. Does |
978
|
|
|
|
|
|
|
not handle \'set\' magic. Does not use C. See also C, |
979
|
|
|
|
|
|
|
C and C. |
980
|
|
|
|
|
|
|
|
981
|
|
|
|
|
|
|
void XPUSHmortal()','name' => 'XPUSHmortal'},'SvVOK' => {'text' => 'Returns a boolean indicating whether the SV contains a v-string. |
982
|
|
|
|
|
|
|
|
983
|
|
|
|
|
|
|
bool SvVOK(SV* sv)','name' => 'SvVOK'},'newSVpvn_share' => {'text' => 'Creates a new SV with its SvPVX_const pointing to a shared string in the string |
984
|
|
|
|
|
|
|
table. If the string does not already exist in the table, it is created |
985
|
|
|
|
|
|
|
first. Turns on READONLY and FAKE. If the C parameter is non-zero, that |
986
|
|
|
|
|
|
|
value is used; otherwise the hash is computed. The string\'s hash can be later |
987
|
|
|
|
|
|
|
be retrieved from the SV with the C macro. The idea here is |
988
|
|
|
|
|
|
|
that as the string table is used for shared hash keys these strings will have |
989
|
|
|
|
|
|
|
SvPVX_const == HeKEY and hash lookup will avoid string compare. |
990
|
|
|
|
|
|
|
|
991
|
|
|
|
|
|
|
SV* newSVpvn_share(const char* s, I32 len, U32 hash)','name' => 'newSVpvn_share'},'sv_setpvf_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
992
|
|
|
|
|
|
|
|
993
|
|
|
|
|
|
|
void sv_setpvf_mg(SV *sv, const char* pat, ...)','name' => 'sv_setpvf_mg'},'SvPOKp' => {'text' => 'Returns a U32 value indicating whether the SV contains a character string. |
994
|
|
|
|
|
|
|
Checks the B setting. Use C. |
995
|
|
|
|
|
|
|
|
996
|
|
|
|
|
|
|
U32 SvPOKp(SV* sv)','name' => 'SvPOKp'},'sv_catpvn' => {'text' => 'Concatenates the string onto the end of the string which is in the SV. The |
997
|
|
|
|
|
|
|
C indicates number of bytes to copy. If the SV has the UTF-8 |
998
|
|
|
|
|
|
|
status set, then the bytes appended should be valid UTF-8. |
999
|
|
|
|
|
|
|
Handles \'get\' magic, but not \'set\' magic. See C. |
1000
|
|
|
|
|
|
|
|
1001
|
|
|
|
|
|
|
void sv_catpvn(SV* sv, const char* ptr, STRLEN len)','name' => 'sv_catpvn'},'sv_setref_pv' => {'text' => 'Copies a pointer into a new SV, optionally blessing the SV. The C |
1002
|
|
|
|
|
|
|
argument will be upgraded to an RV. That RV will be modified to point to |
1003
|
|
|
|
|
|
|
the new SV. If the C argument is NULL then C will be placed |
1004
|
|
|
|
|
|
|
into the SV. The C argument indicates the package for the |
1005
|
|
|
|
|
|
|
blessing. Set C to C to avoid the blessing. The new SV |
1006
|
|
|
|
|
|
|
will have a reference count of 1, and the RV will be returned. |
1007
|
|
|
|
|
|
|
|
1008
|
|
|
|
|
|
|
Do not use with other Perl types such as HV, AV, SV, CV, because those |
1009
|
|
|
|
|
|
|
objects will become corrupted by the pointer copy process. |
1010
|
|
|
|
|
|
|
|
1011
|
|
|
|
|
|
|
Note that C copies the string while this copies the pointer. |
1012
|
|
|
|
|
|
|
|
1013
|
|
|
|
|
|
|
SV* sv_setref_pv(SV* rv, const char* classname, void* pv)','name' => 'sv_setref_pv'},'fbm_compile' => {'text' => 'Analyses the string in order to make fast searches on it using fbm_instr() |
1014
|
|
|
|
|
|
|
-- the Boyer-Moore algorithm. |
1015
|
|
|
|
|
|
|
|
1016
|
|
|
|
|
|
|
void fbm_compile(SV* sv, U32 flags)','name' => 'fbm_compile'},'sv_utf8_downgrade' => {'text' => 'Attempts to convert the PV of an SV from characters to bytes. |
1017
|
|
|
|
|
|
|
If the PV contains a character beyond byte, this conversion will fail; |
1018
|
|
|
|
|
|
|
in this case, either returns false or, if C is not |
1019
|
|
|
|
|
|
|
true, croaks. |
1020
|
|
|
|
|
|
|
|
1021
|
|
|
|
|
|
|
This is not as a general purpose Unicode to byte encoding interface: |
1022
|
|
|
|
|
|
|
use the Encode extension for that. |
1023
|
|
|
|
|
|
|
|
1024
|
|
|
|
|
|
|
NOTE: this function is experimental and may change or be |
1025
|
|
|
|
|
|
|
removed without notice. |
1026
|
|
|
|
|
|
|
|
1027
|
|
|
|
|
|
|
bool sv_utf8_downgrade(SV *sv, bool fail_ok)','name' => 'sv_utf8_downgrade'},'SvNIOKp' => {'text' => 'Returns a U32 value indicating whether the SV contains a number, integer or |
1028
|
|
|
|
|
|
|
double. Checks the B setting. Use C. |
1029
|
|
|
|
|
|
|
|
1030
|
|
|
|
|
|
|
U32 SvNIOKp(SV* sv)','name' => 'SvNIOKp'},'utf8_hop' => {'text' => 'Return the UTF-8 pointer C displaced by C characters, either |
1031
|
|
|
|
|
|
|
forward or backward. |
1032
|
|
|
|
|
|
|
|
1033
|
|
|
|
|
|
|
WARNING: do not use the following unless you *know* C is within |
1034
|
|
|
|
|
|
|
the UTF-8 data pointed to by C *and* that on entry C is aligned |
1035
|
|
|
|
|
|
|
on the first byte of character or just after the last byte of a character. |
1036
|
|
|
|
|
|
|
|
1037
|
|
|
|
|
|
|
U8* utf8_hop(const U8 *s, I32 off)','name' => 'utf8_hop'},'sv_len_utf8' => {'text' => 'Returns the number of characters in the string in an SV, counting wide |
1038
|
|
|
|
|
|
|
UTF-8 bytes as a single character. Handles magic and type coercion. |
1039
|
|
|
|
|
|
|
|
1040
|
|
|
|
|
|
|
STRLEN sv_len_utf8(SV* sv)','name' => 'sv_len_utf8'},'sv_setref_pvn' => {'text' => 'Copies a string into a new SV, optionally blessing the SV. The length of the |
1041
|
|
|
|
|
|
|
string must be specified with C. The C argument will be upgraded to |
1042
|
|
|
|
|
|
|
an RV. That RV will be modified to point to the new SV. The C |
1043
|
|
|
|
|
|
|
argument indicates the package for the blessing. Set C to |
1044
|
|
|
|
|
|
|
C to avoid the blessing. The new SV will have a reference count |
1045
|
|
|
|
|
|
|
of 1, and the RV will be returned. |
1046
|
|
|
|
|
|
|
|
1047
|
|
|
|
|
|
|
Note that C copies the pointer while this copies the string. |
1048
|
|
|
|
|
|
|
|
1049
|
|
|
|
|
|
|
SV* sv_setref_pvn(SV* rv, const char* classname, const char* pv, STRLEN n)','name' => 'sv_setref_pvn'},'SVt_PVMG' => {'text' => 'Type flag for blessed scalars. See C.','name' => 'SVt_PVMG'},'PUSHp' => {'text' => 'Push a string onto the stack. The stack must have room for this element. |
1050
|
|
|
|
|
|
|
The C indicates the length of the string. Handles \'set\' magic. Uses |
1051
|
|
|
|
|
|
|
C, so C or C should be called to declare it. Do not |
1052
|
|
|
|
|
|
|
call multiple C-oriented macros to return lists from XSUB\'s - see |
1053
|
|
|
|
|
|
|
C instead. See also C and C. |
1054
|
|
|
|
|
|
|
|
1055
|
|
|
|
|
|
|
void PUSHp(char* str, STRLEN len)','name' => 'PUSHp'},'SvREFCNT_inc_simple_void' => {'text' => 'Same as SvREFCNT_inc_simple, but can only be used if you don\'t need the |
1056
|
|
|
|
|
|
|
return value. The macro doesn\'t need to return a meaningful value. |
1057
|
|
|
|
|
|
|
|
1058
|
|
|
|
|
|
|
void SvREFCNT_inc_simple_void(SV* sv)','name' => 'SvREFCNT_inc_simple_void'},'hv_clear_placeholders' => {'text' => 'Clears any placeholders from a hash. If a restricted hash has any of its keys |
1059
|
|
|
|
|
|
|
marked as readonly and the key is subsequently deleted, the key is not actually |
1060
|
|
|
|
|
|
|
deleted but is marked by assigning it a value of &PL_sv_placeholder. This tags |
1061
|
|
|
|
|
|
|
it so it will be ignored by future operations such as iterating over the hash, |
1062
|
|
|
|
|
|
|
but will still allow the hash to have a value reassigned to the key at some |
1063
|
|
|
|
|
|
|
future point. This function clears any such placeholder keys from the hash. |
1064
|
|
|
|
|
|
|
See Hash::Util::lock_keys() for an example of its use. |
1065
|
|
|
|
|
|
|
|
1066
|
|
|
|
|
|
|
void hv_clear_placeholders(HV* hb)','name' => 'hv_clear_placeholders'},'mXPUSHi' => {'text' => 'Push an integer onto the stack, extending the stack if necessary. Handles |
1067
|
|
|
|
|
|
|
\'set\' magic. Does not use C. See also C, C and |
1068
|
|
|
|
|
|
|
C. |
1069
|
|
|
|
|
|
|
|
1070
|
|
|
|
|
|
|
void mXPUSHi(IV iv)','name' => 'mXPUSHi'},'dAX' => {'text' => 'Sets up the C variable. |
1071
|
|
|
|
|
|
|
This is usually handled automatically by C by calling C. |
1072
|
|
|
|
|
|
|
|
1073
|
|
|
|
|
|
|
dAX;','name' => 'dAX'},'PL_sv_undef' => {'text' => 'This is the C SV. Always refer to this as C<&PL_sv_undef>. |
1074
|
|
|
|
|
|
|
|
1075
|
|
|
|
|
|
|
SV PL_sv_undef','name' => 'PL_sv_undef'},'SvRV_set' => {'text' => 'Set the value of the RV pointer in sv to val. See C. |
1076
|
|
|
|
|
|
|
|
1077
|
|
|
|
|
|
|
void SvRV_set(SV* sv, SV* val)','name' => 'SvRV_set'},'hv_iterkeysv' => {'text' => 'Returns the key as an C from the current position of the hash |
1078
|
|
|
|
|
|
|
iterator. The return value will always be a mortal copy of the key. Also |
1079
|
|
|
|
|
|
|
see C. |
1080
|
|
|
|
|
|
|
|
1081
|
|
|
|
|
|
|
SV* hv_iterkeysv(HE* entry)','name' => 'hv_iterkeysv'},'grok_number' => {'text' => 'Recognise (or not) a number. The type of the number is returned |
1082
|
|
|
|
|
|
|
(0 if unrecognised), otherwise it is a bit-ORed combination of |
1083
|
|
|
|
|
|
|
IS_NUMBER_IN_UV, IS_NUMBER_GREATER_THAN_UV_MAX, IS_NUMBER_NOT_INT, |
1084
|
|
|
|
|
|
|
IS_NUMBER_NEG, IS_NUMBER_INFINITY, IS_NUMBER_NAN (defined in perl.h). |
1085
|
|
|
|
|
|
|
|
1086
|
|
|
|
|
|
|
If the value of the number can fit an in UV, it is returned in the *valuep |
1087
|
|
|
|
|
|
|
IS_NUMBER_IN_UV will be set to indicate that *valuep is valid, IS_NUMBER_IN_UV |
1088
|
|
|
|
|
|
|
will never be set unless *valuep is valid, but *valuep may have been assigned |
1089
|
|
|
|
|
|
|
to during processing even though IS_NUMBER_IN_UV is not set on return. |
1090
|
|
|
|
|
|
|
If valuep is NULL, IS_NUMBER_IN_UV will be set for the same cases as when |
1091
|
|
|
|
|
|
|
valuep is non-NULL, but no actual assignment (or SEGV) will occur. |
1092
|
|
|
|
|
|
|
|
1093
|
|
|
|
|
|
|
IS_NUMBER_NOT_INT will be set with IS_NUMBER_IN_UV if trailing decimals were |
1094
|
|
|
|
|
|
|
seen (in which case *valuep gives the true value truncated to an integer), and |
1095
|
|
|
|
|
|
|
IS_NUMBER_NEG if the number is negative (in which case *valuep holds the |
1096
|
|
|
|
|
|
|
absolute value). IS_NUMBER_IN_UV is not set if e notation was used or the |
1097
|
|
|
|
|
|
|
number is larger than a UV. |
1098
|
|
|
|
|
|
|
|
1099
|
|
|
|
|
|
|
int grok_number(const char *pv, STRLEN len, UV *valuep)','name' => 'grok_number'},'SvIVx' => {'text' => 'Coerces the given SV to an integer and returns it. Guarantees to evaluate |
1100
|
|
|
|
|
|
|
C only once. Only use this if C is an expression with side effects, |
1101
|
|
|
|
|
|
|
otherwise use the more efficient C. |
1102
|
|
|
|
|
|
|
|
1103
|
|
|
|
|
|
|
IV SvIVx(SV* sv)','name' => 'SvIVx'},'grok_numeric_radix' => {'text' => 'Scan and skip for a numeric decimal separator (radix). |
1104
|
|
|
|
|
|
|
|
1105
|
|
|
|
|
|
|
bool grok_numeric_radix(const char **sp, const char *send)','name' => 'grok_numeric_radix'},'XST_mNO' => {'text' => 'Place C<&PL_sv_no> into the specified position C on the |
1106
|
|
|
|
|
|
|
stack. |
1107
|
|
|
|
|
|
|
|
1108
|
|
|
|
|
|
|
void XST_mNO(int pos)','name' => 'XST_mNO'},'mPUSHp' => {'text' => 'Push a string onto the stack. The stack must have room for this element. |
1109
|
|
|
|
|
|
|
The C indicates the length of the string. Handles \'set\' magic. Does |
1110
|
|
|
|
|
|
|
not use C. See also C, C and C. |
1111
|
|
|
|
|
|
|
|
1112
|
|
|
|
|
|
|
void mPUSHp(char* str, STRLEN len)','name' => 'mPUSHp'},'av_delete' => {'text' => 'Deletes the element indexed by C from the array. Returns the |
1113
|
|
|
|
|
|
|
deleted element. If C equals C, the element is freed |
1114
|
|
|
|
|
|
|
and null is returned. |
1115
|
|
|
|
|
|
|
|
1116
|
|
|
|
|
|
|
SV* av_delete(AV* ar, I32 key, I32 flags)','name' => 'av_delete'},'utf8_distance' => {'text' => 'Returns the number of UTF-8 characters between the UTF-8 pointers C |
1117
|
|
|
|
|
|
|
and C. |
1118
|
|
|
|
|
|
|
|
1119
|
|
|
|
|
|
|
WARNING: use only if you *know* that the pointers point inside the |
1120
|
|
|
|
|
|
|
same UTF-8 buffer. |
1121
|
|
|
|
|
|
|
|
1122
|
|
|
|
|
|
|
IV utf8_distance(const U8 *a, const U8 *b)','name' => 'utf8_distance'},'SvPV_nomg' => {'text' => 'Like C but doesn\'t process magic. |
1123
|
|
|
|
|
|
|
|
1124
|
|
|
|
|
|
|
char* SvPV_nomg(SV* sv, STRLEN len)','name' => 'SvPV_nomg'},'savepvs' => {'text' => 'Like C, but takes a literal string instead of a string/length pair. |
1125
|
|
|
|
|
|
|
|
1126
|
|
|
|
|
|
|
char* savepvs(const char* s)','name' => 'savepvs'},'SvSTASH_set' => {'text' => 'Set the value of the STASH pointer in sv to val. See C. |
1127
|
|
|
|
|
|
|
|
1128
|
|
|
|
|
|
|
void SvSTASH_set(SV* sv, HV* val)','name' => 'SvSTASH_set'},'sv_collxfrm' => {'text' => 'Add Collate Transform magic to an SV if it doesn\'t already have it. |
1129
|
|
|
|
|
|
|
|
1130
|
|
|
|
|
|
|
Any scalar variable may carry PERL_MAGIC_collxfrm magic that contains the |
1131
|
|
|
|
|
|
|
scalar data of the variable, but transformed to such a format that a normal |
1132
|
|
|
|
|
|
|
memory comparison can be used to compare the data according to the locale |
1133
|
|
|
|
|
|
|
settings. |
1134
|
|
|
|
|
|
|
|
1135
|
|
|
|
|
|
|
char* sv_collxfrm(SV* sv, STRLEN* nxp)','name' => 'sv_collxfrm'},'ZeroD' => {'text' => 'Like C but returns dest. Useful for encouraging compilers to tail-call |
1136
|
|
|
|
|
|
|
optimise. |
1137
|
|
|
|
|
|
|
|
1138
|
|
|
|
|
|
|
void * ZeroD(void* dest, int nitems, type)','name' => 'ZeroD'},'SvUV_nomg' => {'text' => 'Like C but doesn\'t process magic. |
1139
|
|
|
|
|
|
|
|
1140
|
|
|
|
|
|
|
UV SvUV_nomg(SV* sv)','name' => 'SvUV_nomg'},'SP' => {'text' => 'Stack pointer. This is usually handled by C. See C and |
1141
|
|
|
|
|
|
|
C.','name' => 'SP'},'sv_catpvn_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
1142
|
|
|
|
|
|
|
|
1143
|
|
|
|
|
|
|
void sv_catpvn_mg(SV *sv, const char *ptr, STRLEN len)','name' => 'sv_catpvn_mg'},'POPpx' => {'text' => 'Pops a string off the stack. |
1144
|
|
|
|
|
|
|
|
1145
|
|
|
|
|
|
|
char* POPpx','name' => 'POPpx'},'SvSTASH' => {'text' => 'Returns the stash of the SV. |
1146
|
|
|
|
|
|
|
|
1147
|
|
|
|
|
|
|
HV* SvSTASH(SV* sv)','name' => 'SvSTASH'},'gv_stashpvs' => {'text' => 'Like C, but takes a literal string instead of a string/length pair. |
1148
|
|
|
|
|
|
|
|
1149
|
|
|
|
|
|
|
HV* gv_stashpvs(const char* name, I32 create)','name' => 'gv_stashpvs'},'Zero' => {'text' => 'The XSUB-writer\'s interface to the C C function. The C is the |
1150
|
|
|
|
|
|
|
destination, C is the number of items, and C is the type. |
1151
|
|
|
|
|
|
|
|
1152
|
|
|
|
|
|
|
void Zero(void* dest, int nitems, type)','name' => 'Zero'},'vcmp' => {'text' => 'Version object aware cmp. Both operands must already have been |
1153
|
|
|
|
|
|
|
converted into version objects. |
1154
|
|
|
|
|
|
|
|
1155
|
|
|
|
|
|
|
int vcmp(SV *lvs, SV *rvs)','name' => 'vcmp'},'PL_modglobal' => {'text' => 'C is a general purpose, interpreter global HV for use by |
1156
|
|
|
|
|
|
|
extensions that need to keep information on a per-interpreter basis. |
1157
|
|
|
|
|
|
|
In a pinch, it can also be used as a symbol table for extensions |
1158
|
|
|
|
|
|
|
to share data among each other. It is a good idea to use keys |
1159
|
|
|
|
|
|
|
prefixed by the package name of the extension that owns the data. |
1160
|
|
|
|
|
|
|
|
1161
|
|
|
|
|
|
|
HV* PL_modglobal','name' => 'PL_modglobal'},'sv_setpvs' => {'text' => 'Like C, but takes a literal string instead of a string/length pair. |
1162
|
|
|
|
|
|
|
|
1163
|
|
|
|
|
|
|
void sv_setpvs(SV* sv, const char* s)','name' => 'sv_setpvs'},'XSRETURN_UNDEF' => {'text' => 'Return C<&PL_sv_undef> from an XSUB immediately. Uses C. |
1164
|
|
|
|
|
|
|
|
1165
|
|
|
|
|
|
|
XSRETURN_UNDEF;','name' => 'XSRETURN_UNDEF'},'sv_iv' => {'text' => 'A private implementation of the C macro for compilers which can\'t |
1166
|
|
|
|
|
|
|
cope with complex macro expressions. Always use the macro instead. |
1167
|
|
|
|
|
|
|
|
1168
|
|
|
|
|
|
|
IV sv_iv(SV* sv)','name' => 'sv_iv'},'pv_escape' => {'text' => '|const STRLEN count|const STRLEN max |
1169
|
|
|
|
|
|
|
|STRLEN const *escaped, const U32 flags |
1170
|
|
|
|
|
|
|
|
1171
|
|
|
|
|
|
|
Escapes at most the first "count" chars of pv and puts the results into |
1172
|
|
|
|
|
|
|
dsv such that the size of the escaped string will not exceed "max" chars |
1173
|
|
|
|
|
|
|
and will not contain any incomplete escape sequences. |
1174
|
|
|
|
|
|
|
|
1175
|
|
|
|
|
|
|
If flags contains PERL_PV_ESCAPE_QUOTE then any double quotes in the string |
1176
|
|
|
|
|
|
|
will also be escaped. |
1177
|
|
|
|
|
|
|
|
1178
|
|
|
|
|
|
|
Normally the SV will be cleared before the escaped string is prepared, |
1179
|
|
|
|
|
|
|
but when PERL_PV_ESCAPE_NOCLEAR is set this will not occur. |
1180
|
|
|
|
|
|
|
|
1181
|
|
|
|
|
|
|
If PERL_PV_ESCAPE_UNI is set then the input string is treated as Unicode, |
1182
|
|
|
|
|
|
|
if PERL_PV_ESCAPE_UNI_DETECT is set then the input string is scanned |
1183
|
|
|
|
|
|
|
using C to determine if it is Unicode. |
1184
|
|
|
|
|
|
|
|
1185
|
|
|
|
|
|
|
If PERL_PV_ESCAPE_ALL is set then all input chars will be output |
1186
|
|
|
|
|
|
|
using C<\\x01F1> style escapes, otherwise only chars above 255 will be |
1187
|
|
|
|
|
|
|
escaped using this style, other non printable chars will use octal or |
1188
|
|
|
|
|
|
|
common escaped patterns like C<\\n>. If PERL_PV_ESCAPE_NOBACKSLASH |
1189
|
|
|
|
|
|
|
then all chars below 255 will be treated as printable and |
1190
|
|
|
|
|
|
|
will be output as literals. |
1191
|
|
|
|
|
|
|
|
1192
|
|
|
|
|
|
|
If PERL_PV_ESCAPE_FIRSTCHAR is set then only the first char of the |
1193
|
|
|
|
|
|
|
string will be escaped, regardles of max. If the string is utf8 and |
1194
|
|
|
|
|
|
|
the chars value is >255 then it will be returned as a plain hex |
1195
|
|
|
|
|
|
|
sequence. Thus the output will either be a single char, |
1196
|
|
|
|
|
|
|
an octal escape sequence, a special escape like C<\\n> or a 3 or |
1197
|
|
|
|
|
|
|
more digit hex value. |
1198
|
|
|
|
|
|
|
|
1199
|
|
|
|
|
|
|
If PERL_PV_ESCAPE_RE is set then the escape char used will be a \'%\' and |
1200
|
|
|
|
|
|
|
not a \'\\\\\'. This is because regexes very often contain backslashed |
1201
|
|
|
|
|
|
|
sequences, whereas \'%\' is not a particularly common character in patterns. |
1202
|
|
|
|
|
|
|
|
1203
|
|
|
|
|
|
|
Returns a pointer to the escaped text as held by dsv. |
1204
|
|
|
|
|
|
|
|
1205
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
1206
|
|
|
|
|
|
|
|
1207
|
|
|
|
|
|
|
char* pv_escape(SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags)','name' => 'pv_escape'},'HeSVKEY_force' => {'text' => 'Returns the key as an C. Will create and return a temporary mortal |
1208
|
|
|
|
|
|
|
C if the hash entry contains only a C key. |
1209
|
|
|
|
|
|
|
|
1210
|
|
|
|
|
|
|
SV* HeSVKEY_force(HE* he)','name' => 'HeSVKEY_force'},'newRV_inc' => {'text' => 'Creates an RV wrapper for an SV. The reference count for the original SV is |
1211
|
|
|
|
|
|
|
incremented. |
1212
|
|
|
|
|
|
|
|
1213
|
|
|
|
|
|
|
SV* newRV_inc(SV* sv)','name' => 'newRV_inc'},'SVt_PVCV' => {'text' => 'Type flag for code refs. See C.','name' => 'SVt_PVCV'},'sv_setpviv_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
1214
|
|
|
|
|
|
|
|
1215
|
|
|
|
|
|
|
void sv_setpviv_mg(SV *sv, IV iv)','name' => 'sv_setpviv_mg'},'SvUVx' => {'text' => 'Coerces the given SV to an unsigned integer and returns it. Guarantees to |
1216
|
|
|
|
|
|
|
C only once. Only use this if C is an expression with side effects, |
1217
|
|
|
|
|
|
|
otherwise use the more efficient C. |
1218
|
|
|
|
|
|
|
|
1219
|
|
|
|
|
|
|
UV SvUVx(SV* sv)','name' => 'SvUVx'},'SvROK_on' => {'text' => 'Tells an SV that it is an RV. |
1220
|
|
|
|
|
|
|
|
1221
|
|
|
|
|
|
|
void SvROK_on(SV* sv)','name' => 'SvROK_on'},'sv_2bool' => {'text' => 'This function is only called on magical items, and is only used by |
1222
|
|
|
|
|
|
|
sv_true() or its macro equivalent. |
1223
|
|
|
|
|
|
|
|
1224
|
|
|
|
|
|
|
bool sv_2bool(SV* sv)','name' => 'sv_2bool'},'G_VOID' => {'text' => 'Used to indicate void context. See C and L.','name' => 'G_VOID'},'dORIGMARK' => {'text' => 'Saves the original stack mark for the XSUB. See C. |
1225
|
|
|
|
|
|
|
|
1226
|
|
|
|
|
|
|
dORIGMARK;','name' => 'dORIGMARK'},'sv_newmortal' => {'text' => 'Creates a new null SV which is mortal. The reference count of the SV is |
1227
|
|
|
|
|
|
|
set to 1. It will be destroyed "soon", either by an explicit call to |
1228
|
|
|
|
|
|
|
FREETMPS, or by an implicit call at places such as statement boundaries. |
1229
|
|
|
|
|
|
|
See also C and C. |
1230
|
|
|
|
|
|
|
|
1231
|
|
|
|
|
|
|
SV* sv_newmortal()','name' => 'sv_newmortal'},'sv_clear' => {'text' => 'Clear an SV: call any destructors, free up any memory used by the body, |
1232
|
|
|
|
|
|
|
and free the body itself. The SV\'s head is I freed, although |
1233
|
|
|
|
|
|
|
its type is set to all 1\'s so that it won\'t inadvertently be assumed |
1234
|
|
|
|
|
|
|
to be live during global destruction etc. |
1235
|
|
|
|
|
|
|
This function should only be called when REFCNT is zero. Most of the time |
1236
|
|
|
|
|
|
|
you\'ll want to call C (or its macro wrapper C) |
1237
|
|
|
|
|
|
|
instead. |
1238
|
|
|
|
|
|
|
|
1239
|
|
|
|
|
|
|
void sv_clear(SV* sv)','name' => 'sv_clear'},'SvOOK' => {'text' => 'Returns a U32 indicating whether the SvIVX is a valid offset value for |
1240
|
|
|
|
|
|
|
the SvPVX. This hack is used internally to speed up removal of characters |
1241
|
|
|
|
|
|
|
from the beginning of a SvPV. When SvOOK is true, then the start of the |
1242
|
|
|
|
|
|
|
allocated string buffer is really (SvPVX - SvIVX). |
1243
|
|
|
|
|
|
|
|
1244
|
|
|
|
|
|
|
U32 SvOOK(SV* sv)','name' => 'SvOOK'},'SvPV_set' => {'text' => 'Set the value of the PV pointer in sv to val. See C. |
1245
|
|
|
|
|
|
|
|
1246
|
|
|
|
|
|
|
void SvPV_set(SV* sv, char* val)','name' => 'SvPV_set'},'XSRETURN_NV' => {'text' => 'Return a double from an XSUB immediately. Uses C. |
1247
|
|
|
|
|
|
|
|
1248
|
|
|
|
|
|
|
void XSRETURN_NV(NV nv)','name' => 'XSRETURN_NV'},'SvGAMAGIC' => {'text' => 'Returns true if the SV has get magic or overloading. If either is true then |
1249
|
|
|
|
|
|
|
the scalar is active data, and has the potential to return a new value every |
1250
|
|
|
|
|
|
|
time it is accessed. Hence you must be careful to only read it once per user |
1251
|
|
|
|
|
|
|
logical operation and work with that returned value. If neither is true then |
1252
|
|
|
|
|
|
|
the scalar\'s value cannot change unless written to. |
1253
|
|
|
|
|
|
|
|
1254
|
|
|
|
|
|
|
char* SvGAMAGIC(SV* sv)','name' => 'SvGAMAGIC'},'svtype' => {'text' => 'An enum of flags for Perl types. These are found in the file B |
1255
|
|
|
|
|
|
|
in the C enum. Test these flags with the C macro.','name' => 'svtype'},'load_module' => {'text' => 'Loads the module whose name is pointed to by the string part of name. |
1256
|
|
|
|
|
|
|
Note that the actual module name, not its filename, should be given. |
1257
|
|
|
|
|
|
|
Eg, "Foo::Bar" instead of "Foo/Bar.pm". flags can be any of |
1258
|
|
|
|
|
|
|
PERL_LOADMOD_DENY, PERL_LOADMOD_NOIMPORT, or PERL_LOADMOD_IMPORT_OPS |
1259
|
|
|
|
|
|
|
(or 0 for no flags). ver, if specified, provides version semantics |
1260
|
|
|
|
|
|
|
similar to C |
1261
|
|
|
|
|
|
|
arguments can be used to specify arguments to the module\'s import() |
1262
|
|
|
|
|
|
|
method, similar to C |
1263
|
|
|
|
|
|
|
|
1264
|
|
|
|
|
|
|
void load_module(U32 flags, SV* name, SV* ver, ...)','name' => 'load_module'},'get_hv' => {'text' => 'Returns the HV of the specified Perl hash. If C is set and the |
1265
|
|
|
|
|
|
|
Perl variable does not exist then it will be created. If C is not |
1266
|
|
|
|
|
|
|
set and the variable does not exist then NULL is returned. |
1267
|
|
|
|
|
|
|
|
1268
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
1269
|
|
|
|
|
|
|
|
1270
|
|
|
|
|
|
|
HV* get_hv(const char* name, I32 create)','name' => 'get_hv'},'hv_clear' => {'text' => 'Clears a hash, making it empty. |
1271
|
|
|
|
|
|
|
|
1272
|
|
|
|
|
|
|
void hv_clear(HV* tb)','name' => 'hv_clear'},'PoisonNew' => {'text' => 'PoisonWith(0xAB) for catching access to allocated but uninitialized memory. |
1273
|
|
|
|
|
|
|
|
1274
|
|
|
|
|
|
|
void PoisonNew(void* dest, int nitems, type)','name' => 'PoisonNew'},'XSRETURN_YES' => {'text' => 'Return C<&PL_sv_yes> from an XSUB immediately. Uses C. |
1275
|
|
|
|
|
|
|
|
1276
|
|
|
|
|
|
|
XSRETURN_YES;','name' => 'XSRETURN_YES'},'sv_nv' => {'text' => 'A private implementation of the C macro for compilers which can\'t |
1277
|
|
|
|
|
|
|
cope with complex macro expressions. Always use the macro instead. |
1278
|
|
|
|
|
|
|
|
1279
|
|
|
|
|
|
|
NV sv_nv(SV* sv)','name' => 'sv_nv'},'Poison' => {'text' => 'PoisonWith(0xEF) for catching access to freed memory. |
1280
|
|
|
|
|
|
|
|
1281
|
|
|
|
|
|
|
void Poison(void* dest, int nitems, type)','name' => 'Poison'},'Renewc' => {'text' => 'The XSUB-writer\'s interface to the C C function, with |
1282
|
|
|
|
|
|
|
cast. |
1283
|
|
|
|
|
|
|
|
1284
|
|
|
|
|
|
|
void Renewc(void* ptr, int nitems, type, cast)','name' => 'Renewc'},'sv_catpvf_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
1285
|
|
|
|
|
|
|
|
1286
|
|
|
|
|
|
|
void sv_catpvf_mg(SV *sv, const char* pat, ...)','name' => 'sv_catpvf_mg'},'PUSHu' => {'text' => 'Push an unsigned integer onto the stack. The stack must have room for this |
1287
|
|
|
|
|
|
|
element. Handles \'set\' magic. Uses C, so C or C |
1288
|
|
|
|
|
|
|
should be called to declare it. Do not call multiple C-oriented |
1289
|
|
|
|
|
|
|
macros to return lists from XSUB\'s - see C instead. See also |
1290
|
|
|
|
|
|
|
C and C. |
1291
|
|
|
|
|
|
|
|
1292
|
|
|
|
|
|
|
void PUSHu(UV uv)','name' => 'PUSHu'},'get_sv' => {'text' => 'Returns the SV of the specified Perl scalar. If C is set and the |
1293
|
|
|
|
|
|
|
Perl variable does not exist then it will be created. If C is not |
1294
|
|
|
|
|
|
|
set and the variable does not exist then NULL is returned. |
1295
|
|
|
|
|
|
|
|
1296
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
1297
|
|
|
|
|
|
|
|
1298
|
|
|
|
|
|
|
SV* get_sv(const char* name, I32 create)','name' => 'get_sv'},'SvPOK_off' => {'text' => 'Unsets the PV status of an SV. |
1299
|
|
|
|
|
|
|
|
1300
|
|
|
|
|
|
|
void SvPOK_off(SV* sv)','name' => 'SvPOK_off'},'newSVsv' => {'text' => 'Creates a new SV which is an exact duplicate of the original SV. |
1301
|
|
|
|
|
|
|
(Uses C). |
1302
|
|
|
|
|
|
|
|
1303
|
|
|
|
|
|
|
SV* newSVsv(SV* old)','name' => 'newSVsv'},'hv_magic' => {'text' => 'Adds magic to a hash. See C. |
1304
|
|
|
|
|
|
|
|
1305
|
|
|
|
|
|
|
void hv_magic(HV* hv, GV* gv, int how)','name' => 'hv_magic'},'sv_setpv_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
1306
|
|
|
|
|
|
|
|
1307
|
|
|
|
|
|
|
void sv_setpv_mg(SV *sv, const char *ptr)','name' => 'sv_setpv_mg'},'sv_2mortal' => {'text' => 'Marks an existing SV as mortal. The SV will be destroyed "soon", either |
1308
|
|
|
|
|
|
|
by an explicit call to FREETMPS, or by an implicit call at places such as |
1309
|
|
|
|
|
|
|
statement boundaries. SvTEMP() is turned on which means that the SV\'s |
1310
|
|
|
|
|
|
|
string buffer can be "stolen" if this SV is copied. See also C |
1311
|
|
|
|
|
|
|
and C. |
1312
|
|
|
|
|
|
|
|
1313
|
|
|
|
|
|
|
SV* sv_2mortal(SV* sv)','name' => 'sv_2mortal'},'XCPT_TRY_END' => {'text' => 'Ends a try block. See L.','name' => 'XCPT_TRY_END'},'av_undef' => {'text' => 'Undefines the array. Frees the memory used by the array itself. |
1314
|
|
|
|
|
|
|
|
1315
|
|
|
|
|
|
|
void av_undef(AV* ar)','name' => 'av_undef'},'HeKEY' => {'text' => 'Returns the actual pointer stored in the key slot of the hash entry. The |
1316
|
|
|
|
|
|
|
pointer may be either C or C, depending on the value of |
1317
|
|
|
|
|
|
|
C. Can be assigned to. The C or C macros are |
1318
|
|
|
|
|
|
|
usually preferable for finding the value of a key. |
1319
|
|
|
|
|
|
|
|
1320
|
|
|
|
|
|
|
void* HeKEY(HE* he)','name' => 'HeKEY'},'pack_cat' => {'text' => 'The engine implementing pack() Perl function. Note: parameters next_in_list and |
1321
|
|
|
|
|
|
|
flags are not used. This call should not be used; use packlist instead. |
1322
|
|
|
|
|
|
|
|
1323
|
|
|
|
|
|
|
void pack_cat(SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags)','name' => 'pack_cat'},'sv_cmp' => {'text' => 'Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the |
1324
|
|
|
|
|
|
|
string in C is less than, equal to, or greater than the string in |
1325
|
|
|
|
|
|
|
C. Is UTF-8 and \'use bytes\' aware, handles get magic, and will |
1326
|
|
|
|
|
|
|
coerce its args to strings if necessary. See also C. |
1327
|
|
|
|
|
|
|
|
1328
|
|
|
|
|
|
|
I32 sv_cmp(SV* sv1, SV* sv2)','name' => 'sv_cmp'},'SvEND' => {'text' => 'Returns a pointer to the last character in the string which is in the SV. |
1329
|
|
|
|
|
|
|
See C. Access the character as *(SvEND(sv)). |
1330
|
|
|
|
|
|
|
|
1331
|
|
|
|
|
|
|
char* SvEND(SV* sv)','name' => 'SvEND'},'mg_free' => {'text' => 'Free any magic storage used by the SV. See C. |
1332
|
|
|
|
|
|
|
|
1333
|
|
|
|
|
|
|
int mg_free(SV* sv)','name' => 'mg_free'},'GIMME_V' => {'text' => 'The XSUB-writer\'s equivalent to Perl\'s C. Returns C, |
1334
|
|
|
|
|
|
|
C or C for void, scalar or list context, |
1335
|
|
|
|
|
|
|
respectively. |
1336
|
|
|
|
|
|
|
|
1337
|
|
|
|
|
|
|
U32 GIMME_V','name' => 'GIMME_V'},'sv_force_normal_flags' => {'text' => 'Undo various types of fakery on an SV: if the PV is a shared string, make |
1338
|
|
|
|
|
|
|
a private copy; if we\'re a ref, stop refing; if we\'re a glob, downgrade to |
1339
|
|
|
|
|
|
|
an xpvmg; if we\'re a copy-on-write scalar, this is the on-write time when |
1340
|
|
|
|
|
|
|
we do the copy, and is also used locally. If C is set |
1341
|
|
|
|
|
|
|
then a copy-on-write scalar drops its PV buffer (if any) and becomes |
1342
|
|
|
|
|
|
|
SvPOK_off rather than making a copy. (Used where this scalar is about to be |
1343
|
|
|
|
|
|
|
set to some other value.) In addition, the C parameter gets passed to |
1344
|
|
|
|
|
|
|
C when unrefing. C calls this function |
1345
|
|
|
|
|
|
|
with flags set to 0. |
1346
|
|
|
|
|
|
|
|
1347
|
|
|
|
|
|
|
void sv_force_normal_flags(SV *sv, U32 flags)','name' => 'sv_force_normal_flags'},'sv_setsv_flags' => {'text' => 'Copies the contents of the source SV C into the destination SV |
1348
|
|
|
|
|
|
|
C. The source SV may be destroyed if it is mortal, so don\'t use this |
1349
|
|
|
|
|
|
|
function if the source SV needs to be reused. Does not handle \'set\' magic. |
1350
|
|
|
|
|
|
|
Loosely speaking, it performs a copy-by-value, obliterating any previous |
1351
|
|
|
|
|
|
|
content of the destination. |
1352
|
|
|
|
|
|
|
If the C parameter has the C bit set, will C on |
1353
|
|
|
|
|
|
|
C if appropriate, else not. If the C parameter has the |
1354
|
|
|
|
|
|
|
C bit set then the buffers of temps will not be stolen. |
1355
|
|
|
|
|
|
|
and C are implemented in terms of this function. |
1356
|
|
|
|
|
|
|
|
1357
|
|
|
|
|
|
|
You probably want to use one of the assortment of wrappers, such as |
1358
|
|
|
|
|
|
|
C, C, C and |
1359
|
|
|
|
|
|
|
C. |
1360
|
|
|
|
|
|
|
|
1361
|
|
|
|
|
|
|
This is the primary function for copying scalars, and most other |
1362
|
|
|
|
|
|
|
copy-ish functions and macros use this underneath. |
1363
|
|
|
|
|
|
|
|
1364
|
|
|
|
|
|
|
void sv_setsv_flags(SV* dsv, SV* ssv, I32 flags)','name' => 'sv_setsv_flags'},'is_utf8_char' => {'text' => 'Tests if some arbitrary number of bytes begins in a valid UTF-8 |
1365
|
|
|
|
|
|
|
character. Note that an INVARIANT (i.e. ASCII) character is a valid |
1366
|
|
|
|
|
|
|
UTF-8 character. The actual number of bytes in the UTF-8 character |
1367
|
|
|
|
|
|
|
will be returned if it is valid, otherwise 0. |
1368
|
|
|
|
|
|
|
|
1369
|
|
|
|
|
|
|
STRLEN is_utf8_char(const U8 *p)','name' => 'is_utf8_char'},'Copy' => {'text' => 'The XSUB-writer\'s interface to the C C function. The C is the |
1370
|
|
|
|
|
|
|
source, C is the destination, C is the number of items, and C is |
1371
|
|
|
|
|
|
|
the type. May fail on overlapping copies. See also C. |
1372
|
|
|
|
|
|
|
|
1373
|
|
|
|
|
|
|
void Copy(void* src, void* dest, int nitems, type)','name' => 'Copy'},'sv_taint' => {'text' => 'Taint an SV. Use C instead. |
1374
|
|
|
|
|
|
|
void sv_taint(SV* sv)','name' => 'sv_taint'},'SvNOK_off' => {'text' => 'Unsets the NV status of an SV. |
1375
|
|
|
|
|
|
|
|
1376
|
|
|
|
|
|
|
void SvNOK_off(SV* sv)','name' => 'SvNOK_off'},'sv_utf8_upgrade' => {'text' => 'Converts the PV of an SV to its UTF-8-encoded form. |
1377
|
|
|
|
|
|
|
Forces the SV to string form if it is not already. |
1378
|
|
|
|
|
|
|
Always sets the SvUTF8 flag to avoid future validity checks even |
1379
|
|
|
|
|
|
|
if all the bytes have hibit clear. |
1380
|
|
|
|
|
|
|
|
1381
|
|
|
|
|
|
|
This is not as a general purpose byte encoding to Unicode interface: |
1382
|
|
|
|
|
|
|
use the Encode extension for that. |
1383
|
|
|
|
|
|
|
|
1384
|
|
|
|
|
|
|
STRLEN sv_utf8_upgrade(SV *sv)','name' => 'sv_utf8_upgrade'},'SvIOK_notUV' => {'text' => 'Returns a boolean indicating whether the SV contains a signed integer. |
1385
|
|
|
|
|
|
|
|
1386
|
|
|
|
|
|
|
bool SvIOK_notUV(SV* sv)','name' => 'SvIOK_notUV'},'dXSARGS' => {'text' => 'Sets up stack and mark pointers for an XSUB, calling dSP and dMARK. |
1387
|
|
|
|
|
|
|
Sets up the C and C variables by calling C and C. |
1388
|
|
|
|
|
|
|
This is usually handled automatically by C. |
1389
|
|
|
|
|
|
|
|
1390
|
|
|
|
|
|
|
dXSARGS;','name' => 'dXSARGS'},'savesharedpv' => {'text' => 'A version of C which allocates the duplicate string in memory |
1391
|
|
|
|
|
|
|
which is shared between threads. |
1392
|
|
|
|
|
|
|
|
1393
|
|
|
|
|
|
|
char* savesharedpv(const char* pv)','name' => 'savesharedpv'},'isSPACE' => {'text' => 'Returns a boolean indicating whether the C C is whitespace. |
1394
|
|
|
|
|
|
|
|
1395
|
|
|
|
|
|
|
bool isSPACE(char ch)','name' => 'isSPACE'},'Safefree' => {'text' => 'The XSUB-writer\'s interface to the C C function. |
1396
|
|
|
|
|
|
|
|
1397
|
|
|
|
|
|
|
void Safefree(void* ptr)','name' => 'Safefree'},'gv_stashpvn' => {'text' => 'Returns a pointer to the stash for a specified package. The C |
1398
|
|
|
|
|
|
|
parameter indicates the length of the C, in bytes. C is passed |
1399
|
|
|
|
|
|
|
to C, so if set to C then the package will be |
1400
|
|
|
|
|
|
|
created if it does not already exist. If the package does not exist and |
1401
|
|
|
|
|
|
|
C is 0 (or any other setting that does not create packages) then NULL |
1402
|
|
|
|
|
|
|
is returned. |
1403
|
|
|
|
|
|
|
|
1404
|
|
|
|
|
|
|
|
1405
|
|
|
|
|
|
|
HV* gv_stashpvn(const char* name, U32 namelen, I32 flags)','name' => 'gv_stashpvn'},'mPUSHu' => {'text' => 'Push an unsigned integer onto the stack. The stack must have room for this |
1406
|
|
|
|
|
|
|
element. Handles \'set\' magic. Does not use C. See also C, |
1407
|
|
|
|
|
|
|
C and C. |
1408
|
|
|
|
|
|
|
|
1409
|
|
|
|
|
|
|
void mPUSHu(UV uv)','name' => 'mPUSHu'},'newSV_type' => {'text' => 'Creates a new SV, of the type specified. The reference count for the new SV |
1410
|
|
|
|
|
|
|
is set to 1. |
1411
|
|
|
|
|
|
|
|
1412
|
|
|
|
|
|
|
SV* newSV_type(svtype type)','name' => 'newSV_type'},'sv_setsv_nomg' => {'text' => 'Like C but doesn\'t process magic. |
1413
|
|
|
|
|
|
|
|
1414
|
|
|
|
|
|
|
void sv_setsv_nomg(SV* dsv, SV* ssv)','name' => 'sv_setsv_nomg'},'SvREFCNT_inc_void_NN' => {'text' => 'Same as SvREFCNT_inc, but can only be used if you don\'t need the return |
1415
|
|
|
|
|
|
|
value, and you know that I is not NULL. The macro doesn\'t need |
1416
|
|
|
|
|
|
|
to return a meaningful value, or check for NULLness, so it\'s smaller |
1417
|
|
|
|
|
|
|
and faster. |
1418
|
|
|
|
|
|
|
|
1419
|
|
|
|
|
|
|
void SvREFCNT_inc_void_NN(SV* sv)','name' => 'SvREFCNT_inc_void_NN'},'Perl_signbit' => {'text' => 'Return a non-zero integer if the sign bit on an NV is set, and 0 if |
1420
|
|
|
|
|
|
|
it is not. |
1421
|
|
|
|
|
|
|
|
1422
|
|
|
|
|
|
|
If Configure detects this system has a signbit() that will work with |
1423
|
|
|
|
|
|
|
our NVs, then we just use it via the #define in perl.h. Otherwise, |
1424
|
|
|
|
|
|
|
fall back on this implementation. As a first pass, this gets everything |
1425
|
|
|
|
|
|
|
right except -0.0. Alas, catching -0.0 is the main use for this function, |
1426
|
|
|
|
|
|
|
so this is not too helpful yet. Still, at least we have the scaffolding |
1427
|
|
|
|
|
|
|
in place to support other systems, should that prove useful. |
1428
|
|
|
|
|
|
|
|
1429
|
|
|
|
|
|
|
|
1430
|
|
|
|
|
|
|
Configure notes: This function is called \'Perl_signbit\' instead of a |
1431
|
|
|
|
|
|
|
plain \'signbit\' because it is easy to imagine a system having a signbit() |
1432
|
|
|
|
|
|
|
function or macro that doesn\'t happen to work with our particular choice |
1433
|
|
|
|
|
|
|
of NVs. We shouldn\'t just re-#define signbit as Perl_signbit and expect |
1434
|
|
|
|
|
|
|
the standard system headers to be happy. Also, this is a no-context |
1435
|
|
|
|
|
|
|
function (no pTHX_) because Perl_signbit() is usually re-#defined in |
1436
|
|
|
|
|
|
|
perl.h as a simple macro call to the system\'s signbit(). |
1437
|
|
|
|
|
|
|
Users should just always call Perl_signbit(). |
1438
|
|
|
|
|
|
|
|
1439
|
|
|
|
|
|
|
NOTE: this function is experimental and may change or be |
1440
|
|
|
|
|
|
|
removed without notice. |
1441
|
|
|
|
|
|
|
|
1442
|
|
|
|
|
|
|
int Perl_signbit(NV f)','name' => 'Perl_signbit'},'av_create_and_push' => {'text' => 'Push an SV onto the end of the array, creating the array if necessary. |
1443
|
|
|
|
|
|
|
A small internal helper function to remove a commonly duplicated idiom. |
1444
|
|
|
|
|
|
|
|
1445
|
|
|
|
|
|
|
NOTE: this function is experimental and may change or be |
1446
|
|
|
|
|
|
|
removed without notice. |
1447
|
|
|
|
|
|
|
|
1448
|
|
|
|
|
|
|
void av_create_and_push(AV **const avp, SV *const val)','name' => 'av_create_and_push'},'PUSH_MULTICALL' => {'text' => 'Opening bracket for a lightweight callback. |
1449
|
|
|
|
|
|
|
See L. |
1450
|
|
|
|
|
|
|
|
1451
|
|
|
|
|
|
|
PUSH_MULTICALL;','name' => 'PUSH_MULTICALL'},'XPUSHp' => {'text' => 'Push a string onto the stack, extending the stack if necessary. The C |
1452
|
|
|
|
|
|
|
indicates the length of the string. Handles \'set\' magic. Uses C, so |
1453
|
|
|
|
|
|
|
C or C should be called to declare it. Do not call |
1454
|
|
|
|
|
|
|
multiple C-oriented macros to return lists from XSUB\'s - see |
1455
|
|
|
|
|
|
|
C instead. See also C and C. |
1456
|
|
|
|
|
|
|
|
1457
|
|
|
|
|
|
|
void XPUSHp(char* str, STRLEN len)','name' => 'XPUSHp'},'sv_utf8_encode' => {'text' => 'Converts the PV of an SV to UTF-8, but then turns the C |
1458
|
|
|
|
|
|
|
flag off so that it looks like octets again. |
1459
|
|
|
|
|
|
|
|
1460
|
|
|
|
|
|
|
void sv_utf8_encode(SV *sv)','name' => 'sv_utf8_encode'},'SvUTF8_on' => {'text' => 'Turn on the UTF-8 status of an SV (the data is not changed, just the flag). |
1461
|
|
|
|
|
|
|
Do not use frivolously. |
1462
|
|
|
|
|
|
|
|
1463
|
|
|
|
|
|
|
void SvUTF8_on(SV *sv)','name' => 'SvUTF8_on'},'sv_setpvn_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
1464
|
|
|
|
|
|
|
|
1465
|
|
|
|
|
|
|
void sv_setpvn_mg(SV *sv, const char *ptr, STRLEN len)','name' => 'sv_setpvn_mg'},'toLOWER' => {'text' => 'Converts the specified character to lowercase. |
1466
|
|
|
|
|
|
|
|
1467
|
|
|
|
|
|
|
char toLOWER(char ch)','name' => 'toLOWER'},'POPp' => {'text' => 'Pops a string off the stack. Deprecated. New code should use POPpx. |
1468
|
|
|
|
|
|
|
|
1469
|
|
|
|
|
|
|
char* POPp','name' => 'POPp'},'SvIV_nomg' => {'text' => 'Like C but doesn\'t process magic. |
1470
|
|
|
|
|
|
|
|
1471
|
|
|
|
|
|
|
IV SvIV_nomg(SV* sv)','name' => 'SvIV_nomg'},'RETVAL' => {'text' => 'Variable which is setup by C to hold the return value for an |
1472
|
|
|
|
|
|
|
XSUB. This is always the proper type for the XSUB. See |
1473
|
|
|
|
|
|
|
L. |
1474
|
|
|
|
|
|
|
|
1475
|
|
|
|
|
|
|
(whatever) RETVAL','name' => 'RETVAL'},'HeSVKEY' => {'text' => 'Returns the key as an C, or C if the hash entry does not |
1476
|
|
|
|
|
|
|
contain an C key. |
1477
|
|
|
|
|
|
|
|
1478
|
|
|
|
|
|
|
SV* HeSVKEY(HE* he)','name' => 'HeSVKEY'},'new_version' => {'text' => 'Returns a new version object based on the passed in SV: |
1479
|
|
|
|
|
|
|
|
1480
|
|
|
|
|
|
|
SV *sv = new_version(SV *ver); |
1481
|
|
|
|
|
|
|
|
1482
|
|
|
|
|
|
|
Does not alter the passed in ver SV. See "upg_version" if you |
1483
|
|
|
|
|
|
|
want to upgrade the SV. |
1484
|
|
|
|
|
|
|
|
1485
|
|
|
|
|
|
|
SV* new_version(SV *ver)','name' => 'new_version'},'sv_pvbyten' => {'text' => 'A private implementation of the C macro for compilers |
1486
|
|
|
|
|
|
|
which can\'t cope with complex macro expressions. Always use the macro |
1487
|
|
|
|
|
|
|
instead. |
1488
|
|
|
|
|
|
|
|
1489
|
|
|
|
|
|
|
char* sv_pvbyten(SV *sv, STRLEN *len)','name' => 'sv_pvbyten'},'Nullav' => {'text' => 'Null AV pointer.','name' => 'Nullav'},'sv_copypv' => {'text' => 'Copies a stringified representation of the source SV into the |
1490
|
|
|
|
|
|
|
destination SV. Automatically performs any necessary mg_get and |
1491
|
|
|
|
|
|
|
coercion of numeric values into strings. Guaranteed to preserve |
1492
|
|
|
|
|
|
|
UTF8 flag even from overloaded objects. Similar in nature to |
1493
|
|
|
|
|
|
|
sv_2pv[_flags] but operates directly on an SV instead of just the |
1494
|
|
|
|
|
|
|
string. Mostly uses sv_2pv_flags to do its work, except when that |
1495
|
|
|
|
|
|
|
would lose the UTF-8\'ness of the PV. |
1496
|
|
|
|
|
|
|
|
1497
|
|
|
|
|
|
|
void sv_copypv(SV* dsv, SV* ssv)','name' => 'sv_copypv'},'sv_pv' => {'text' => 'Use the C macro instead |
1498
|
|
|
|
|
|
|
|
1499
|
|
|
|
|
|
|
char* sv_pv(SV *sv)','name' => 'sv_pv'},'pv_pretty' => {'text' => '|const STRLEN count|const STRLEN max\\ |
1500
|
|
|
|
|
|
|
|const char const *start_color| const char const *end_color\\ |
1501
|
|
|
|
|
|
|
|const U32 flags |
1502
|
|
|
|
|
|
|
|
1503
|
|
|
|
|
|
|
Converts a string into something presentable, handling escaping via |
1504
|
|
|
|
|
|
|
pv_escape() and supporting quoting and ellipses. |
1505
|
|
|
|
|
|
|
|
1506
|
|
|
|
|
|
|
If the PERL_PV_PRETTY_QUOTE flag is set then the result will be |
1507
|
|
|
|
|
|
|
double quoted with any double quotes in the string escaped. Otherwise |
1508
|
|
|
|
|
|
|
if the PERL_PV_PRETTY_LTGT flag is set then the result be wrapped in |
1509
|
|
|
|
|
|
|
angle brackets. |
1510
|
|
|
|
|
|
|
|
1511
|
|
|
|
|
|
|
If the PERL_PV_PRETTY_ELLIPSES flag is set and not all characters in |
1512
|
|
|
|
|
|
|
string were output then an ellipsis C<...> will be appended to the |
1513
|
|
|
|
|
|
|
string. Note that this happens AFTER it has been quoted. |
1514
|
|
|
|
|
|
|
|
1515
|
|
|
|
|
|
|
If start_color is non-null then it will be inserted after the opening |
1516
|
|
|
|
|
|
|
quote (if there is one) but before the escaped text. If end_color |
1517
|
|
|
|
|
|
|
is non-null then it will be inserted after the escaped text but before |
1518
|
|
|
|
|
|
|
any quotes or ellipses. |
1519
|
|
|
|
|
|
|
|
1520
|
|
|
|
|
|
|
Returns a pointer to the prettified text as held by dsv. |
1521
|
|
|
|
|
|
|
|
1522
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
1523
|
|
|
|
|
|
|
|
1524
|
|
|
|
|
|
|
char* pv_pretty(SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags)','name' => 'pv_pretty'},'sv_setnv_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
1525
|
|
|
|
|
|
|
|
1526
|
|
|
|
|
|
|
void sv_setnv_mg(SV *sv, NV num)','name' => 'sv_setnv_mg'},'hv_iternextsv' => {'text' => 'Performs an C, C, and C in one |
1527
|
|
|
|
|
|
|
operation. |
1528
|
|
|
|
|
|
|
|
1529
|
|
|
|
|
|
|
SV* hv_iternextsv(HV* hv, char** key, I32* retlen)','name' => 'hv_iternextsv'},'utf8_to_bytes' => {'text' => 'Converts a string C of length C from UTF-8 into byte encoding. |
1530
|
|
|
|
|
|
|
Unlike C, this over-writes the original string, and |
1531
|
|
|
|
|
|
|
updates len to contain the new length. |
1532
|
|
|
|
|
|
|
Returns zero on failure, setting C to -1. |
1533
|
|
|
|
|
|
|
|
1534
|
|
|
|
|
|
|
If you need a copy of the string, see C. |
1535
|
|
|
|
|
|
|
|
1536
|
|
|
|
|
|
|
NOTE: this function is experimental and may change or be |
1537
|
|
|
|
|
|
|
removed without notice. |
1538
|
|
|
|
|
|
|
|
1539
|
|
|
|
|
|
|
U8* utf8_to_bytes(U8 *s, STRLEN *len)','name' => 'utf8_to_bytes'},'sv_pvbyten_force' => {'text' => 'The backend for the C macro. Always use the macro instead. |
1540
|
|
|
|
|
|
|
|
1541
|
|
|
|
|
|
|
char* sv_pvbyten_force(SV* sv, STRLEN* lp)','name' => 'sv_pvbyten_force'},'uvuni_to_utf8_flags' => {'text' => 'Adds the UTF-8 representation of the Unicode codepoint C to the end |
1542
|
|
|
|
|
|
|
of the string C; C should be have at least C free |
1543
|
|
|
|
|
|
|
bytes available. The return value is the pointer to the byte after the |
1544
|
|
|
|
|
|
|
end of the new character. In other words, |
1545
|
|
|
|
|
|
|
|
1546
|
|
|
|
|
|
|
d = uvuni_to_utf8_flags(d, uv, flags); |
1547
|
|
|
|
|
|
|
|
1548
|
|
|
|
|
|
|
or, in most cases, |
1549
|
|
|
|
|
|
|
|
1550
|
|
|
|
|
|
|
d = uvuni_to_utf8(d, uv); |
1551
|
|
|
|
|
|
|
|
1552
|
|
|
|
|
|
|
(which is equivalent to) |
1553
|
|
|
|
|
|
|
|
1554
|
|
|
|
|
|
|
d = uvuni_to_utf8_flags(d, uv, 0); |
1555
|
|
|
|
|
|
|
|
1556
|
|
|
|
|
|
|
is the recommended Unicode-aware way of saying |
1557
|
|
|
|
|
|
|
|
1558
|
|
|
|
|
|
|
*(d++) = uv; |
1559
|
|
|
|
|
|
|
|
1560
|
|
|
|
|
|
|
U8* uvuni_to_utf8_flags(U8 *d, UV uv, UV flags)','name' => 'uvuni_to_utf8_flags'},'XST_mIV' => {'text' => 'Place an integer into the specified position C on the stack. The |
1561
|
|
|
|
|
|
|
value is stored in a new mortal SV. |
1562
|
|
|
|
|
|
|
|
1563
|
|
|
|
|
|
|
void XST_mIV(int pos, IV iv)','name' => 'XST_mIV'},'G_DISCARD' => {'text' => 'Indicates that arguments returned from a callback should be discarded. See |
1564
|
|
|
|
|
|
|
L.','name' => 'G_DISCARD'},'GvSV' => {'text' => 'Return the SV from the GV. |
1565
|
|
|
|
|
|
|
|
1566
|
|
|
|
|
|
|
SV* GvSV(GV* gv)','name' => 'GvSV'},'XST_mNV' => {'text' => 'Place a double into the specified position C on the stack. The value |
1567
|
|
|
|
|
|
|
is stored in a new mortal SV. |
1568
|
|
|
|
|
|
|
|
1569
|
|
|
|
|
|
|
void XST_mNV(int pos, NV nv)','name' => 'XST_mNV'},'UNDERBAR' => {'text' => 'The SV* corresponding to the $_ variable. Works even if there |
1570
|
|
|
|
|
|
|
is a lexical $_ in scope.','name' => 'UNDERBAR'},'pad_sv' => {'text' => 'Get the value at offset po in the current pad. |
1571
|
|
|
|
|
|
|
Use macro PAD_SV instead of calling this function directly. |
1572
|
|
|
|
|
|
|
|
1573
|
|
|
|
|
|
|
SV* pad_sv(PADOFFSET po)','name' => 'pad_sv'},'POPi' => {'text' => 'Pops an integer off the stack. |
1574
|
|
|
|
|
|
|
|
1575
|
|
|
|
|
|
|
IV POPi','name' => 'POPi'},'SvPVutf8_force' => {'text' => 'Like C, but converts sv to utf8 first if necessary. |
1576
|
|
|
|
|
|
|
|
1577
|
|
|
|
|
|
|
char* SvPVutf8_force(SV* sv, STRLEN len)','name' => 'SvPVutf8_force'},'sv_2pvutf8_nolen' => {'text' => 'Return a pointer to the UTF-8-encoded representation of the SV. |
1578
|
|
|
|
|
|
|
May cause the SV to be upgraded to UTF-8 as a side-effect. |
1579
|
|
|
|
|
|
|
|
1580
|
|
|
|
|
|
|
Usually accessed via the C macro. |
1581
|
|
|
|
|
|
|
|
1582
|
|
|
|
|
|
|
char* sv_2pvutf8_nolen(SV* sv)','name' => 'sv_2pvutf8_nolen'},'SVt_NV' => {'text' => 'Double type flag for scalars. See C.','name' => 'SVt_NV'},'mro_get_linear_isa' => {'text' => 'Returns either C or |
1583
|
|
|
|
|
|
|
C for the given stash, |
1584
|
|
|
|
|
|
|
dependant upon which MRO is in effect |
1585
|
|
|
|
|
|
|
for that stash. The return value is a |
1586
|
|
|
|
|
|
|
read-only AV*. |
1587
|
|
|
|
|
|
|
|
1588
|
|
|
|
|
|
|
You are responsible for C on the |
1589
|
|
|
|
|
|
|
return value if you plan to store it anywhere |
1590
|
|
|
|
|
|
|
semi-permanently (otherwise it might be deleted |
1591
|
|
|
|
|
|
|
out from under you the next time the cache is |
1592
|
|
|
|
|
|
|
invalidated). |
1593
|
|
|
|
|
|
|
|
1594
|
|
|
|
|
|
|
AV* mro_get_linear_isa(HV* stash)','name' => 'mro_get_linear_isa'},'av_store' => {'text' => 'Stores an SV in an array. The array index is specified as C. The |
1595
|
|
|
|
|
|
|
return value will be NULL if the operation failed or if the value did not |
1596
|
|
|
|
|
|
|
need to be actually stored within the array (as in the case of tied |
1597
|
|
|
|
|
|
|
arrays). Otherwise it can be dereferenced to get the original C. Note |
1598
|
|
|
|
|
|
|
that the caller is responsible for suitably incrementing the reference |
1599
|
|
|
|
|
|
|
count of C before the call, and decrementing it if the function |
1600
|
|
|
|
|
|
|
returned NULL. |
1601
|
|
|
|
|
|
|
|
1602
|
|
|
|
|
|
|
See L for |
1603
|
|
|
|
|
|
|
more information on how to use this function on tied arrays. |
1604
|
|
|
|
|
|
|
|
1605
|
|
|
|
|
|
|
SV** av_store(AV* ar, I32 key, SV* val)','name' => 'av_store'},'SvPVbytex' => {'text' => 'Like C, but converts sv to byte representation first if necessary. |
1606
|
|
|
|
|
|
|
Guarantees to evaluate sv only once; use the more efficient C |
1607
|
|
|
|
|
|
|
otherwise. |
1608
|
|
|
|
|
|
|
|
1609
|
|
|
|
|
|
|
char* SvPVbytex(SV* sv, STRLEN len)','name' => 'SvPVbytex'},'PUSHMARK' => {'text' => 'Opening bracket for arguments on a callback. See C and |
1610
|
|
|
|
|
|
|
L. |
1611
|
|
|
|
|
|
|
|
1612
|
|
|
|
|
|
|
void PUSHMARK(SP)','name' => 'PUSHMARK'},'ST' => {'text' => 'Used to access elements on the XSUB\'s stack. |
1613
|
|
|
|
|
|
|
|
1614
|
|
|
|
|
|
|
SV* ST(int ix)','name' => 'ST'},'call_pv' => {'text' => 'Performs a callback to the specified Perl sub. See L. |
1615
|
|
|
|
|
|
|
|
1616
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
1617
|
|
|
|
|
|
|
|
1618
|
|
|
|
|
|
|
I32 call_pv(const char* sub_name, I32 flags)','name' => 'call_pv'},'av_fetch' => {'text' => 'Returns the SV at the specified index in the array. The C is the |
1619
|
|
|
|
|
|
|
index. If C is set then the fetch will be part of a store. Check |
1620
|
|
|
|
|
|
|
that the return value is non-null before dereferencing it to a C. |
1621
|
|
|
|
|
|
|
|
1622
|
|
|
|
|
|
|
See L for |
1623
|
|
|
|
|
|
|
more information on how to use this function on tied arrays. |
1624
|
|
|
|
|
|
|
|
1625
|
|
|
|
|
|
|
SV** av_fetch(AV* ar, I32 key, I32 lval)','name' => 'av_fetch'},'gv_fetchmeth_autoload' => {'text' => 'Same as gv_fetchmeth(), but looks for autoloaded subroutines too. |
1626
|
|
|
|
|
|
|
Returns a glob for the subroutine. |
1627
|
|
|
|
|
|
|
|
1628
|
|
|
|
|
|
|
For an autoloaded subroutine without a GV, will create a GV even |
1629
|
|
|
|
|
|
|
if C. For an autoloaded subroutine without a stub, GvCV() |
1630
|
|
|
|
|
|
|
of the result may be zero. |
1631
|
|
|
|
|
|
|
|
1632
|
|
|
|
|
|
|
GV* gv_fetchmeth_autoload(HV* stash, const char* name, STRLEN len, I32 level)','name' => 'gv_fetchmeth_autoload'},'SvNOK_only' => {'text' => 'Tells an SV that it is a double and disables all other OK bits. |
1633
|
|
|
|
|
|
|
|
1634
|
|
|
|
|
|
|
void SvNOK_only(SV* sv)','name' => 'SvNOK_only'},'hv_iterval' => {'text' => 'Returns the value from the current position of the hash iterator. See |
1635
|
|
|
|
|
|
|
C. |
1636
|
|
|
|
|
|
|
|
1637
|
|
|
|
|
|
|
SV* hv_iterval(HV* tb, HE* entry)','name' => 'hv_iterval'},'sv_reftype' => {'text' => 'Returns a string describing what the SV is a reference to. |
1638
|
|
|
|
|
|
|
|
1639
|
|
|
|
|
|
|
const char* sv_reftype(const SV* sv, int ob)','name' => 'sv_reftype'},'sv_pos_b2u' => {'text' => 'Converts the value pointed to by offsetp from a count of bytes from the |
1640
|
|
|
|
|
|
|
start of the string, to a count of the equivalent number of UTF-8 chars. |
1641
|
|
|
|
|
|
|
Handles magic and type coercion. |
1642
|
|
|
|
|
|
|
|
1643
|
|
|
|
|
|
|
void sv_pos_b2u(SV* sv, I32* offsetp)','name' => 'sv_pos_b2u'},'SvREFCNT_inc_simple_void_NN' => {'text' => 'Same as SvREFCNT_inc, but can only be used if you don\'t need the return |
1644
|
|
|
|
|
|
|
value, and you know that I is not NULL. The macro doesn\'t need |
1645
|
|
|
|
|
|
|
to return a meaningful value, or check for NULLness, so it\'s smaller |
1646
|
|
|
|
|
|
|
and faster. |
1647
|
|
|
|
|
|
|
|
1648
|
|
|
|
|
|
|
void SvREFCNT_inc_simple_void_NN(SV* sv)','name' => 'SvREFCNT_inc_simple_void_NN'},'av_len' => {'text' => 'Returns the highest index in the array. The number of elements in the |
1649
|
|
|
|
|
|
|
array is C. Returns -1 if the array is empty. |
1650
|
|
|
|
|
|
|
|
1651
|
|
|
|
|
|
|
I32 av_len(const AV* ar)','name' => 'av_len'},'SVt_IV' => {'text' => 'Integer type flag for scalars. See C.','name' => 'SVt_IV'},'SvIsCOW' => {'text' => 'Returns a boolean indicating whether the SV is Copy-On-Write. (either shared |
1652
|
|
|
|
|
|
|
hash key scalars, or full Copy On Write scalars if 5.9.0 is configured for |
1653
|
|
|
|
|
|
|
COW) |
1654
|
|
|
|
|
|
|
|
1655
|
|
|
|
|
|
|
bool SvIsCOW(SV* sv)','name' => 'SvIsCOW'},'sv_unmagic' => {'text' => 'Removes all magic of type C from an SV. |
1656
|
|
|
|
|
|
|
|
1657
|
|
|
|
|
|
|
int sv_unmagic(SV* sv, int type)','name' => 'sv_unmagic'},'SvTAINT' => {'text' => 'Taints an SV if tainting is enabled. |
1658
|
|
|
|
|
|
|
|
1659
|
|
|
|
|
|
|
void SvTAINT(SV* sv)','name' => 'SvTAINT'},'sv_catsv' => {'text' => 'Concatenates the string from SV C onto the end of the string in |
1660
|
|
|
|
|
|
|
SV C. Modifies C but not C. Handles \'get\' magic, but |
1661
|
|
|
|
|
|
|
not \'set\' magic. See C. |
1662
|
|
|
|
|
|
|
|
1663
|
|
|
|
|
|
|
void sv_catsv(SV* dsv, SV* ssv)','name' => 'sv_catsv'},'SvPOK_on' => {'text' => 'Tells an SV that it is a string. |
1664
|
|
|
|
|
|
|
|
1665
|
|
|
|
|
|
|
void SvPOK_on(SV* sv)','name' => 'SvPOK_on'},'ax' => {'text' => 'Variable which is setup by C to indicate the stack base offset, |
1666
|
|
|
|
|
|
|
used by the C, C and C macros. The C macro |
1667
|
|
|
|
|
|
|
must be called prior to setup the C variable. |
1668
|
|
|
|
|
|
|
|
1669
|
|
|
|
|
|
|
I32 ax','name' => 'ax'},'mg_clear' => {'text' => 'Clear something magical that the SV represents. See C. |
1670
|
|
|
|
|
|
|
|
1671
|
|
|
|
|
|
|
int mg_clear(SV* sv)','name' => 'mg_clear'},'my_sprintf' => {'text' => 'The C library C, wrapped if necessary, to ensure that it will return |
1672
|
|
|
|
|
|
|
the length of the string written to the buffer. Only rare pre-ANSI systems |
1673
|
|
|
|
|
|
|
need the wrapper function - usually this is a direct call to C. |
1674
|
|
|
|
|
|
|
|
1675
|
|
|
|
|
|
|
int my_sprintf(char *buffer, const char *pat, ...)','name' => 'my_sprintf'},'to_utf8_fold' => {'text' => 'Convert the UTF-8 encoded character at p to its foldcase version and |
1676
|
|
|
|
|
|
|
store that in UTF-8 in ustrp and its length in bytes in lenp. Note |
1677
|
|
|
|
|
|
|
that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the |
1678
|
|
|
|
|
|
|
foldcase version may be longer than the original character (up to |
1679
|
|
|
|
|
|
|
three characters). |
1680
|
|
|
|
|
|
|
|
1681
|
|
|
|
|
|
|
The first character of the foldcased version is returned |
1682
|
|
|
|
|
|
|
(but note, as explained above, that there may be more.) |
1683
|
|
|
|
|
|
|
|
1684
|
|
|
|
|
|
|
UV to_utf8_fold(const U8 *p, U8* ustrp, STRLEN *lenp)','name' => 'to_utf8_fold'},'to_utf8_upper' => {'text' => 'Convert the UTF-8 encoded character at p to its uppercase version and |
1685
|
|
|
|
|
|
|
store that in UTF-8 in ustrp and its length in bytes in lenp. Note |
1686
|
|
|
|
|
|
|
that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since |
1687
|
|
|
|
|
|
|
the uppercase version may be longer than the original character. |
1688
|
|
|
|
|
|
|
|
1689
|
|
|
|
|
|
|
The first character of the uppercased version is returned |
1690
|
|
|
|
|
|
|
(but note, as explained above, that there may be more.) |
1691
|
|
|
|
|
|
|
|
1692
|
|
|
|
|
|
|
UV to_utf8_upper(const U8 *p, U8* ustrp, STRLEN *lenp)','name' => 'to_utf8_upper'},'gv_stashpv' => {'text' => 'Returns a pointer to the stash for a specified package. Uses C to |
1693
|
|
|
|
|
|
|
determine the length of C, then calls C. |
1694
|
|
|
|
|
|
|
|
1695
|
|
|
|
|
|
|
HV* gv_stashpv(const char* name, I32 flags)','name' => 'gv_stashpv'},'SvPVutf8x_force' => {'text' => 'Like C, but converts sv to utf8 first if necessary. |
1696
|
|
|
|
|
|
|
Guarantees to evaluate sv only once; use the more efficient C |
1697
|
|
|
|
|
|
|
otherwise. |
1698
|
|
|
|
|
|
|
|
1699
|
|
|
|
|
|
|
char* SvPVutf8x_force(SV* sv, STRLEN len)','name' => 'SvPVutf8x_force'},'sv_vcatpvf_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
1700
|
|
|
|
|
|
|
|
1701
|
|
|
|
|
|
|
Usually used via its frontend C. |
1702
|
|
|
|
|
|
|
|
1703
|
|
|
|
|
|
|
void sv_vcatpvf_mg(SV* sv, const char* pat, va_list* args)','name' => 'sv_vcatpvf_mg'},'PUSHi' => {'text' => 'Push an integer onto the stack. The stack must have room for this element. |
1704
|
|
|
|
|
|
|
Handles \'set\' magic. Uses C, so C or C should be |
1705
|
|
|
|
|
|
|
called to declare it. Do not call multiple C-oriented macros to |
1706
|
|
|
|
|
|
|
return lists from XSUB\'s - see C instead. See also C and |
1707
|
|
|
|
|
|
|
C. |
1708
|
|
|
|
|
|
|
|
1709
|
|
|
|
|
|
|
void PUSHi(IV iv)','name' => 'PUSHi'},'mXPUSHu' => {'text' => 'Push an unsigned integer onto the stack, extending the stack if necessary. |
1710
|
|
|
|
|
|
|
Handles \'set\' magic. Does not use C. See also C, C |
1711
|
|
|
|
|
|
|
and C. |
1712
|
|
|
|
|
|
|
|
1713
|
|
|
|
|
|
|
void mXPUSHu(UV uv)','name' => 'mXPUSHu'},'hv_exists_ent' => {'text' => 'Returns a boolean indicating whether the specified hash key exists. C |
1714
|
|
|
|
|
|
|
can be a valid precomputed hash value, or 0 to ask for it to be |
1715
|
|
|
|
|
|
|
computed. |
1716
|
|
|
|
|
|
|
|
1717
|
|
|
|
|
|
|
bool hv_exists_ent(HV* tb, SV* key, U32 hash)','name' => 'hv_exists_ent'},'SvLEN_set' => {'text' => 'Set the actual length of the string which is in the SV. See C. |
1718
|
|
|
|
|
|
|
|
1719
|
|
|
|
|
|
|
void SvLEN_set(SV* sv, STRLEN len)','name' => 'SvLEN_set'},'to_utf8_lower' => {'text' => 'Convert the UTF-8 encoded character at p to its lowercase version and |
1720
|
|
|
|
|
|
|
store that in UTF-8 in ustrp and its length in bytes in lenp. Note |
1721
|
|
|
|
|
|
|
that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the |
1722
|
|
|
|
|
|
|
lowercase version may be longer than the original character. |
1723
|
|
|
|
|
|
|
|
1724
|
|
|
|
|
|
|
The first character of the lowercased version is returned |
1725
|
|
|
|
|
|
|
(but note, as explained above, that there may be more.) |
1726
|
|
|
|
|
|
|
|
1727
|
|
|
|
|
|
|
UV to_utf8_lower(const U8 *p, U8* ustrp, STRLEN *lenp)','name' => 'to_utf8_lower'},'SvNIOK' => {'text' => 'Returns a U32 value indicating whether the SV contains a number, integer or |
1728
|
|
|
|
|
|
|
double. |
1729
|
|
|
|
|
|
|
|
1730
|
|
|
|
|
|
|
U32 SvNIOK(SV* sv)','name' => 'SvNIOK'},'mro_method_changed_in' => {'text' => 'Invalidates method caching on any child classes |
1731
|
|
|
|
|
|
|
of the given stash, so that they might notice |
1732
|
|
|
|
|
|
|
the changes in this one. |
1733
|
|
|
|
|
|
|
|
1734
|
|
|
|
|
|
|
Ideally, all instances of C in |
1735
|
|
|
|
|
|
|
perl source outside of C should be |
1736
|
|
|
|
|
|
|
replaced by calls to this. |
1737
|
|
|
|
|
|
|
|
1738
|
|
|
|
|
|
|
Perl automatically handles most of the common |
1739
|
|
|
|
|
|
|
ways a method might be redefined. However, there |
1740
|
|
|
|
|
|
|
are a few ways you could change a method in a stash |
1741
|
|
|
|
|
|
|
without the cache code noticing, in which case you |
1742
|
|
|
|
|
|
|
need to call this method afterwards: |
1743
|
|
|
|
|
|
|
|
1744
|
|
|
|
|
|
|
1) Directly manipulating the stash HV entries from |
1745
|
|
|
|
|
|
|
XS code. |
1746
|
|
|
|
|
|
|
|
1747
|
|
|
|
|
|
|
2) Assigning a reference to a readonly scalar |
1748
|
|
|
|
|
|
|
constant into a stash entry in order to create |
1749
|
|
|
|
|
|
|
a constant subroutine (like constant.pm |
1750
|
|
|
|
|
|
|
does). |
1751
|
|
|
|
|
|
|
|
1752
|
|
|
|
|
|
|
This same method is available from pure perl |
1753
|
|
|
|
|
|
|
via, C. |
1754
|
|
|
|
|
|
|
|
1755
|
|
|
|
|
|
|
void mro_method_changed_in(HV* stash)','name' => 'mro_method_changed_in'},'unpack_str' => {'text' => 'The engine implementing unpack() Perl function. Note: parameters strbeg, new_s |
1756
|
|
|
|
|
|
|
and ocnt are not used. This call should not be used, use unpackstring instead. |
1757
|
|
|
|
|
|
|
|
1758
|
|
|
|
|
|
|
I32 unpack_str(const char *pat, const char *patend, const char *s, const char *strbeg, const char *strend, char **new_s, I32 ocnt, U32 flags)','name' => 'unpack_str'},'newSVpvf' => {'text' => 'Creates a new SV and initializes it with the string formatted like |
1759
|
|
|
|
|
|
|
C. |
1760
|
|
|
|
|
|
|
|
1761
|
|
|
|
|
|
|
SV* newSVpvf(const char* pat, ...)','name' => 'newSVpvf'},'Newxc' => {'text' => 'The XSUB-writer\'s interface to the C C function, with |
1762
|
|
|
|
|
|
|
cast. See also C. |
1763
|
|
|
|
|
|
|
|
1764
|
|
|
|
|
|
|
void Newxc(void* ptr, int nitems, type, cast)','name' => 'Newxc'},'sv_newref' => {'text' => 'Increment an SV\'s reference count. Use the C wrapper |
1765
|
|
|
|
|
|
|
instead. |
1766
|
|
|
|
|
|
|
|
1767
|
|
|
|
|
|
|
SV* sv_newref(SV* sv)','name' => 'sv_newref'},'perl_destruct' => {'text' => 'Shuts down a Perl interpreter. See L. |
1768
|
|
|
|
|
|
|
|
1769
|
|
|
|
|
|
|
int perl_destruct(PerlInterpreter* interp)','name' => 'perl_destruct'},'XSRETURN_IV' => {'text' => 'Return an integer from an XSUB immediately. Uses C. |
1770
|
|
|
|
|
|
|
|
1771
|
|
|
|
|
|
|
void XSRETURN_IV(IV iv)','name' => 'XSRETURN_IV'},'SvIVX' => {'text' => 'Returns the raw value in the SV\'s IV slot, without checks or conversions. |
1772
|
|
|
|
|
|
|
Only use when you are sure SvIOK is true. See also C. |
1773
|
|
|
|
|
|
|
|
1774
|
|
|
|
|
|
|
IV SvIVX(SV* sv)','name' => 'SvIVX'},'sv_uni_display' => {'text' => 'Build to the scalar dsv a displayable version of the scalar sv, |
1775
|
|
|
|
|
|
|
the displayable version being at most pvlim bytes long |
1776
|
|
|
|
|
|
|
(if longer, the rest is truncated and "..." will be appended). |
1777
|
|
|
|
|
|
|
|
1778
|
|
|
|
|
|
|
The flags argument is as in pv_uni_display(). |
1779
|
|
|
|
|
|
|
|
1780
|
|
|
|
|
|
|
The pointer to the PV of the dsv is returned. |
1781
|
|
|
|
|
|
|
|
1782
|
|
|
|
|
|
|
char* sv_uni_display(SV *dsv, SV *ssv, STRLEN pvlim, UV flags)','name' => 'sv_uni_display'},'newSVpvs' => {'text' => 'Like C, but takes a literal string instead of a string/length pair. |
1783
|
|
|
|
|
|
|
|
1784
|
|
|
|
|
|
|
SV* newSVpvs(const char* s)','name' => 'newSVpvs'},'sv_vsetpvf' => {'text' => 'Works like C but copies the text into the SV instead of |
1785
|
|
|
|
|
|
|
appending it. Does not handle \'set\' magic. See C. |
1786
|
|
|
|
|
|
|
|
1787
|
|
|
|
|
|
|
Usually used via its frontend C. |
1788
|
|
|
|
|
|
|
|
1789
|
|
|
|
|
|
|
void sv_vsetpvf(SV* sv, const char* pat, va_list* args)','name' => 'sv_vsetpvf'},'SvREFCNT_dec' => {'text' => 'Decrements the reference count of the given SV. |
1790
|
|
|
|
|
|
|
|
1791
|
|
|
|
|
|
|
void SvREFCNT_dec(SV* sv)','name' => 'SvREFCNT_dec'},'XCPT_CATCH' => {'text' => 'Introduces a catch block. See L.','name' => 'XCPT_CATCH'},'XST_mYES' => {'text' => 'Place C<&PL_sv_yes> into the specified position C on the |
1792
|
|
|
|
|
|
|
stack. |
1793
|
|
|
|
|
|
|
|
1794
|
|
|
|
|
|
|
void XST_mYES(int pos)','name' => 'XST_mYES'},'SvIOK_off' => {'text' => 'Unsets the IV status of an SV. |
1795
|
|
|
|
|
|
|
|
1796
|
|
|
|
|
|
|
void SvIOK_off(SV* sv)','name' => 'SvIOK_off'},'sv_setsv' => {'text' => 'Copies the contents of the source SV C into the destination SV |
1797
|
|
|
|
|
|
|
C. The source SV may be destroyed if it is mortal, so don\'t use this |
1798
|
|
|
|
|
|
|
function if the source SV needs to be reused. Does not handle \'set\' magic. |
1799
|
|
|
|
|
|
|
Loosely speaking, it performs a copy-by-value, obliterating any previous |
1800
|
|
|
|
|
|
|
content of the destination. |
1801
|
|
|
|
|
|
|
|
1802
|
|
|
|
|
|
|
You probably want to use one of the assortment of wrappers, such as |
1803
|
|
|
|
|
|
|
C, C, C and |
1804
|
|
|
|
|
|
|
C. |
1805
|
|
|
|
|
|
|
|
1806
|
|
|
|
|
|
|
void sv_setsv(SV* dsv, SV* ssv)','name' => 'sv_setsv'},'POPs' => {'text' => 'Pops an SV off the stack. |
1807
|
|
|
|
|
|
|
|
1808
|
|
|
|
|
|
|
SV* POPs','name' => 'POPs'},'packlist' => {'text' => 'The engine implementing pack() Perl function. |
1809
|
|
|
|
|
|
|
|
1810
|
|
|
|
|
|
|
void packlist(SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist)','name' => 'packlist'},'SvNV' => {'text' => 'Coerce the given SV to a double and return it. See C for a version |
1811
|
|
|
|
|
|
|
which guarantees to evaluate sv only once. |
1812
|
|
|
|
|
|
|
|
1813
|
|
|
|
|
|
|
NV SvNV(SV* sv)','name' => 'SvNV'},'gv_fetchmethod_autoload' => {'text' => 'Returns the glob which contains the subroutine to call to invoke the method |
1814
|
|
|
|
|
|
|
on the C. In fact in the presence of autoloading this may be the |
1815
|
|
|
|
|
|
|
glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is |
1816
|
|
|
|
|
|
|
already setup. |
1817
|
|
|
|
|
|
|
|
1818
|
|
|
|
|
|
|
The third parameter of C determines whether |
1819
|
|
|
|
|
|
|
AUTOLOAD lookup is performed if the given method is not present: non-zero |
1820
|
|
|
|
|
|
|
means yes, look for AUTOLOAD; zero means no, don\'t look for AUTOLOAD. |
1821
|
|
|
|
|
|
|
Calling C is equivalent to calling C |
1822
|
|
|
|
|
|
|
with a non-zero C parameter. |
1823
|
|
|
|
|
|
|
|
1824
|
|
|
|
|
|
|
These functions grant C<"SUPER"> token as a prefix of the method name. Note |
1825
|
|
|
|
|
|
|
that if you want to keep the returned glob for a long time, you need to |
1826
|
|
|
|
|
|
|
check for it being "AUTOLOAD", since at the later time the call may load a |
1827
|
|
|
|
|
|
|
different subroutine due to $AUTOLOAD changing its value. Use the glob |
1828
|
|
|
|
|
|
|
created via a side effect to do this. |
1829
|
|
|
|
|
|
|
|
1830
|
|
|
|
|
|
|
These functions have the same side-effects and as C with |
1831
|
|
|
|
|
|
|
C. C should be writable if contains C<\':\'> or C<\' |
1832
|
|
|
|
|
|
|
\'\'>. The warning against passing the GV returned by C to |
1833
|
|
|
|
|
|
|
C apply equally to these functions. |
1834
|
|
|
|
|
|
|
|
1835
|
|
|
|
|
|
|
GV* gv_fetchmethod_autoload(HV* stash, const char* name, I32 autoload)','name' => 'gv_fetchmethod_autoload'},'SvUTF8' => {'text' => 'Returns a U32 value indicating whether the SV contains UTF-8 encoded data. |
1836
|
|
|
|
|
|
|
Call this after SvPV() in case any call to string overloading updates the |
1837
|
|
|
|
|
|
|
internal flag. |
1838
|
|
|
|
|
|
|
|
1839
|
|
|
|
|
|
|
U32 SvUTF8(SV* sv)','name' => 'SvUTF8'},'SvTAINTED' => {'text' => 'Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if |
1840
|
|
|
|
|
|
|
not. |
1841
|
|
|
|
|
|
|
|
1842
|
|
|
|
|
|
|
bool SvTAINTED(SV* sv)','name' => 'SvTAINTED'},'sv_eq' => {'text' => 'Returns a boolean indicating whether the strings in the two SVs are |
1843
|
|
|
|
|
|
|
identical. Is UTF-8 and \'use bytes\' aware, handles get magic, and will |
1844
|
|
|
|
|
|
|
coerce its args to strings if necessary. |
1845
|
|
|
|
|
|
|
|
1846
|
|
|
|
|
|
|
I32 sv_eq(SV* sv1, SV* sv2)','name' => 'sv_eq'},'ix' => {'text' => 'Variable which is setup by C to indicate which of an |
1847
|
|
|
|
|
|
|
XSUB\'s aliases was used to invoke it. See L. |
1848
|
|
|
|
|
|
|
|
1849
|
|
|
|
|
|
|
I32 ix','name' => 'ix'},'cv_undef' => {'text' => 'Clear out all the active components of a CV. This can happen either |
1850
|
|
|
|
|
|
|
by an explicit C, or by the reference count going to zero. |
1851
|
|
|
|
|
|
|
In the former case, we keep the CvOUTSIDE pointer, so that any anonymous |
1852
|
|
|
|
|
|
|
children can still follow the full lexical scope chain. |
1853
|
|
|
|
|
|
|
|
1854
|
|
|
|
|
|
|
void cv_undef(CV* cv)','name' => 'cv_undef'},'StructCopy' => {'text' => 'This is an architecture-independent macro to copy one structure to another. |
1855
|
|
|
|
|
|
|
|
1856
|
|
|
|
|
|
|
void StructCopy(type src, type dest, type)','name' => 'StructCopy'},'XSRETURN_UV' => {'text' => 'Return an integer from an XSUB immediately. Uses C. |
1857
|
|
|
|
|
|
|
|
1858
|
|
|
|
|
|
|
void XSRETURN_UV(IV uv)','name' => 'XSRETURN_UV'},'SvREFCNT_inc_simple' => {'text' => 'Same as SvREFCNT_inc, but can only be used with expressions without side |
1859
|
|
|
|
|
|
|
effects. Since we don\'t have to store a temporary value, it\'s faster. |
1860
|
|
|
|
|
|
|
|
1861
|
|
|
|
|
|
|
SV* SvREFCNT_inc_simple(SV* sv)','name' => 'SvREFCNT_inc_simple'},'get_cvn_flags' => {'text' => 'Returns the CV of the specified Perl subroutine. C are passed to |
1862
|
|
|
|
|
|
|
C. If C is set and the Perl subroutine does not |
1863
|
|
|
|
|
|
|
exist then it will be declared (which has the same effect as saying |
1864
|
|
|
|
|
|
|
C). If C is not set and the subroutine does not exist |
1865
|
|
|
|
|
|
|
then NULL is returned. |
1866
|
|
|
|
|
|
|
|
1867
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
1868
|
|
|
|
|
|
|
|
1869
|
|
|
|
|
|
|
CV* get_cvn_flags(const char* name, STRLEN len, I32 flags)','name' => 'get_cvn_flags'},'items' => {'text' => 'Variable which is setup by C to indicate the number of |
1870
|
|
|
|
|
|
|
items on the stack. See L. |
1871
|
|
|
|
|
|
|
|
1872
|
|
|
|
|
|
|
I32 items','name' => 'items'},'XST_mPV' => {'text' => 'Place a copy of a string into the specified position C on the stack. |
1873
|
|
|
|
|
|
|
The value is stored in a new mortal SV. |
1874
|
|
|
|
|
|
|
|
1875
|
|
|
|
|
|
|
void XST_mPV(int pos, char* str)','name' => 'XST_mPV'},'vverify' => {'text' => 'Validates that the SV contains a valid version object. |
1876
|
|
|
|
|
|
|
|
1877
|
|
|
|
|
|
|
bool vverify(SV *vobj); |
1878
|
|
|
|
|
|
|
|
1879
|
|
|
|
|
|
|
Note that it only confirms the bare minimum structure (so as not to get |
1880
|
|
|
|
|
|
|
confused by derived classes which may contain additional hash entries): |
1881
|
|
|
|
|
|
|
|
1882
|
|
|
|
|
|
|
bool vverify(SV *vs)','name' => 'vverify'},'dXSI32' => {'text' => 'Sets up the C variable for an XSUB which has aliases. This is usually |
1883
|
|
|
|
|
|
|
handled automatically by C. |
1884
|
|
|
|
|
|
|
|
1885
|
|
|
|
|
|
|
dXSI32;','name' => 'dXSI32'},'SvPVx' => {'text' => 'A version of C which guarantees to evaluate C only once. |
1886
|
|
|
|
|
|
|
Only use this if C is an expression with side effects, otherwise use the |
1887
|
|
|
|
|
|
|
more efficient C. |
1888
|
|
|
|
|
|
|
|
1889
|
|
|
|
|
|
|
char* SvPVx(SV* sv, STRLEN len)','name' => 'SvPVx'},'dXCPT' => {'text' => 'Set up necessary local variables for exception handling. |
1890
|
|
|
|
|
|
|
See L. |
1891
|
|
|
|
|
|
|
|
1892
|
|
|
|
|
|
|
dXCPT;','name' => 'dXCPT'},'sv_tainted' => {'text' => 'Test an SV for taintedness. Use C instead. |
1893
|
|
|
|
|
|
|
bool sv_tainted(SV* sv)','name' => 'sv_tainted'},'sv_grow' => {'text' => 'Expands the character buffer in the SV. If necessary, uses C and |
1894
|
|
|
|
|
|
|
upgrades the SV to C. Returns a pointer to the character buffer. |
1895
|
|
|
|
|
|
|
Use the C wrapper instead. |
1896
|
|
|
|
|
|
|
|
1897
|
|
|
|
|
|
|
char* sv_grow(SV* sv, STRLEN newlen)','name' => 'sv_grow'},'vnormal' => {'text' => 'Accepts a version object and returns the normalized string |
1898
|
|
|
|
|
|
|
representation. Call like: |
1899
|
|
|
|
|
|
|
|
1900
|
|
|
|
|
|
|
sv = vnormal(rv); |
1901
|
|
|
|
|
|
|
|
1902
|
|
|
|
|
|
|
NOTE: you can pass either the object directly or the SV |
1903
|
|
|
|
|
|
|
contained within the RV. |
1904
|
|
|
|
|
|
|
|
1905
|
|
|
|
|
|
|
SV* vnormal(SV *vs)','name' => 'vnormal'},'cv_const_sv' => {'text' => 'If C is a constant sub eligible for inlining. returns the constant |
1906
|
|
|
|
|
|
|
value returned by the sub. Otherwise, returns NULL. |
1907
|
|
|
|
|
|
|
|
1908
|
|
|
|
|
|
|
Constant subs can be created with C or as described in |
1909
|
|
|
|
|
|
|
L. |
1910
|
|
|
|
|
|
|
|
1911
|
|
|
|
|
|
|
SV* cv_const_sv(CV* cv)','name' => 'cv_const_sv'},'newSVnv' => {'text' => 'Creates a new SV and copies a floating point value into it. |
1912
|
|
|
|
|
|
|
The reference count for the SV is set to 1. |
1913
|
|
|
|
|
|
|
|
1914
|
|
|
|
|
|
|
SV* newSVnv(NV n)','name' => 'newSVnv'},'XPUSHs' => {'text' => 'Push an SV onto the stack, extending the stack if necessary. Does not |
1915
|
|
|
|
|
|
|
handle \'set\' magic. Does not use C. See also C, |
1916
|
|
|
|
|
|
|
C and C. |
1917
|
|
|
|
|
|
|
|
1918
|
|
|
|
|
|
|
void XPUSHs(SV* sv)','name' => 'XPUSHs'},'HeVAL' => {'text' => 'Returns the value slot (type C) stored in the hash entry. |
1919
|
|
|
|
|
|
|
|
1920
|
|
|
|
|
|
|
SV* HeVAL(HE* he)','name' => 'HeVAL'},'HePV' => {'text' => 'Returns the key slot of the hash entry as a C value, doing any |
1921
|
|
|
|
|
|
|
necessary dereferencing of possibly C keys. The length of the string |
1922
|
|
|
|
|
|
|
is placed in C (this is a macro, so do I use C<&len>). If you do |
1923
|
|
|
|
|
|
|
not care about what the length of the key is, you may use the global |
1924
|
|
|
|
|
|
|
variable C, though this is rather less efficient than using a local |
1925
|
|
|
|
|
|
|
variable. Remember though, that hash keys in perl are free to contain |
1926
|
|
|
|
|
|
|
embedded nulls, so using C or similar is not a good way to find |
1927
|
|
|
|
|
|
|
the length of hash keys. This is very similar to the C macro |
1928
|
|
|
|
|
|
|
described elsewhere in this document. |
1929
|
|
|
|
|
|
|
|
1930
|
|
|
|
|
|
|
char* HePV(HE* he, STRLEN len)','name' => 'HePV'},'pv_uni_display' => {'text' => 'Build to the scalar dsv a displayable version of the string spv, |
1931
|
|
|
|
|
|
|
length len, the displayable version being at most pvlim bytes long |
1932
|
|
|
|
|
|
|
(if longer, the rest is truncated and "..." will be appended). |
1933
|
|
|
|
|
|
|
|
1934
|
|
|
|
|
|
|
The flags argument can have UNI_DISPLAY_ISPRINT set to display |
1935
|
|
|
|
|
|
|
isPRINT()able characters as themselves, UNI_DISPLAY_BACKSLASH |
1936
|
|
|
|
|
|
|
to display the \\\\[nrfta\\\\] as the backslashed versions (like \'\\n\') |
1937
|
|
|
|
|
|
|
(UNI_DISPLAY_BACKSLASH is preferred over UNI_DISPLAY_ISPRINT for \\\\). |
1938
|
|
|
|
|
|
|
UNI_DISPLAY_QQ (and its alias UNI_DISPLAY_REGEX) have both |
1939
|
|
|
|
|
|
|
UNI_DISPLAY_BACKSLASH and UNI_DISPLAY_ISPRINT turned on. |
1940
|
|
|
|
|
|
|
|
1941
|
|
|
|
|
|
|
The pointer to the PV of the dsv is returned. |
1942
|
|
|
|
|
|
|
|
1943
|
|
|
|
|
|
|
char* pv_uni_display(SV *dsv, const U8 *spv, STRLEN len, STRLEN pvlim, UV flags)','name' => 'pv_uni_display'},'SvGETMAGIC' => {'text' => 'Invokes C on an SV if it has \'get\' magic. This macro evaluates its |
1944
|
|
|
|
|
|
|
argument more than once. |
1945
|
|
|
|
|
|
|
|
1946
|
|
|
|
|
|
|
void SvGETMAGIC(SV* sv)','name' => 'SvGETMAGIC'},'sv_inc' => {'text' => 'Auto-increment of the value in the SV, doing string to numeric conversion |
1947
|
|
|
|
|
|
|
if necessary. Handles \'get\' magic. |
1948
|
|
|
|
|
|
|
|
1949
|
|
|
|
|
|
|
void sv_inc(SV* sv)','name' => 'sv_inc'},'sv_usepvn' => {'text' => 'Tells an SV to use C to find its string value. Implemented by |
1950
|
|
|
|
|
|
|
calling C with C of 0, hence does not handle \'set\' |
1951
|
|
|
|
|
|
|
magic. See C. |
1952
|
|
|
|
|
|
|
|
1953
|
|
|
|
|
|
|
void sv_usepvn(SV* sv, char* ptr, STRLEN len)','name' => 'sv_usepvn'},'SvPVbytex_force' => {'text' => 'Like C, but converts sv to byte representation first if necessary. |
1954
|
|
|
|
|
|
|
Guarantees to evaluate sv only once; use the more efficient C |
1955
|
|
|
|
|
|
|
otherwise. |
1956
|
|
|
|
|
|
|
|
1957
|
|
|
|
|
|
|
char* SvPVbytex_force(SV* sv, STRLEN len)','name' => 'SvPVbytex_force'},'SvREFCNT' => {'text' => 'Returns the value of the object\'s reference count. |
1958
|
|
|
|
|
|
|
|
1959
|
|
|
|
|
|
|
U32 SvREFCNT(SV* sv)','name' => 'SvREFCNT'},'warn' => {'text' => 'This is the XSUB-writer\'s interface to Perl\'s C function. Call this |
1960
|
|
|
|
|
|
|
function the same way you call the C C function. See C. |
1961
|
|
|
|
|
|
|
|
1962
|
|
|
|
|
|
|
void warn(const char* pat, ...)','name' => 'warn'},'hv_delete' => {'text' => 'Deletes a key/value pair in the hash. The value SV is removed from the |
1963
|
|
|
|
|
|
|
hash and returned to the caller. The C is the length of the key. |
1964
|
|
|
|
|
|
|
The C value will normally be zero; if set to G_DISCARD then NULL |
1965
|
|
|
|
|
|
|
will be returned. |
1966
|
|
|
|
|
|
|
|
1967
|
|
|
|
|
|
|
SV* hv_delete(HV* tb, const char* key, I32 klen, I32 flags)','name' => 'hv_delete'},'sv_cat_decode' => {'text' => 'The encoding is assumed to be an Encode object, the PV of the ssv is |
1968
|
|
|
|
|
|
|
assumed to be octets in that encoding and decoding the input starts |
1969
|
|
|
|
|
|
|
from the position which (PV + *offset) pointed to. The dsv will be |
1970
|
|
|
|
|
|
|
concatenated the decoded UTF-8 string from ssv. Decoding will terminate |
1971
|
|
|
|
|
|
|
when the string tstr appears in decoding output or the input ends on |
1972
|
|
|
|
|
|
|
the PV of the ssv. The value which the offset points will be modified |
1973
|
|
|
|
|
|
|
to the last input position on the ssv. |
1974
|
|
|
|
|
|
|
|
1975
|
|
|
|
|
|
|
Returns TRUE if the terminator was found, else returns FALSE. |
1976
|
|
|
|
|
|
|
|
1977
|
|
|
|
|
|
|
bool sv_cat_decode(SV* dsv, SV *encoding, SV *ssv, int *offset, char* tstr, int tlen)','name' => 'sv_cat_decode'},'POP_MULTICALL' => {'text' => 'Closing bracket for a lightweight callback. |
1978
|
|
|
|
|
|
|
See L. |
1979
|
|
|
|
|
|
|
|
1980
|
|
|
|
|
|
|
POP_MULTICALL;','name' => 'POP_MULTICALL'},'SvIV_set' => {'text' => 'Set the value of the IV pointer in sv to val. It is possible to perform |
1981
|
|
|
|
|
|
|
the same function of this macro with an lvalue assignment to C. |
1982
|
|
|
|
|
|
|
With future Perls, however, it will be more efficient to use |
1983
|
|
|
|
|
|
|
C instead of the lvalue assignment to C. |
1984
|
|
|
|
|
|
|
|
1985
|
|
|
|
|
|
|
void SvIV_set(SV* sv, IV val)','name' => 'SvIV_set'},'sv_setiv' => {'text' => 'Copies an integer into the given SV, upgrading first if necessary. |
1986
|
|
|
|
|
|
|
Does not handle \'set\' magic. See also C. |
1987
|
|
|
|
|
|
|
|
1988
|
|
|
|
|
|
|
void sv_setiv(SV* sv, IV num)','name' => 'sv_setiv'},'sv_report_used' => {'text' => 'Dump the contents of all SVs not yet freed. (Debugging aid). |
1989
|
|
|
|
|
|
|
|
1990
|
|
|
|
|
|
|
void sv_report_used()','name' => 'sv_report_used'},'EXTEND' => {'text' => 'Used to extend the argument stack for an XSUB\'s return values. Once |
1991
|
|
|
|
|
|
|
used, guarantees that there is room for at least C to be pushed |
1992
|
|
|
|
|
|
|
onto the stack. |
1993
|
|
|
|
|
|
|
|
1994
|
|
|
|
|
|
|
void EXTEND(SP, int nitems)','name' => 'EXTEND'},'SvNVX' => {'text' => 'Returns the raw value in the SV\'s NV slot, without checks or conversions. |
1995
|
|
|
|
|
|
|
Only use when you are sure SvNOK is true. See also C. |
1996
|
|
|
|
|
|
|
|
1997
|
|
|
|
|
|
|
NV SvNVX(SV* sv)','name' => 'SvNVX'},'newSVuv' => {'text' => 'Creates a new SV and copies an unsigned integer into it. |
1998
|
|
|
|
|
|
|
The reference count for the SV is set to 1. |
1999
|
|
|
|
|
|
|
|
2000
|
|
|
|
|
|
|
SV* newSVuv(UV u)','name' => 'newSVuv'},'gv_fetchmeth' => {'text' => 'Returns the glob with the given C and a defined subroutine or |
2001
|
|
|
|
|
|
|
C. The glob lives in the given C, or in the stashes |
2002
|
|
|
|
|
|
|
accessible via @ISA and UNIVERSAL::. |
2003
|
|
|
|
|
|
|
|
2004
|
|
|
|
|
|
|
The argument C should be either 0 or -1. If C, as a |
2005
|
|
|
|
|
|
|
side-effect creates a glob with the given C in the given C |
2006
|
|
|
|
|
|
|
which in the case of success contains an alias for the subroutine, and sets |
2007
|
|
|
|
|
|
|
up caching info for this glob. |
2008
|
|
|
|
|
|
|
|
2009
|
|
|
|
|
|
|
This function grants C<"SUPER"> token as a postfix of the stash name. The |
2010
|
|
|
|
|
|
|
GV returned from C may be a method cache entry, which is not |
2011
|
|
|
|
|
|
|
visible to Perl code. So when calling C, you should not use |
2012
|
|
|
|
|
|
|
the GV directly; instead, you should use the method\'s CV, which can be |
2013
|
|
|
|
|
|
|
obtained from the GV with the C macro. |
2014
|
|
|
|
|
|
|
|
2015
|
|
|
|
|
|
|
GV* gv_fetchmeth(HV* stash, const char* name, STRLEN len, I32 level)','name' => 'gv_fetchmeth'},'HeHASH' => {'text' => 'Returns the computed hash stored in the hash entry. |
2016
|
|
|
|
|
|
|
|
2017
|
|
|
|
|
|
|
U32 HeHASH(HE* he)','name' => 'HeHASH'},'SvIOK' => {'text' => 'Returns a U32 value indicating whether the SV contains an integer. |
2018
|
|
|
|
|
|
|
|
2019
|
|
|
|
|
|
|
U32 SvIOK(SV* sv)','name' => 'SvIOK'},'sv_does' => {'text' => 'Returns a boolean indicating whether the SV performs a specific, named role. |
2020
|
|
|
|
|
|
|
The SV can be a Perl object or the name of a Perl class. |
2021
|
|
|
|
|
|
|
|
2022
|
|
|
|
|
|
|
bool sv_does(SV* sv, const char* name)','name' => 'sv_does'},'SvPV_force' => {'text' => 'Like C but will force the SV into containing just a string |
2023
|
|
|
|
|
|
|
(C). You want force if you are going to update the C |
2024
|
|
|
|
|
|
|
directly. |
2025
|
|
|
|
|
|
|
|
2026
|
|
|
|
|
|
|
char* SvPV_force(SV* sv, STRLEN len)','name' => 'SvPV_force'},'SvLEN' => {'text' => 'Returns the size of the string buffer in the SV, not including any part |
2027
|
|
|
|
|
|
|
attributable to C. See C. |
2028
|
|
|
|
|
|
|
|
2029
|
|
|
|
|
|
|
STRLEN SvLEN(SV* sv)','name' => 'SvLEN'},'SvPOK_only_UTF8' => {'text' => 'Tells an SV that it is a string and disables all other OK bits, |
2030
|
|
|
|
|
|
|
and leaves the UTF-8 status as it was. |
2031
|
|
|
|
|
|
|
|
2032
|
|
|
|
|
|
|
void SvPOK_only_UTF8(SV* sv)','name' => 'SvPOK_only_UTF8'},'mg_get' => {'text' => 'Do magic after a value is retrieved from the SV. See C. |
2033
|
|
|
|
|
|
|
|
2034
|
|
|
|
|
|
|
int mg_get(SV* sv)','name' => 'mg_get'},'SvTRUE' => {'text' => 'Returns a boolean indicating whether Perl would evaluate the SV as true or |
2035
|
|
|
|
|
|
|
false, defined or undefined. Does not handle \'get\' magic. |
2036
|
|
|
|
|
|
|
|
2037
|
|
|
|
|
|
|
bool SvTRUE(SV* sv)','name' => 'SvTRUE'},'grok_hex' => {'text' => 'converts a string representing a hex number to numeric form. |
2038
|
|
|
|
|
|
|
|
2039
|
|
|
|
|
|
|
On entry I and I<*len> give the string to scan, I<*flags> gives |
2040
|
|
|
|
|
|
|
conversion flags, and I should be NULL or a pointer to an NV. |
2041
|
|
|
|
|
|
|
The scan stops at the end of the string, or the first invalid character. |
2042
|
|
|
|
|
|
|
Unless C is set in I<*flags>, encountering an |
2043
|
|
|
|
|
|
|
invalid character will also trigger a warning. |
2044
|
|
|
|
|
|
|
On return I<*len> is set to the length of the scanned string, |
2045
|
|
|
|
|
|
|
and I<*flags> gives output flags. |
2046
|
|
|
|
|
|
|
|
2047
|
|
|
|
|
|
|
If the value is <= UV_MAX it is returned as a UV, the output flags are clear, |
2048
|
|
|
|
|
|
|
and nothing is written to I<*result>. If the value is > UV_MAX C |
2049
|
|
|
|
|
|
|
returns UV_MAX, sets C in the output flags, |
2050
|
|
|
|
|
|
|
and writes the value to I<*result> (or the value is discarded if I |
2051
|
|
|
|
|
|
|
is NULL). |
2052
|
|
|
|
|
|
|
|
2053
|
|
|
|
|
|
|
The hex number may optionally be prefixed with "0x" or "x" unless |
2054
|
|
|
|
|
|
|
C is set in I<*flags> on entry. If |
2055
|
|
|
|
|
|
|
C is set in I<*flags> then the hex |
2056
|
|
|
|
|
|
|
number may use \'_\' characters to separate digits. |
2057
|
|
|
|
|
|
|
|
2058
|
|
|
|
|
|
|
UV grok_hex(const char* start, STRLEN* len_p, I32* flags, NV *result)','name' => 'grok_hex'},'hv_iternext_flags' => {'text' => 'Returns entries from a hash iterator. See C and C. |
2059
|
|
|
|
|
|
|
The C value will normally be zero; if HV_ITERNEXT_WANTPLACEHOLDERS is |
2060
|
|
|
|
|
|
|
set the placeholders keys (for restricted hashes) will be returned in addition |
2061
|
|
|
|
|
|
|
to normal keys. By default placeholders are automatically skipped over. |
2062
|
|
|
|
|
|
|
Currently a placeholder is implemented with a value that is |
2063
|
|
|
|
|
|
|
C<&Perl_sv_placeholder>. Note that the implementation of placeholders and |
2064
|
|
|
|
|
|
|
restricted hashes may change, and the implementation currently is |
2065
|
|
|
|
|
|
|
insufficiently abstracted for any change to be tidy. |
2066
|
|
|
|
|
|
|
|
2067
|
|
|
|
|
|
|
NOTE: this function is experimental and may change or be |
2068
|
|
|
|
|
|
|
removed without notice. |
2069
|
|
|
|
|
|
|
|
2070
|
|
|
|
|
|
|
HE* hv_iternext_flags(HV* tb, I32 flags)','name' => 'hv_iternext_flags'},'is_utf8_string_loclen' => {'text' => 'Like is_utf8_string() but stores the location of the failure (in the |
2071
|
|
|
|
|
|
|
case of "utf8ness failure") or the location s+len (in the case of |
2072
|
|
|
|
|
|
|
"utf8ness success") in the C, and the number of UTF-8 |
2073
|
|
|
|
|
|
|
encoded characters in the C. |
2074
|
|
|
|
|
|
|
|
2075
|
|
|
|
|
|
|
See also is_utf8_string_loc() and is_utf8_string(). |
2076
|
|
|
|
|
|
|
|
2077
|
|
|
|
|
|
|
bool is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el)','name' => 'is_utf8_string_loclen'},'call_method' => {'text' => 'Performs a callback to the specified Perl method. The blessed object must |
2078
|
|
|
|
|
|
|
be on the stack. See L. |
2079
|
|
|
|
|
|
|
|
2080
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
2081
|
|
|
|
|
|
|
|
2082
|
|
|
|
|
|
|
I32 call_method(const char* methname, I32 flags)','name' => 'call_method'},'SvLOCK' => {'text' => 'Arranges for a mutual exclusion lock to be obtained on sv if a suitable module |
2083
|
|
|
|
|
|
|
has been loaded. |
2084
|
|
|
|
|
|
|
|
2085
|
|
|
|
|
|
|
void SvLOCK(SV* sv)','name' => 'SvLOCK'},'sv_vsetpvfn' => {'text' => 'Works like C but copies the text into the SV instead of |
2086
|
|
|
|
|
|
|
appending it. |
2087
|
|
|
|
|
|
|
|
2088
|
|
|
|
|
|
|
Usually used via one of its frontends C and C. |
2089
|
|
|
|
|
|
|
|
2090
|
|
|
|
|
|
|
void sv_vsetpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)','name' => 'sv_vsetpvfn'},'perl_parse' => {'text' => 'Tells a Perl interpreter to parse a Perl script. See L. |
2091
|
|
|
|
|
|
|
|
2092
|
|
|
|
|
|
|
int perl_parse(PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env)','name' => 'perl_parse'},'to_utf8_case' => {'text' => 'The "p" contains the pointer to the UTF-8 string encoding |
2093
|
|
|
|
|
|
|
the character that is being converted. |
2094
|
|
|
|
|
|
|
|
2095
|
|
|
|
|
|
|
The "ustrp" is a pointer to the character buffer to put the |
2096
|
|
|
|
|
|
|
conversion result to. The "lenp" is a pointer to the length |
2097
|
|
|
|
|
|
|
of the result. |
2098
|
|
|
|
|
|
|
|
2099
|
|
|
|
|
|
|
The "swashp" is a pointer to the swash to use. |
2100
|
|
|
|
|
|
|
|
2101
|
|
|
|
|
|
|
Both the special and normal mappings are stored lib/unicore/To/Foo.pl, |
2102
|
|
|
|
|
|
|
and loaded by SWASHNEW, using lib/utf8_heavy.pl. The special (usually, |
2103
|
|
|
|
|
|
|
but not always, a multicharacter mapping), is tried first. |
2104
|
|
|
|
|
|
|
|
2105
|
|
|
|
|
|
|
The "special" is a string like "utf8::ToSpecLower", which means the |
2106
|
|
|
|
|
|
|
hash %utf8::ToSpecLower. The access to the hash is through |
2107
|
|
|
|
|
|
|
Perl_to_utf8_case(). |
2108
|
|
|
|
|
|
|
|
2109
|
|
|
|
|
|
|
The "normal" is a string like "ToLower" which means the swash |
2110
|
|
|
|
|
|
|
%utf8::ToLower. |
2111
|
|
|
|
|
|
|
|
2112
|
|
|
|
|
|
|
UV to_utf8_case(const U8 *p, U8* ustrp, STRLEN *lenp, SV **swashp, const char *normal, const char *special)','name' => 'to_utf8_case'},'av_clear' => {'text' => 'Clears an array, making it empty. Does not free the memory used by the |
2113
|
|
|
|
|
|
|
array itself. |
2114
|
|
|
|
|
|
|
|
2115
|
|
|
|
|
|
|
void av_clear(AV* ar)','name' => 'av_clear'},'sv_force_normal' => {'text' => 'Undo various types of fakery on an SV: if the PV is a shared string, make |
2116
|
|
|
|
|
|
|
a private copy; if we\'re a ref, stop refing; if we\'re a glob, downgrade to |
2117
|
|
|
|
|
|
|
an xpvmg. See also C. |
2118
|
|
|
|
|
|
|
|
2119
|
|
|
|
|
|
|
void sv_force_normal(SV *sv)','name' => 'sv_force_normal'},'av_unshift' => {'text' => 'Unshift the given number of C values onto the beginning of the |
2120
|
|
|
|
|
|
|
array. The array will grow automatically to accommodate the addition. You |
2121
|
|
|
|
|
|
|
must then use C to assign values to these new elements. |
2122
|
|
|
|
|
|
|
|
2123
|
|
|
|
|
|
|
void av_unshift(AV* ar, I32 num)','name' => 'av_unshift'},'SvREFCNT_inc_NN' => {'text' => 'Same as SvREFCNT_inc, but can only be used if you know I |
2124
|
|
|
|
|
|
|
is not NULL. Since we don\'t have to check the NULLness, it\'s faster |
2125
|
|
|
|
|
|
|
and smaller. |
2126
|
|
|
|
|
|
|
|
2127
|
|
|
|
|
|
|
SV* SvREFCNT_inc_NN(SV* sv)','name' => 'SvREFCNT_inc_NN'},'POPpbytex' => {'text' => 'Pops a string off the stack which must consist of bytes i.e. characters < 256. |
2128
|
|
|
|
|
|
|
|
2129
|
|
|
|
|
|
|
char* POPpbytex','name' => 'POPpbytex'},'SvUVX' => {'text' => 'Returns the raw value in the SV\'s UV slot, without checks or conversions. |
2130
|
|
|
|
|
|
|
Only use when you are sure SvIOK is true. See also C. |
2131
|
|
|
|
|
|
|
|
2132
|
|
|
|
|
|
|
UV SvUVX(SV* sv)','name' => 'SvUVX'},'SvSetMagicSV' => {'text' => 'Like C, but does any set magic required afterwards. |
2133
|
|
|
|
|
|
|
|
2134
|
|
|
|
|
|
|
void SvSetMagicSV(SV* dsb, SV* ssv)','name' => 'SvSetMagicSV'},'sv_utf8_decode' => {'text' => 'If the PV of the SV is an octet sequence in UTF-8 |
2135
|
|
|
|
|
|
|
and contains a multiple-byte character, the C flag is turned on |
2136
|
|
|
|
|
|
|
so that it looks like a character. If the PV contains only single-byte |
2137
|
|
|
|
|
|
|
characters, the C flag stays being off. |
2138
|
|
|
|
|
|
|
Scans PV for validity and returns false if the PV is invalid UTF-8. |
2139
|
|
|
|
|
|
|
|
2140
|
|
|
|
|
|
|
NOTE: this function is experimental and may change or be |
2141
|
|
|
|
|
|
|
removed without notice. |
2142
|
|
|
|
|
|
|
|
2143
|
|
|
|
|
|
|
bool sv_utf8_decode(SV *sv)','name' => 'sv_utf8_decode'},'hv_stores' => {'text' => 'Like C, but takes a literal string instead of a string/length pair |
2144
|
|
|
|
|
|
|
and omits the hash parameter. |
2145
|
|
|
|
|
|
|
|
2146
|
|
|
|
|
|
|
SV** hv_stores(HV* tb, const char* key, NULLOK SV* val)','name' => 'hv_stores'},'eval_sv' => {'text' => 'Tells Perl to C the string in the SV. |
2147
|
|
|
|
|
|
|
|
2148
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
2149
|
|
|
|
|
|
|
|
2150
|
|
|
|
|
|
|
I32 eval_sv(SV* sv, I32 flags)','name' => 'eval_sv'},'FREETMPS' => {'text' => 'Closing bracket for temporaries on a callback. See C and |
2151
|
|
|
|
|
|
|
L. |
2152
|
|
|
|
|
|
|
|
2153
|
|
|
|
|
|
|
FREETMPS;','name' => 'FREETMPS'},'Move' => {'text' => 'The XSUB-writer\'s interface to the C C function. The C is the |
2154
|
|
|
|
|
|
|
source, C is the destination, C is the number of items, and C is |
2155
|
|
|
|
|
|
|
the type. Can do overlapping moves. See also C. |
2156
|
|
|
|
|
|
|
|
2157
|
|
|
|
|
|
|
void Move(void* src, void* dest, int nitems, type)','name' => 'Move'},'sv_catpvn_flags' => {'text' => 'Concatenates the string onto the end of the string which is in the SV. The |
2158
|
|
|
|
|
|
|
C indicates number of bytes to copy. If the SV has the UTF-8 |
2159
|
|
|
|
|
|
|
status set, then the bytes appended should be valid UTF-8. |
2160
|
|
|
|
|
|
|
If C has C bit set, will C on C if |
2161
|
|
|
|
|
|
|
appropriate, else not. C and C are implemented |
2162
|
|
|
|
|
|
|
in terms of this function. |
2163
|
|
|
|
|
|
|
|
2164
|
|
|
|
|
|
|
void sv_catpvn_flags(SV* sv, const char* ptr, STRLEN len, I32 flags)','name' => 'sv_catpvn_flags'},'sv_pvn_force' => {'text' => 'Get a sensible string out of the SV somehow. |
2165
|
|
|
|
|
|
|
A private implementation of the C macro for compilers which |
2166
|
|
|
|
|
|
|
can\'t cope with complex macro expressions. Always use the macro instead. |
2167
|
|
|
|
|
|
|
|
2168
|
|
|
|
|
|
|
char* sv_pvn_force(SV* sv, STRLEN* lp)','name' => 'sv_pvn_force'},'GIMME' => {'text' => 'A backward-compatible version of C which can only return |
2169
|
|
|
|
|
|
|
C or C; in a void context, it returns C. |
2170
|
|
|
|
|
|
|
Deprecated. Use C instead. |
2171
|
|
|
|
|
|
|
|
2172
|
|
|
|
|
|
|
U32 GIMME','name' => 'GIMME'},'sv_2iv_flags' => {'text' => 'Return the integer value of an SV, doing any necessary string |
2173
|
|
|
|
|
|
|
conversion. If flags includes SV_GMAGIC, does an mg_get() first. |
2174
|
|
|
|
|
|
|
Normally used via the C and C macros. |
2175
|
|
|
|
|
|
|
|
2176
|
|
|
|
|
|
|
IV sv_2iv_flags(SV* sv, I32 flags)','name' => 'sv_2iv_flags'},'newXS' => {'text' => 'Used by C to hook up XSUBs as Perl subs. I needs to be |
2177
|
|
|
|
|
|
|
static storage, as it is used directly as CvFILE(), without a copy being made.','name' => 'newXS'},'isALNUM' => {'text' => 'Returns a boolean indicating whether the C C is an ASCII alphanumeric |
2178
|
|
|
|
|
|
|
character (including underscore) or digit. |
2179
|
|
|
|
|
|
|
|
2180
|
|
|
|
|
|
|
bool isALNUM(char ch)','name' => 'isALNUM'},'XCPT_RETHROW' => {'text' => 'Rethrows a previously caught exception. See L. |
2181
|
|
|
|
|
|
|
|
2182
|
|
|
|
|
|
|
XCPT_RETHROW;','name' => 'XCPT_RETHROW'},'my_snprintf' => {'text' => 'The C library C functionality, if available and |
2183
|
|
|
|
|
|
|
standards-compliant (uses C, actually). However, if the |
2184
|
|
|
|
|
|
|
C is not available, will unfortunately use the unsafe |
2185
|
|
|
|
|
|
|
C which can overrun the buffer (there is an overrun check, |
2186
|
|
|
|
|
|
|
but that may be too late). Consider using C instead, or |
2187
|
|
|
|
|
|
|
getting C. |
2188
|
|
|
|
|
|
|
|
2189
|
|
|
|
|
|
|
int my_snprintf(char *buffer, const Size_t len, const char *format, ...)','name' => 'my_snprintf'},'SvIOK_UV' => {'text' => 'Returns a boolean indicating whether the SV contains an unsigned integer. |
2190
|
|
|
|
|
|
|
|
2191
|
|
|
|
|
|
|
bool SvIOK_UV(SV* sv)','name' => 'SvIOK_UV'},'PUSHmortal' => {'text' => 'Push a new mortal SV onto the stack. The stack must have room for this |
2192
|
|
|
|
|
|
|
element. Does not handle \'set\' magic. Does not use C. See also |
2193
|
|
|
|
|
|
|
C, C and C. |
2194
|
|
|
|
|
|
|
|
2195
|
|
|
|
|
|
|
void PUSHmortal()','name' => 'PUSHmortal'},'perl_alloc' => {'text' => 'Allocates a new Perl interpreter. See L. |
2196
|
|
|
|
|
|
|
|
2197
|
|
|
|
|
|
|
PerlInterpreter* perl_alloc()','name' => 'perl_alloc'},'perl_construct' => {'text' => 'Initializes a new Perl interpreter. See L. |
2198
|
|
|
|
|
|
|
|
2199
|
|
|
|
|
|
|
void perl_construct(PerlInterpreter* interp)','name' => 'perl_construct'},'SvUOK' => {'text' => 'Returns a boolean indicating whether the SV contains an unsigned integer. |
2200
|
|
|
|
|
|
|
|
2201
|
|
|
|
|
|
|
bool SvUOK(SV* sv)','name' => 'SvUOK'},'sv_dec' => {'text' => 'Auto-decrement of the value in the SV, doing string to numeric conversion |
2202
|
|
|
|
|
|
|
if necessary. Handles \'get\' magic. |
2203
|
|
|
|
|
|
|
|
2204
|
|
|
|
|
|
|
void sv_dec(SV* sv)','name' => 'sv_dec'},'strLE' => {'text' => 'Test two strings to see if the first, C, is less than or equal to the |
2205
|
|
|
|
|
|
|
second, C. Returns true or false. |
2206
|
|
|
|
|
|
|
|
2207
|
|
|
|
|
|
|
bool strLE(char* s1, char* s2)','name' => 'strLE'},'pv_display' => {'text' => 'char *pv_display(SV *dsv, const char *pv, STRLEN cur, STRLEN len, |
2208
|
|
|
|
|
|
|
STRLEN pvlim, U32 flags) |
2209
|
|
|
|
|
|
|
|
2210
|
|
|
|
|
|
|
Similar to |
2211
|
|
|
|
|
|
|
|
2212
|
|
|
|
|
|
|
pv_escape(dsv,pv,cur,pvlim,PERL_PV_ESCAPE_QUOTE); |
2213
|
|
|
|
|
|
|
|
2214
|
|
|
|
|
|
|
except that an additional "\\0" will be appended to the string when |
2215
|
|
|
|
|
|
|
len > cur and pv[cur] is "\\0". |
2216
|
|
|
|
|
|
|
|
2217
|
|
|
|
|
|
|
Note that the final string may be up to 7 chars longer than pvlim. |
2218
|
|
|
|
|
|
|
|
2219
|
|
|
|
|
|
|
char* pv_display(SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim)','name' => 'pv_display'},'sv_2pvbyte_nolen' => {'text' => 'Return a pointer to the byte-encoded representation of the SV. |
2220
|
|
|
|
|
|
|
May cause the SV to be downgraded from UTF-8 as a side-effect. |
2221
|
|
|
|
|
|
|
|
2222
|
|
|
|
|
|
|
Usually accessed via the C macro. |
2223
|
|
|
|
|
|
|
|
2224
|
|
|
|
|
|
|
char* sv_2pvbyte_nolen(SV* sv)','name' => 'sv_2pvbyte_nolen'},'SvOK' => {'text' => 'Returns a U32 value indicating whether the value is an SV. It also tells |
2225
|
|
|
|
|
|
|
whether the value is defined or not. |
2226
|
|
|
|
|
|
|
|
2227
|
|
|
|
|
|
|
U32 SvOK(SV* sv)','name' => 'SvOK'},'sv_setref_nv' => {'text' => 'Copies a double into a new SV, optionally blessing the SV. The C |
2228
|
|
|
|
|
|
|
argument will be upgraded to an RV. That RV will be modified to point to |
2229
|
|
|
|
|
|
|
the new SV. The C argument indicates the package for the |
2230
|
|
|
|
|
|
|
blessing. Set C to C to avoid the blessing. The new SV |
2231
|
|
|
|
|
|
|
will have a reference count of 1, and the RV will be returned. |
2232
|
|
|
|
|
|
|
|
2233
|
|
|
|
|
|
|
SV* sv_setref_nv(SV* rv, const char* classname, NV nv)','name' => 'sv_setref_nv'},'uvchr_to_utf8' => {'text' => 'Adds the UTF-8 representation of the Native codepoint C to the end |
2234
|
|
|
|
|
|
|
of the string C; C should be have at least C free |
2235
|
|
|
|
|
|
|
bytes available. The return value is the pointer to the byte after the |
2236
|
|
|
|
|
|
|
end of the new character. In other words, |
2237
|
|
|
|
|
|
|
|
2238
|
|
|
|
|
|
|
d = uvchr_to_utf8(d, uv); |
2239
|
|
|
|
|
|
|
|
2240
|
|
|
|
|
|
|
is the recommended wide native character-aware way of saying |
2241
|
|
|
|
|
|
|
|
2242
|
|
|
|
|
|
|
*(d++) = uv; |
2243
|
|
|
|
|
|
|
|
2244
|
|
|
|
|
|
|
U8* uvchr_to_utf8(U8 *d, UV uv)','name' => 'uvchr_to_utf8'},'isDIGIT' => {'text' => 'Returns a boolean indicating whether the C C is an ASCII |
2245
|
|
|
|
|
|
|
digit. |
2246
|
|
|
|
|
|
|
|
2247
|
|
|
|
|
|
|
bool isDIGIT(char ch)','name' => 'isDIGIT'},'eval_pv' => {'text' => 'Tells Perl to C the given string and return an SV* result. |
2248
|
|
|
|
|
|
|
|
2249
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
2250
|
|
|
|
|
|
|
|
2251
|
|
|
|
|
|
|
SV* eval_pv(const char* p, I32 croak_on_error)','name' => 'eval_pv'},'sv_usepvn_flags' => {'text' => 'Tells an SV to use C to find its string value. Normally the |
2252
|
|
|
|
|
|
|
string is stored inside the SV but sv_usepvn allows the SV to use an |
2253
|
|
|
|
|
|
|
outside string. The C should point to memory that was allocated |
2254
|
|
|
|
|
|
|
by C. The string length, C, must be supplied. By default |
2255
|
|
|
|
|
|
|
this function will realloc (i.e. move) the memory pointed to by C, |
2256
|
|
|
|
|
|
|
so that pointer should not be freed or used by the programmer after |
2257
|
|
|
|
|
|
|
giving it to sv_usepvn, and neither should any pointers from "behind" |
2258
|
|
|
|
|
|
|
that pointer (e.g. ptr + 1) be used. |
2259
|
|
|
|
|
|
|
|
2260
|
|
|
|
|
|
|
If C & SV_SMAGIC is true, will call SvSETMAGIC. If C & |
2261
|
|
|
|
|
|
|
SV_HAS_TRAILING_NUL is true, then C must be NUL, and the realloc |
2262
|
|
|
|
|
|
|
will be skipped. (i.e. the buffer is actually at least 1 byte longer than |
2263
|
|
|
|
|
|
|
C, and already meets the requirements for storing in C) |
2264
|
|
|
|
|
|
|
|
2265
|
|
|
|
|
|
|
void sv_usepvn_flags(SV* sv, char* ptr, STRLEN len, U32 flags)','name' => 'sv_usepvn_flags'},'hv_assert' => {'text' => 'Check that a hash is in an internally consistent state. |
2266
|
|
|
|
|
|
|
|
2267
|
|
|
|
|
|
|
void hv_assert(HV* tb)','name' => 'hv_assert'},'my_vsnprintf' => {'text' => 'The C library C if available and standards-compliant. |
2268
|
|
|
|
|
|
|
However, if if the C is not available, will unfortunately |
2269
|
|
|
|
|
|
|
use the unsafe C which can overrun the buffer (there is an |
2270
|
|
|
|
|
|
|
overrun check, but that may be too late). Consider using |
2271
|
|
|
|
|
|
|
C instead, or getting C. |
2272
|
|
|
|
|
|
|
|
2273
|
|
|
|
|
|
|
int my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap)','name' => 'my_vsnprintf'},'sv_free' => {'text' => 'Decrement an SV\'s reference count, and if it drops to zero, call |
2274
|
|
|
|
|
|
|
C to invoke destructors and free up any memory used by |
2275
|
|
|
|
|
|
|
the body; finally, deallocate the SV\'s head itself. |
2276
|
|
|
|
|
|
|
Normally called via a wrapper macro C. |
2277
|
|
|
|
|
|
|
|
2278
|
|
|
|
|
|
|
void sv_free(SV* sv)','name' => 'sv_free'},'SvPVbyte_force' => {'text' => 'Like C, but converts sv to byte representation first if necessary. |
2279
|
|
|
|
|
|
|
|
2280
|
|
|
|
|
|
|
char* SvPVbyte_force(SV* sv, STRLEN len)','name' => 'SvPVbyte_force'},'newCONSTSUB' => {'text' => 'Creates a constant sub equivalent to Perl C which is |
2281
|
|
|
|
|
|
|
eligible for inlining at compile-time. |
2282
|
|
|
|
|
|
|
|
2283
|
|
|
|
|
|
|
CV* newCONSTSUB(HV* stash, const char* name, SV* sv)','name' => 'newCONSTSUB'},'SvSHARE' => {'text' => 'Arranges for sv to be shared between threads if a suitable module |
2284
|
|
|
|
|
|
|
has been loaded. |
2285
|
|
|
|
|
|
|
|
2286
|
|
|
|
|
|
|
void SvSHARE(SV* sv)','name' => 'SvSHARE'},'av_pop' => {'text' => 'Pops an SV off the end of the array. Returns C<&PL_sv_undef> if the array |
2287
|
|
|
|
|
|
|
is empty. |
2288
|
|
|
|
|
|
|
|
2289
|
|
|
|
|
|
|
SV* av_pop(AV* ar)','name' => 'av_pop'},'croak' => {'text' => 'This is the XSUB-writer\'s interface to Perl\'s C function. |
2290
|
|
|
|
|
|
|
Normally call this function the same way you call the C C |
2291
|
|
|
|
|
|
|
function. Calling C returns control directly to Perl, |
2292
|
|
|
|
|
|
|
sidestepping the normal C order of execution. See C. |
2293
|
|
|
|
|
|
|
|
2294
|
|
|
|
|
|
|
If you want to throw an exception object, assign the object to |
2295
|
|
|
|
|
|
|
C<$@> and then pass C to croak(): |
2296
|
|
|
|
|
|
|
|
2297
|
|
|
|
|
|
|
errsv = get_sv("@", TRUE); |
2298
|
|
|
|
|
|
|
sv_setsv(errsv, exception_object); |
2299
|
|
|
|
|
|
|
croak(NULL); |
2300
|
|
|
|
|
|
|
|
2301
|
|
|
|
|
|
|
void croak(const char* pat, ...)','name' => 'croak'},'sortsv' => {'text' => 'Sort an array. Here is an example: |
2302
|
|
|
|
|
|
|
|
2303
|
|
|
|
|
|
|
sortsv(AvARRAY(av), av_len(av)+1, Perl_sv_cmp_locale); |
2304
|
|
|
|
|
|
|
|
2305
|
|
|
|
|
|
|
Currently this always uses mergesort. See sortsv_flags for a more |
2306
|
|
|
|
|
|
|
flexible routine. |
2307
|
|
|
|
|
|
|
|
2308
|
|
|
|
|
|
|
void sortsv(SV** array, size_t num_elts, SVCOMPARE_t cmp)','name' => 'sortsv'},'THIS' => {'text' => 'Variable which is setup by C to designate the object in a C++ |
2309
|
|
|
|
|
|
|
XSUB. This is always the proper type for the C++ object. See C and |
2310
|
|
|
|
|
|
|
L. |
2311
|
|
|
|
|
|
|
|
2312
|
|
|
|
|
|
|
(whatever) THIS','name' => 'THIS'},'XSRETURN' => {'text' => 'Return from XSUB, indicating number of items on the stack. This is usually |
2313
|
|
|
|
|
|
|
handled by C. |
2314
|
|
|
|
|
|
|
|
2315
|
|
|
|
|
|
|
void XSRETURN(int nitems)','name' => 'XSRETURN'},'scan_bin' => {'text' => 'For backwards compatibility. Use C instead. |
2316
|
|
|
|
|
|
|
|
2317
|
|
|
|
|
|
|
NV scan_bin(const char* start, STRLEN len, STRLEN* retlen)','name' => 'scan_bin'},'Nullcv' => {'text' => 'Null CV pointer.','name' => 'Nullcv'},'get_av' => {'text' => 'Returns the AV of the specified Perl array. If C is set and the |
2318
|
|
|
|
|
|
|
Perl variable does not exist then it will be created. If C is not |
2319
|
|
|
|
|
|
|
set and the variable does not exist then NULL is returned. |
2320
|
|
|
|
|
|
|
|
2321
|
|
|
|
|
|
|
NOTE: the perl_ form of this function is deprecated. |
2322
|
|
|
|
|
|
|
|
2323
|
|
|
|
|
|
|
AV* get_av(const char* name, I32 create)','name' => 'get_av'},'sv_2pv_nolen' => {'text' => 'Like C, but doesn\'t return the length too. You should usually |
2324
|
|
|
|
|
|
|
use the macro wrapper C instead. |
2325
|
|
|
|
|
|
|
char* sv_2pv_nolen(SV* sv)','name' => 'sv_2pv_nolen'},'MULTICALL' => {'text' => 'Make a lightweight callback. See L. |
2326
|
|
|
|
|
|
|
|
2327
|
|
|
|
|
|
|
MULTICALL;','name' => 'MULTICALL'},'SvPVbyte' => {'text' => 'Like C, but converts sv to byte representation first if necessary. |
2328
|
|
|
|
|
|
|
|
2329
|
|
|
|
|
|
|
char* SvPVbyte(SV* sv, STRLEN len)','name' => 'SvPVbyte'},'PoisonFree' => {'text' => 'PoisonWith(0xEF) for catching access to freed memory. |
2330
|
|
|
|
|
|
|
|
2331
|
|
|
|
|
|
|
void PoisonFree(void* dest, int nitems, type)','name' => 'PoisonFree'},'toUPPER' => {'text' => 'Converts the specified character to uppercase. |
2332
|
|
|
|
|
|
|
|
2333
|
|
|
|
|
|
|
char toUPPER(char ch)','name' => 'toUPPER'},'is_utf8_string_loc' => {'text' => 'Like is_utf8_string() but stores the location of the failure (in the |
2334
|
|
|
|
|
|
|
case of "utf8ness failure") or the location s+len (in the case of |
2335
|
|
|
|
|
|
|
"utf8ness success") in the C. |
2336
|
|
|
|
|
|
|
|
2337
|
|
|
|
|
|
|
See also is_utf8_string_loclen() and is_utf8_string(). |
2338
|
|
|
|
|
|
|
|
2339
|
|
|
|
|
|
|
bool is_utf8_string_loc(const U8 *s, STRLEN len, const U8 **p)','name' => 'is_utf8_string_loc'},'SAVETMPS' => {'text' => 'Opening bracket for temporaries on a callback. See C and |
2340
|
|
|
|
|
|
|
L. |
2341
|
|
|
|
|
|
|
|
2342
|
|
|
|
|
|
|
SAVETMPS;','name' => 'SAVETMPS'},'AvFILL' => {'text' => 'Same as C. Deprecated, use C instead. |
2343
|
|
|
|
|
|
|
|
2344
|
|
|
|
|
|
|
int AvFILL(AV* av)','name' => 'AvFILL'},'sv_gets' => {'text' => 'Get a line from the filehandle and store it into the SV, optionally |
2345
|
|
|
|
|
|
|
appending to the currently-stored string. |
2346
|
|
|
|
|
|
|
|
2347
|
|
|
|
|
|
|
char* sv_gets(SV* sv, PerlIO* fp, I32 append)','name' => 'sv_gets'},'ORIGMARK' => {'text' => 'The original stack mark for the XSUB. See C.','name' => 'ORIGMARK'},'SvPVutf8x' => {'text' => 'Like C, but converts sv to utf8 first if necessary. |
2348
|
|
|
|
|
|
|
Guarantees to evaluate sv only once; use the more efficient C |
2349
|
|
|
|
|
|
|
otherwise. |
2350
|
|
|
|
|
|
|
|
2351
|
|
|
|
|
|
|
char* SvPVutf8x(SV* sv, STRLEN len)','name' => 'SvPVutf8x'},'sv_2cv' => {'text' => 'Using various gambits, try to get a CV from an SV; in addition, try if |
2352
|
|
|
|
|
|
|
possible to set C<*st> and C<*gvp> to the stash and GV associated with it. |
2353
|
|
|
|
|
|
|
The flags in C are passed to sv_fetchsv. |
2354
|
|
|
|
|
|
|
|
2355
|
|
|
|
|
|
|
CV* sv_2cv(SV* sv, HV** st, GV** gvp, I32 lref)','name' => 'sv_2cv'},'SvPV_force_nomg' => {'text' => 'Like C but will force the SV into containing just a string |
2356
|
|
|
|
|
|
|
(C). You want force if you are going to update the C |
2357
|
|
|
|
|
|
|
directly. Doesn\'t process magic. |
2358
|
|
|
|
|
|
|
|
2359
|
|
|
|
|
|
|
char* SvPV_force_nomg(SV* sv, STRLEN len)','name' => 'SvPV_force_nomg'},'SvSetSV_nosteal' => {'text' => 'Calls a non-destructive version of C if dsv is not the same as |
2360
|
|
|
|
|
|
|
ssv. May evaluate arguments more than once. |
2361
|
|
|
|
|
|
|
|
2362
|
|
|
|
|
|
|
void SvSetSV_nosteal(SV* dsv, SV* ssv)','name' => 'SvSetSV_nosteal'},'SvPOK_only' => {'text' => 'Tells an SV that it is a string and disables all other OK bits. |
2363
|
|
|
|
|
|
|
Will also turn off the UTF-8 status. |
2364
|
|
|
|
|
|
|
|
2365
|
|
|
|
|
|
|
void SvPOK_only(SV* sv)','name' => 'SvPOK_only'},'dUNDERBAR' => {'text' => 'Sets up the C variable for an XSUB that wishes to use |
2366
|
|
|
|
|
|
|
C. |
2367
|
|
|
|
|
|
|
|
2368
|
|
|
|
|
|
|
dUNDERBAR;','name' => 'dUNDERBAR'},'sv_usepvn_mg' => {'text' => 'Like C, but also handles \'set\' magic. |
2369
|
|
|
|
|
|
|
|
2370
|
|
|
|
|
|
|
void sv_usepvn_mg(SV *sv, char *ptr, STRLEN len)','name' => 'sv_usepvn_mg'},'XCPT_TRY_START' => {'text' => 'Starts a try block. See L.','name' => 'XCPT_TRY_START'},'sv_pvbyte' => {'text' => 'Use C instead. |
2371
|
|
|
|
|
|
|
|
2372
|
|
|
|
|
|
|
char* sv_pvbyte(SV *sv)','name' => 'sv_pvbyte'},'sv_uv' => {'text' => 'A private implementation of the C macro for compilers which can\'t |
2373
|
|
|
|
|
|
|
cope with complex macro expressions. Always use the macro instead. |
2374
|
|
|
|
|
|
|
|
2375
|
|
|
|
|
|
|
UV sv_uv(SV* sv)','name' => 'sv_uv'},'hv_fetch' => {'text' => 'Returns the SV which corresponds to the specified key in the hash. The |
2376
|
|
|
|
|
|
|
C is the length of the key. If C is set then the fetch will be |
2377
|
|
|
|
|
|
|
part of a store. Check that the return value is non-null before |
2378
|
|
|
|
|
|
|
dereferencing it to an C. |
2379
|
|
|
|
|
|
|
|
2380
|
|
|
|
|
|
|
See L for more |
2381
|
|
|
|
|
|
|
information on how to use this function on tied hashes. |
2382
|
|
|
|
|
|
|
|
2383
|
|
|
|
|
|
|
SV** hv_fetch(HV* tb, const char* key, I32 klen, I32 lval)','name' => 'hv_fetch'},'sv_unref_flags' => {'text' => 'Unsets the RV status of the SV, and decrements the reference count of |
2384
|
|
|
|
|
|
|
whatever was being referenced by the RV. This can almost be thought of |
2385
|
|
|
|
|
|
|
as a reversal of C. The C argument can contain |
2386
|
|
|
|
|
|
|
C to force the reference count to be decremented |
2387
|
|
|
|
|
|
|
(otherwise the decrementing is conditional on the reference count being |
2388
|
|
|
|
|
|
|
different from one or the reference being a readonly SV). |
2389
|
|
|
|
|
|
|
See C. |
2390
|
|
|
|
|
|
|
|
2391
|
|
|
|
|
|
|
void sv_unref_flags(SV* sv, U32 flags)','name' => 'sv_unref_flags'},'hv_scalar' => {'text' => 'Evaluates the hash in scalar context and returns the result. Handles magic when the hash is tied. |
2392
|
|
|
|
|
|
|
|
2393
|
|
|
|
|
|
|
SV* hv_scalar(HV* hv)','name' => 'hv_scalar'},'SvRV' => {'text' => 'Dereferences an RV to return the SV. |
2394
|
|
|
|
|
|
|
|
2395
|
|
|
|
|
|
|
SV* SvRV(SV* sv)','name' => 'SvRV'},'Nullch' => {'text' => 'Null character pointer.','name' => 'Nullch'},'mg_copy' => {'text' => 'Copies the magic from one SV to another. See C. |
2396
|
|
|
|
|
|
|
|
2397
|
|
|
|
|
|
|
int mg_copy(SV* sv, SV* nsv, const char* key, I32 klen)','name' => 'mg_copy'},'MARK' => {'text' => 'Stack marker variable for the XSUB. See C.','name' => 'MARK'},'grok_oct' => {'text' => 'converts a string representing an octal number to numeric form. |
2398
|
|
|
|
|
|
|
|
2399
|
|
|
|
|
|
|
On entry I and I<*len> give the string to scan, I<*flags> gives |
2400
|
|
|
|
|
|
|
conversion flags, and I should be NULL or a pointer to an NV. |
2401
|
|
|
|
|
|
|
The scan stops at the end of the string, or the first invalid character. |
2402
|
|
|
|
|
|
|
Unless C is set in I<*flags>, encountering an |
2403
|
|
|
|
|
|
|
invalid character will also trigger a warning. |
2404
|
|
|
|
|
|
|
On return I<*len> is set to the length of the scanned string, |
2405
|
|
|
|
|
|
|
and I<*flags> gives output flags. |
2406
|
|
|
|
|
|
|
|
2407
|
|
|
|
|
|
|
If the value is <= UV_MAX it is returned as a UV, the output flags are clear, |
2408
|
|
|
|
|
|
|
and nothing is written to I<*result>. If the value is > UV_MAX C |
2409
|
|
|
|
|
|
|
returns UV_MAX, sets C in the output flags, |
2410
|
|
|
|
|
|
|
and writes the value to I<*result> (or the value is discarded if I |
2411
|
|
|
|
|
|
|
is NULL). |
2412
|
|
|
|
|
|
|
|
2413
|
|
|
|
|
|
|
If C is set in I<*flags> then the octal |
2414
|
|
|
|
|
|
|
number may use \'_\' characters to separate digits. |
2415
|
|
|
|
|
|
|
|
2416
|
|
|
|
|
|
|
UV grok_oct(const char* start, STRLEN* len_p, I32* flags, NV *result)','name' => 'grok_oct'},'sv_rvweaken' => {'text' => 'Weaken a reference: set the C flag on this RV; give the |
2417
|
|
|
|
|
|
|
referred-to SV C magic if it hasn\'t already; and |
2418
|
|
|
|
|
|
|
push a back-reference to this RV onto the array of backreferences |
2419
|
|
|
|
|
|
|
associated with that magic. If the RV is magical, set magic will be |
2420
|
|
|
|
|
|
|
called after the RV is cleared. |
2421
|
|
|
|
|
|
|
|
2422
|
|
|
|
|
|
|
SV* sv_rvweaken(SV *sv)','name' => 'sv_rvweaken'},'scan_hex' => {'text' => 'For backwards compatibility. Use C instead. |
2423
|
|
|
|
|
|
|
|
2424
|
|
|
|
|
|
|
NV scan_hex(const char* start, STRLEN len, STRLEN* retlen)','name' => 'scan_hex'},'newSVpvn' => {'text' => 'Creates a new SV and copies a string into it. The reference count for the |
2425
|
|
|
|
|
|
|
SV is set to 1. Note that if C is zero, Perl will create a zero length |
2426
|
|
|
|
|
|
|
string. You are responsible for ensuring that the source string is at least |
2427
|
|
|
|
|
|
|
C bytes long. If the C argument is NULL the new SV will be undefined. |
2428
|
|
|
|
|
|
|
|
2429
|
|
|
|
|
|
|
SV* newSVpvn(const char* s, STRLEN len)','name' => 'newSVpvn'},'sv_magicext' => {'text' => 'Adds magic to an SV, upgrading it if necessary. Applies the |
2430
|
|
|
|
|
|
|
supplied vtable and returns a pointer to the magic added. |
2431
|
|
|
|
|
|
|
|
2432
|
|
|
|
|
|
|
Note that C will allow things that C will not. |
2433
|
|
|
|
|
|
|
In particular, you can add magic to SvREADONLY SVs, and add more than |
2434
|
|
|
|
|
|
|
one instance of the same \'how\'. |
2435
|
|
|
|
|
|
|
|
2436
|
|
|
|
|
|
|
If C is greater than zero then a C I of C is |
2437
|
|
|
|
|
|
|
stored, if C is zero then C is stored as-is and - as another |
2438
|
|
|
|
|
|
|
special case - if C<(name && namlen == HEf_SVKEY)> then C is assumed |
2439
|
|
|
|
|
|
|
to contain an C and is stored as-is with its REFCNT incremented. |
2440
|
|
|
|
|
|
|
|
2441
|
|
|
|
|
|
|
(This is now used as a subroutine by C.) |
2442
|
|
|
|
|
|
|
|
2443
|
|
|
|
|
|
|
MAGIC * sv_magicext(SV* sv, SV* obj, int how, const MGVTBL *vtbl, const char* name, I32 namlen)','name' => 'sv_magicext'},'av_push' => {'text' => 'Pushes an SV onto the end of the array. The array will grow automatically |
2444
|
|
|
|
|
|
|
to accommodate the addition. |
2445
|
|
|
|
|
|
|
|
2446
|
|
|
|
|
|
|
void av_push(AV* ar, SV* val)','name' => 'av_push'},'unpackstring' => {'text' => 'The engine implementing unpack() Perl function. C puts the |
2447
|
|
|
|
|
|
|
extracted list items on the stack and returns the number of elements. |
2448
|
|
|
|
|
|
|
Issue C before and C after the call to this function. |
2449
|
|
|
|
|
|
|
|
2450
|
|
|
|
|
|
|
I32 unpackstring(const char *pat, const char *patend, const char *s, const char *strend, U32 flags)','name' => 'unpackstring'},'POPn' => {'text' => 'Pops a double off the stack. |
2451
|
|
|
|
|
|
|
|
2452
|
|
|
|
|
|
|
NV POPn','name' => 'POPn'},'XSRETURN_NO' => {'text' => 'Return C<&PL_sv_no> from an XSUB immediately. Uses C. |
2453
|
|
|
|
|
|
|
|
2454
|
|
|
|
|
|
|
XSRETURN_NO;','name' => 'XSRETURN_NO'},'av_extend' => {'text' => 'Pre-extend an array. The C is the index to which the array should be |
2455
|
|
|
|
|
|
|
extended. |
2456
|
|
|
|
|
|
|
|
2457
|
|
|
|
|
|
|
void av_extend(AV* ar, I32 key)','name' => 'av_extend'},'newRV_noinc' => {'text' => 'Creates an RV wrapper for an SV. The reference count for the original |
2458
|
|
|
|
|
|
|
SV is B incremented. |
2459
|
|
|
|
|
|
|
|
2460
|
|
|
|
|
|
|
SV* newRV_noinc(SV* sv)','name' => 'newRV_noinc'},'hv_iternext' => {'text' => 'Returns entries from a hash iterator. See C. |
2461
|
|
|
|
|
|
|
|
2462
|
|
|
|
|
|
|
You may call C or C on the hash entry that the |
2463
|
|
|
|
|
|
|
iterator currently points to, without losing your place or invalidating your |
2464
|
|
|
|
|
|
|
iterator. Note that in this case the current entry is deleted from the hash |
2465
|
|
|
|
|
|
|
with your iterator holding the last reference to it. Your iterator is flagged |
2466
|
|
|
|
|
|
|
to free the entry on the next call to C, so you must not discard |
2467
|
|
|
|
|
|
|
your iterator immediately else the entry will leak - call C to |
2468
|
|
|
|
|
|
|
trigger the resource deallocation. |
2469
|
|
|
|
|
|
|
|
2470
|
|
|
|
|
|
|
HE* hv_iternext(HV* tb)','name' => 'hv_iternext'},'hv_iterinit' => {'text' => 'Prepares a starting point to traverse a hash table. Returns the number of |
2471
|
|
|
|
|
|
|
keys in the hash (i.e. the same as C). The return value is |
2472
|
|
|
|
|
|
|
currently only meaningful for hashes without tie magic. |
2473
|
|
|
|
|
|
|
|
2474
|
|
|
|
|
|
|
NOTE: Before version 5.004_65, C used to return the number of |
2475
|
|
|
|
|
|
|
hash buckets that happen to be in use. If you still need that esoteric |
2476
|
|
|
|
|
|
|
value, you can get it through the macro C. |
2477
|
|
|
|
|
|
|
|
2478
|
|
|
|
|
|
|
|
2479
|
|
|
|
|
|
|
I32 hv_iterinit(HV* tb)','name' => 'hv_iterinit'}};}; |
2480
|
|
|
|
|
|
|
|
2481
|
3
|
|
|
|
|
48
|
my $self = bless({ |
2482
|
|
|
|
|
|
|
'index' => $VAR1, |
2483
|
|
|
|
|
|
|
perl_version => '5.010000', |
2484
|
|
|
|
|
|
|
} => $class); |
2485
|
3
|
|
|
|
|
768
|
return $self; |
2486
|
|
|
|
|
|
|
} |
2487
|
|
|
|
|
|
|
|
2488
|
|
|
|
|
|
|
1; |