This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
document PERL_SYS_INIT, PERL_SYS_TERM and that they should only be used once
[perl5.git] / pod / perlapi.pod
CommitLineData
e0492643
NC
1-*- buffer-read-only: t -*-
2
3!!!!!!! DO NOT EDIT THIS FILE !!!!!!!
4This file is built by autodoc.pl extracting documentation from the C source
5files.
6
954c1994
GS
7=head1 NAME
8
9perlapi - autogenerated documentation for the perl public API
10
11=head1 DESCRIPTION
d8c40edc 12X<Perl API> X<API> X<api>
954c1994 13
1c846c1f
NIS
14This file contains the documentation of the perl public API generated by
15embed.pl, specifically a listing of functions, macros, flags, and variables
16that may be used by extension writers. The interfaces of any functions that
954c1994
GS
17are not listed here are subject to change without notice. For this reason,
18blindly using functions listed in proto.h is to be avoided when writing
19extensions.
20
21Note that all Perl API global variables must be referenced with the C<PL_>
22prefix. Some macros are provided for compatibility with the older,
23unadorned names, but this support may be disabled in a future release.
24
2bbc8d55
SP
25Perl was originally written to handle US-ASCII only (that is characters
26whose ordinal numbers are in the range 0 - 127).
27And documentation and comments may still use the term ASCII, when
dc960812 28sometimes in fact the entire range from 0 - 255 is meant.
2bbc8d55
SP
29
30Note that Perl can be compiled and run under EBCDIC (See L<perlebcdic>)
31or ASCII. Most of the documentation (and even comments in the code)
32ignore the EBCDIC possibility.
33For almost all purposes the differences are transparent.
34As an example, under EBCDIC,
35instead of UTF-8, UTF-EBCDIC is used to encode Unicode strings, and so
36whenever this documentation refers to C<utf8>
37(and variants of that name, including in function names),
38it also (essentially transparently) means C<UTF-EBCDIC>.
39But the ordinals of characters differ between ASCII, EBCDIC, and
40the UTF- encodings, and a string encoded in UTF-EBCDIC may occupy more bytes
41than in UTF-8.
42
43Also, on some EBCDIC machines, functions that are documented as operating on
44US-ASCII (or Basic Latin in Unicode terminology) may in fact operate on all
45256 characters in the EBCDIC range, not just the subset corresponding to
46US-ASCII.
47
48The listing below is alphabetical, case insensitive.
954c1994 49
94bdecf9
JH
50
51=head1 "Gimme" Values
52
53=over 8
54
55=item GIMME
d8c40edc 56X<GIMME>
94bdecf9
JH
57
58A backward-compatible version of C<GIMME_V> which can only return
59C<G_SCALAR> or C<G_ARRAY>; in a void context, it returns C<G_SCALAR>.
60Deprecated. Use C<GIMME_V> instead.
61
62 U32 GIMME
63
64=for hackers
65Found in file op.h
66
67=item GIMME_V
d8c40edc 68X<GIMME_V>
94bdecf9
JH
69
70The XSUB-writer's equivalent to Perl's C<wantarray>. Returns C<G_VOID>,
71C<G_SCALAR> or C<G_ARRAY> for void, scalar or list context,
72respectively.
73
74 U32 GIMME_V
75
76=for hackers
77Found in file op.h
78
79=item G_ARRAY
d8c40edc 80X<G_ARRAY>
94bdecf9
JH
81
82Used to indicate list context. See C<GIMME_V>, C<GIMME> and
83L<perlcall>.
84
85=for hackers
86Found in file cop.h
87
88=item G_DISCARD
d8c40edc 89X<G_DISCARD>
94bdecf9
JH
90
91Indicates that arguments returned from a callback should be discarded. See
92L<perlcall>.
93
94=for hackers
95Found in file cop.h
96
97=item G_EVAL
d8c40edc 98X<G_EVAL>
94bdecf9
JH
99
100Used to force a Perl C<eval> wrapper around a callback. See
101L<perlcall>.
102
103=for hackers
104Found in file cop.h
105
106=item G_NOARGS
d8c40edc 107X<G_NOARGS>
94bdecf9
JH
108
109Indicates that no arguments are being sent to a callback. See
110L<perlcall>.
111
112=for hackers
113Found in file cop.h
114
115=item G_SCALAR
d8c40edc 116X<G_SCALAR>
94bdecf9
JH
117
118Used to indicate scalar context. See C<GIMME_V>, C<GIMME>, and
119L<perlcall>.
120
121=for hackers
122Found in file cop.h
123
124=item G_VOID
d8c40edc 125X<G_VOID>
94bdecf9
JH
126
127Used to indicate void context. See C<GIMME_V> and L<perlcall>.
128
129=for hackers
130Found in file cop.h
131
132
133=back
134
135=head1 Array Manipulation Functions
136
954c1994
GS
137=over 8
138
139=item AvFILL
d8c40edc 140X<AvFILL>
954c1994
GS
141
142Same as C<av_len()>. Deprecated, use C<av_len()> instead.
143
144 int AvFILL(AV* av)
145
497711e7
GS
146=for hackers
147Found in file av.h
148
954c1994 149=item av_clear
d8c40edc 150X<av_clear>
954c1994
GS
151
152Clears an array, making it empty. Does not free the memory used by the
153array itself.
154
4048f010 155 void av_clear(AV *av)
954c1994 156
497711e7
GS
157=for hackers
158Found in file av.c
159
bcdf7404
YO
160=item av_create_and_push
161X<av_create_and_push>
162
163Push an SV onto the end of the array, creating the array if necessary.
164A small internal helper function to remove a commonly duplicated idiom.
165
166NOTE: this function is experimental and may change or be
167removed without notice.
168
169 void av_create_and_push(AV **const avp, SV *const val)
170
171=for hackers
172Found in file av.c
173
174=item av_create_and_unshift_one
175X<av_create_and_unshift_one>
176
177Unshifts an SV onto the beginning of the array, creating the array if
178necessary.
179A small internal helper function to remove a commonly duplicated idiom.
180
181NOTE: this function is experimental and may change or be
182removed without notice.
183
184 SV** av_create_and_unshift_one(AV **const avp, SV *const val)
185
186=for hackers
187Found in file av.c
188
f3b76584 189=item av_delete
d8c40edc 190X<av_delete>
f3b76584
SC
191
192Deletes the element indexed by C<key> from the array. Returns the
b9381830
JP
193deleted element. If C<flags> equals C<G_DISCARD>, the element is freed
194and null is returned.
f3b76584 195
4048f010 196 SV* av_delete(AV *av, I32 key, I32 flags)
f3b76584
SC
197
198=for hackers
199Found in file av.c
200
201=item av_exists
d8c40edc 202X<av_exists>
f3b76584
SC
203
204Returns true if the element indexed by C<key> has been initialized.
205
206This relies on the fact that uninitialized array elements are set to
207C<&PL_sv_undef>.
208
4048f010 209 bool av_exists(AV *av, I32 key)
f3b76584
SC
210
211=for hackers
212Found in file av.c
213
954c1994 214=item av_extend
d8c40edc 215X<av_extend>
954c1994
GS
216
217Pre-extend an array. The C<key> is the index to which the array should be
218extended.
219
4048f010 220 void av_extend(AV *av, I32 key)
954c1994 221
497711e7
GS
222=for hackers
223Found in file av.c
224
954c1994 225=item av_fetch
d8c40edc 226X<av_fetch>
954c1994
GS
227
228Returns the SV at the specified index in the array. The C<key> is the
229index. If C<lval> is set then the fetch will be part of a store. Check
230that the return value is non-null before dereferencing it to a C<SV*>.
231
96f1132b
GS
232See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for
233more information on how to use this function on tied arrays.
954c1994 234
4048f010 235 SV** av_fetch(AV *av, I32 key, I32 lval)
954c1994 236
497711e7
GS
237=for hackers
238Found in file av.c
239
f3b76584 240=item av_fill
d8c40edc 241X<av_fill>
f3b76584 242
1d51329b 243Set the highest index in the array to the given number, equivalent to
f3b76584
SC
244Perl's C<$#array = $fill;>.
245
1d51329b
RGS
246The number of elements in the an array will be C<fill + 1> after
247av_fill() returns. If the array was previously shorter then the
248additional elements appended are set to C<PL_sv_undef>. If the array
249was longer, then the excess elements are freed. C<av_fill(av, -1)> is
250the same as C<av_clear(av)>.
251
4048f010 252 void av_fill(AV *av, I32 fill)
f3b76584
SC
253
254=for hackers
255Found in file av.c
256
954c1994 257=item av_len
d8c40edc 258X<av_len>
954c1994 259
1d51329b
RGS
260Returns the highest index in the array. The number of elements in the
261array is C<av_len(av) + 1>. Returns -1 if the array is empty.
954c1994 262
87cea99e 263 I32 av_len(AV *av)
954c1994 264
497711e7
GS
265=for hackers
266Found in file av.c
267
954c1994 268=item av_make
d8c40edc 269X<av_make>
954c1994
GS
270
271Creates a new AV and populates it with a list of SVs. The SVs are copied
272into the array, so they may be freed after the call to av_make. The new AV
273will have a reference count of 1.
274
4048f010 275 AV* av_make(I32 size, SV **strp)
954c1994 276
497711e7
GS
277=for hackers
278Found in file av.c
279
954c1994 280=item av_pop
d8c40edc 281X<av_pop>
954c1994
GS
282
283Pops an SV off the end of the array. Returns C<&PL_sv_undef> if the array
284is empty.
285
4048f010 286 SV* av_pop(AV *av)
954c1994 287
497711e7
GS
288=for hackers
289Found in file av.c
290
954c1994 291=item av_push
d8c40edc 292X<av_push>
954c1994
GS
293
294Pushes an SV onto the end of the array. The array will grow automatically
295to accommodate the addition.
296
4048f010 297 void av_push(AV *av, SV *val)
954c1994 298
497711e7
GS
299=for hackers
300Found in file av.c
301
954c1994 302=item av_shift
d8c40edc 303X<av_shift>
954c1994 304
71c4dbc3
VP
305Shifts an SV off the beginning of the array. Returns C<&PL_sv_undef> if the
306array is empty.
954c1994 307
4048f010 308 SV* av_shift(AV *av)
954c1994 309
497711e7
GS
310=for hackers
311Found in file av.c
312
954c1994 313=item av_store
d8c40edc 314X<av_store>
954c1994
GS
315
316Stores an SV in an array. The array index is specified as C<key>. The
317return value will be NULL if the operation failed or if the value did not
318need to be actually stored within the array (as in the case of tied
319arrays). Otherwise it can be dereferenced to get the original C<SV*>. Note
320that the caller is responsible for suitably incrementing the reference
321count of C<val> before the call, and decrementing it if the function
322returned NULL.
323
96f1132b 324See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for
954c1994
GS
325more information on how to use this function on tied arrays.
326
4048f010 327 SV** av_store(AV *av, I32 key, SV *val)
954c1994 328
497711e7
GS
329=for hackers
330Found in file av.c
331
954c1994 332=item av_undef
d8c40edc 333X<av_undef>
954c1994
GS
334
335Undefines the array. Frees the memory used by the array itself.
336
4048f010 337 void av_undef(AV *av)
954c1994 338
497711e7
GS
339=for hackers
340Found in file av.c
341
954c1994 342=item av_unshift
d8c40edc 343X<av_unshift>
954c1994
GS
344
345Unshift the given number of C<undef> values onto the beginning of the
346array. The array will grow automatically to accommodate the addition. You
347must then use C<av_store> to assign values to these new elements.
348
4048f010 349 void av_unshift(AV *av, I32 num)
954c1994 350
497711e7
GS
351=for hackers
352Found in file av.c
353
94bdecf9 354=item get_av
d8c40edc 355X<get_av>
9f2ea798 356
cbfd0a87
NC
357Returns the AV of the specified Perl array. C<flags> are passed to
358C<gv_fetchpv>. If C<GV_ADD> is set and the
359Perl variable does not exist then it will be created. If C<flags> is zero
360and the variable does not exist then NULL is returned.
9f2ea798 361
94bdecf9
JH
362NOTE: the perl_ form of this function is deprecated.
363
cbfd0a87 364 AV* get_av(const char *name, I32 flags)
9f2ea798
DM
365
366=for hackers
94bdecf9 367Found in file perl.c
9f2ea798 368
94bdecf9 369=item newAV
d8c40edc 370X<newAV>
f9a63242 371
94bdecf9 372Creates a new AV. The reference count is set to 1.
f9a63242 373
94bdecf9
JH
374 AV* newAV()
375
376=for hackers
6fc9eaaa 377Found in file av.h
94bdecf9 378
94bdecf9 379=item sortsv
d8c40edc 380X<sortsv>
497711e7 381
94bdecf9 382Sort an array. Here is an example:
497711e7 383
94bdecf9 384 sortsv(AvARRAY(av), av_len(av)+1, Perl_sv_cmp_locale);
eebe1485 385
7b9ef140
RH
386Currently this always uses mergesort. See sortsv_flags for a more
387flexible routine.
641d4181 388
aa924a5a 389 void sortsv(SV** array, size_t num_elts, SVCOMPARE_t cmp)
497711e7
GS
390
391=for hackers
94bdecf9
JH
392Found in file pp_sort.c
393
7b9ef140
RH
394=item sortsv_flags
395X<sortsv_flags>
396
397Sort an array, with various options.
398
399 void sortsv_flags(SV** array, size_t num_elts, SVCOMPARE_t cmp, U32 flags)
400
401=for hackers
402Found in file pp_sort.c
403
94bdecf9
JH
404
405=back
406
407=head1 Callback Functions
408
409=over 8
497711e7 410
954c1994 411=item call_argv
d8c40edc 412X<call_argv>
954c1994
GS
413
414Performs a callback to the specified Perl sub. See L<perlcall>.
415
416NOTE: the perl_ form of this function is deprecated.
417
8f42b153 418 I32 call_argv(const char* sub_name, I32 flags, char** argv)
954c1994 419
497711e7
GS
420=for hackers
421Found in file perl.c
422
954c1994 423=item call_method
d8c40edc 424X<call_method>
954c1994
GS
425
426Performs a callback to the specified Perl method. The blessed object must
427be on the stack. See L<perlcall>.
428
429NOTE: the perl_ form of this function is deprecated.
430
431 I32 call_method(const char* methname, I32 flags)
432
497711e7
GS
433=for hackers
434Found in file perl.c
435
954c1994 436=item call_pv
d8c40edc 437X<call_pv>
954c1994
GS
438
439Performs a callback to the specified Perl sub. See L<perlcall>.
440
441NOTE: the perl_ form of this function is deprecated.
442
443 I32 call_pv(const char* sub_name, I32 flags)
444
497711e7
GS
445=for hackers
446Found in file perl.c
447
954c1994 448=item call_sv
d8c40edc 449X<call_sv>
954c1994
GS
450
451Performs a callback to the Perl sub whose name is in the SV. See
452L<perlcall>.
453
454NOTE: the perl_ form of this function is deprecated.
455
8c54174d 456 I32 call_sv(SV* sv, VOL I32 flags)
954c1994 457
497711e7
GS
458=for hackers
459Found in file perl.c
460
94bdecf9 461=item ENTER
d8c40edc 462X<ENTER>
954c1994 463
94bdecf9 464Opening bracket on a callback. See C<LEAVE> and L<perlcall>.
954c1994 465
94bdecf9 466 ENTER;
954c1994 467
497711e7 468=for hackers
94bdecf9 469Found in file scope.h
497711e7 470
94bdecf9 471=item eval_pv
d8c40edc 472X<eval_pv>
954c1994 473
94bdecf9 474Tells Perl to C<eval> the given string and return an SV* result.
954c1994 475
94bdecf9 476NOTE: the perl_ form of this function is deprecated.
954c1994 477
94bdecf9 478 SV* eval_pv(const char* p, I32 croak_on_error)
497711e7 479
94bdecf9
JH
480=for hackers
481Found in file perl.c
954c1994 482
94bdecf9 483=item eval_sv
d8c40edc 484X<eval_sv>
c9d5ac95 485
94bdecf9 486Tells Perl to C<eval> the string in the SV.
c9d5ac95 487
94bdecf9 488NOTE: the perl_ form of this function is deprecated.
954c1994 489
94bdecf9 490 I32 eval_sv(SV* sv, I32 flags)
954c1994 491
497711e7 492=for hackers
94bdecf9 493Found in file perl.c
497711e7 494
94bdecf9 495=item FREETMPS
d8c40edc 496X<FREETMPS>
954c1994 497
94bdecf9
JH
498Closing bracket for temporaries on a callback. See C<SAVETMPS> and
499L<perlcall>.
954c1994 500
94bdecf9 501 FREETMPS;
954c1994 502
497711e7 503=for hackers
94bdecf9 504Found in file scope.h
beab0874 505
94bdecf9 506=item LEAVE
d8c40edc 507X<LEAVE>
beab0874 508
94bdecf9 509Closing bracket on a callback. See C<ENTER> and L<perlcall>.
beab0874 510
94bdecf9 511 LEAVE;
beab0874
JT
512
513=for hackers
94bdecf9 514Found in file scope.h
beab0874 515
94bdecf9 516=item SAVETMPS
d8c40edc 517X<SAVETMPS>
9f2ea798 518
94bdecf9
JH
519Opening bracket for temporaries on a callback. See C<FREETMPS> and
520L<perlcall>.
9f2ea798 521
94bdecf9 522 SAVETMPS;
9f2ea798
DM
523
524=for hackers
94bdecf9 525Found in file scope.h
9f2ea798 526
9f2ea798 527
94bdecf9 528=back
9f2ea798 529
94bdecf9 530=head1 Character classes
9f2ea798 531
94bdecf9 532=over 8
9f2ea798 533
94bdecf9 534=item isALNUM
d8c40edc 535X<isALNUM>
954c1994 536
2bbc8d55
SP
537Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin)
538alphanumeric character (including underscore) or digit.
954c1994 539
94bdecf9 540 bool isALNUM(char ch)
954c1994 541
497711e7 542=for hackers
94bdecf9 543Found in file handy.h
497711e7 544
94bdecf9 545=item isALPHA
d8c40edc 546X<isALPHA>
954c1994 547
2bbc8d55
SP
548Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin)
549alphabetic character.
954c1994 550
94bdecf9 551 bool isALPHA(char ch)
954c1994 552
497711e7 553=for hackers
94bdecf9 554Found in file handy.h
497711e7 555
94bdecf9 556=item isDIGIT
d8c40edc 557X<isDIGIT>
954c1994 558
2bbc8d55 559Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin)
94bdecf9 560digit.
954c1994 561
94bdecf9 562 bool isDIGIT(char ch)
954c1994 563
497711e7 564=for hackers
94bdecf9 565Found in file handy.h
497711e7 566
94bdecf9 567=item isLOWER
d8c40edc 568X<isLOWER>
954c1994 569
2bbc8d55
SP
570Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin)
571lowercase character.
954c1994 572
94bdecf9 573 bool isLOWER(char ch)
954c1994 574
497711e7 575=for hackers
94bdecf9 576Found in file handy.h
497711e7 577
94bdecf9 578=item isSPACE
d8c40edc 579X<isSPACE>
954c1994 580
2bbc8d55
SP
581Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin)
582whitespace.
954c1994 583
94bdecf9 584 bool isSPACE(char ch)
954c1994 585
497711e7 586=for hackers
94bdecf9 587Found in file handy.h
497711e7 588
94bdecf9 589=item isUPPER
d8c40edc 590X<isUPPER>
954c1994 591
2bbc8d55
SP
592Returns a boolean indicating whether the C C<char> is a US-ASCII (Basic Latin)
593uppercase character.
954c1994 594
94bdecf9 595 bool isUPPER(char ch)
954c1994 596
497711e7 597=for hackers
94bdecf9 598Found in file handy.h
497711e7 599
94bdecf9 600=item toLOWER
d8c40edc 601X<toLOWER>
954c1994 602
2bbc8d55
SP
603Converts the specified character to lowercase. Characters outside the
604US-ASCII (Basic Latin) range are viewed as not having any case.
954c1994 605
94bdecf9 606 char toLOWER(char ch)
954c1994 607
94bdecf9
JH
608=for hackers
609Found in file handy.h
610
611=item toUPPER
d8c40edc 612X<toUPPER>
94bdecf9 613
2bbc8d55
SP
614Converts the specified character to uppercase. Characters outside the
615US-ASCII (Basic Latin) range are viewed as not having any case.
94bdecf9
JH
616
617 char toUPPER(char ch)
954c1994 618
497711e7 619=for hackers
94bdecf9 620Found in file handy.h
497711e7 621
954c1994 622
94bdecf9 623=back
954c1994 624
94bdecf9 625=head1 Cloning an interpreter
954c1994 626
94bdecf9
JH
627=over 8
628
629=item perl_clone
d8c40edc 630X<perl_clone>
94bdecf9
JH
631
632Create and return a new interpreter by cloning the current one.
633
4be49ee6 634perl_clone takes these flags as parameters:
c78c2b74 635
b0bc38e6
NC
636CLONEf_COPY_STACKS - is used to, well, copy the stacks also,
637without it we only clone the data and zero the stacks,
638with it we copy the stacks and the new perl interpreter is
639ready to run at the exact same point as the previous one.
640The pseudo-fork code uses COPY_STACKS while the
878090d5 641threads->create doesn't.
c78c2b74
HS
642
643CLONEf_KEEP_PTR_TABLE
b0bc38e6
NC
644perl_clone keeps a ptr_table with the pointer of the old
645variable as a key and the new variable as a value,
646this allows it to check if something has been cloned and not
647clone it again but rather just use the value and increase the
648refcount. If KEEP_PTR_TABLE is not set then perl_clone will kill
649the ptr_table using the function
650C<ptr_table_free(PL_ptr_table); PL_ptr_table = NULL;>,
651reason to keep it around is if you want to dup some of your own
652variable who are outside the graph perl scans, example of this
c78c2b74
HS
653code is in threads.xs create
654
655CLONEf_CLONE_HOST
b0bc38e6
NC
656This is a win32 thing, it is ignored on unix, it tells perls
657win32host code (which is c++) to clone itself, this is needed on
658win32 if you want to run two threads at the same time,
659if you just want to do some stuff in a separate perl interpreter
660and then throw it away and return to the original one,
c78c2b74
HS
661you don't need to do anything.
662
4048f010 663 PerlInterpreter* perl_clone(PerlInterpreter *proto_perl, UV flags)
954c1994 664
497711e7 665=for hackers
94bdecf9 666Found in file sv.c
497711e7 667
954c1994 668
94bdecf9 669=back
954c1994 670
94bdecf9
JH
671=head1 CV Manipulation Functions
672
673=over 8
674
675=item CvSTASH
d8c40edc 676X<CvSTASH>
94bdecf9
JH
677
678Returns the stash of the CV.
679
680 HV* CvSTASH(CV* cv)
954c1994 681
497711e7 682=for hackers
94bdecf9 683Found in file cv.h
497711e7 684
94bdecf9 685=item get_cv
d8c40edc 686X<get_cv>
954c1994 687
36dfb072 688Uses C<strlen> to get the length of C<name>, then calls C<get_cvn_flags>.
954c1994 689
94bdecf9
JH
690NOTE: the perl_ form of this function is deprecated.
691
36dfb072
NC
692 CV* get_cv(const char* name, I32 flags)
693
694=for hackers
695Found in file perl.c
696
697=item get_cvn_flags
698X<get_cvn_flags>
699
700Returns the CV of the specified Perl subroutine. C<flags> are passed to
701C<gv_fetchpvn_flags>. If C<GV_ADD> is set and the Perl subroutine does not
702exist then it will be declared (which has the same effect as saying
703C<sub name;>). If C<GV_ADD> is not set and the subroutine does not exist
704then NULL is returned.
705
706NOTE: the perl_ form of this function is deprecated.
707
708 CV* get_cvn_flags(const char* name, STRLEN len, I32 flags)
954c1994 709
497711e7 710=for hackers
94bdecf9 711Found in file perl.c
497711e7 712
7c9e965c 713
94bdecf9 714=back
7c9e965c 715
94bdecf9 716=head1 Embedding Functions
7c9e965c 717
94bdecf9 718=over 8
7c9e965c 719
7dafbf52 720=item cv_undef
d8c40edc 721X<cv_undef>
7dafbf52
DM
722
723Clear out all the active components of a CV. This can happen either
724by an explicit C<undef &foo>, or by the reference count going to zero.
725In the former case, we keep the CvOUTSIDE pointer, so that any anonymous
726children can still follow the full lexical scope chain.
727
728 void cv_undef(CV* cv)
729
730=for hackers
731Found in file op.c
732
94bdecf9 733=item load_module
d8c40edc 734X<load_module>
7c9e965c 735
94bdecf9
JH
736Loads the module whose name is pointed to by the string part of name.
737Note that the actual module name, not its filename, should be given.
738Eg, "Foo::Bar" instead of "Foo/Bar.pm". flags can be any of
739PERL_LOADMOD_DENY, PERL_LOADMOD_NOIMPORT, or PERL_LOADMOD_IMPORT_OPS
740(or 0 for no flags). ver, if specified, provides version semantics
741similar to C<use Foo::Bar VERSION>. The optional trailing SV*
742arguments can be used to specify arguments to the module's import()
743method, similar to C<use Foo::Bar VERSION LIST>.
7c9e965c 744
94bdecf9 745 void load_module(U32 flags, SV* name, SV* ver, ...)
7c9e965c
JP
746
747=for hackers
94bdecf9 748Found in file op.c
7c9e965c 749
62375a60 750=item nothreadhook
d8c40edc 751X<nothreadhook>
62375a60
NIS
752
753Stub that provides thread hook for perl_destruct when there are
754no threads.
755
756 int nothreadhook()
757
758=for hackers
759Found in file perl.c
760
94bdecf9 761=item perl_alloc
d8c40edc 762X<perl_alloc>
954c1994 763
94bdecf9 764Allocates a new Perl interpreter. See L<perlembed>.
954c1994 765
94bdecf9 766 PerlInterpreter* perl_alloc()
954c1994 767
497711e7 768=for hackers
94bdecf9 769Found in file perl.c
497711e7 770
94bdecf9 771=item perl_construct
d8c40edc 772X<perl_construct>
89423764 773
94bdecf9 774Initializes a new Perl interpreter. See L<perlembed>.
89423764 775
4048f010 776 void perl_construct(PerlInterpreter *my_perl)
89423764
GS
777
778=for hackers
94bdecf9 779Found in file perl.c
954c1994 780
94bdecf9 781=item perl_destruct
d8c40edc 782X<perl_destruct>
954c1994 783
94bdecf9 784Shuts down a Perl interpreter. See L<perlembed>.
954c1994 785
4048f010 786 int perl_destruct(PerlInterpreter *my_perl)
954c1994 787
497711e7
GS
788=for hackers
789Found in file perl.c
790
94bdecf9 791=item perl_free
d8c40edc 792X<perl_free>
954c1994 793
94bdecf9 794Releases a Perl interpreter. See L<perlembed>.
954c1994 795
4048f010 796 void perl_free(PerlInterpreter *my_perl)
954c1994 797
497711e7
GS
798=for hackers
799Found in file perl.c
800
94bdecf9 801=item perl_parse
d8c40edc 802X<perl_parse>
954c1994 803
94bdecf9 804Tells a Perl interpreter to parse a Perl script. See L<perlembed>.
954c1994 805
4048f010 806 int perl_parse(PerlInterpreter *my_perl, XSINIT_t xsinit, int argc, char** argv, char** env)
954c1994 807
94bdecf9
JH
808=for hackers
809Found in file perl.c
810
811=item perl_run
d8c40edc 812X<perl_run>
94bdecf9
JH
813
814Tells a Perl interpreter to run. See L<perlembed>.
815
4048f010 816 int perl_run(PerlInterpreter *my_perl)
954c1994 817
497711e7
GS
818=for hackers
819Found in file perl.c
820
94bdecf9 821=item require_pv
d8c40edc 822X<require_pv>
954c1994 823
94bdecf9
JH
824Tells Perl to C<require> the file named by the string argument. It is
825analogous to the Perl code C<eval "require '$file'">. It's even
2307c6d0 826implemented that way; consider using load_module instead.
954c1994
GS
827
828NOTE: the perl_ form of this function is deprecated.
829
94bdecf9 830 void require_pv(const char* pv)
954c1994 831
497711e7
GS
832=for hackers
833Found in file perl.c
834
954c1994 835
94bdecf9 836=back
954c1994 837
3df15adc
YO
838=head1 Functions in file dump.c
839
840
841=over 8
842
843=item pv_display
844X<pv_display>
845
3df15adc
YO
846Similar to
847
848 pv_escape(dsv,pv,cur,pvlim,PERL_PV_ESCAPE_QUOTE);
849
850except that an additional "\0" will be appended to the string when
851len > cur and pv[cur] is "\0".
852
853Note that the final string may be up to 7 chars longer than pvlim.
854
855 char* pv_display(SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim)
856
857=for hackers
858Found in file dump.c
859
860=item pv_escape
861X<pv_escape>
862
863Escapes at most the first "count" chars of pv and puts the results into
ddc5bc0f 864dsv such that the size of the escaped string will not exceed "max" chars
3df15adc
YO
865and will not contain any incomplete escape sequences.
866
ddc5bc0f
YO
867If flags contains PERL_PV_ESCAPE_QUOTE then any double quotes in the string
868will also be escaped.
3df15adc
YO
869
870Normally the SV will be cleared before the escaped string is prepared,
ddc5bc0f
YO
871but when PERL_PV_ESCAPE_NOCLEAR is set this will not occur.
872
38a44b82 873If PERL_PV_ESCAPE_UNI is set then the input string is treated as Unicode,
ddc5bc0f 874if PERL_PV_ESCAPE_UNI_DETECT is set then the input string is scanned
38a44b82 875using C<is_utf8_string()> to determine if it is Unicode.
ddc5bc0f
YO
876
877If PERL_PV_ESCAPE_ALL is set then all input chars will be output
878using C<\x01F1> style escapes, otherwise only chars above 255 will be
879escaped using this style, other non printable chars will use octal or
880common escaped patterns like C<\n>. If PERL_PV_ESCAPE_NOBACKSLASH
881then all chars below 255 will be treated as printable and
882will be output as literals.
883
884If PERL_PV_ESCAPE_FIRSTCHAR is set then only the first char of the
885string will be escaped, regardles of max. If the string is utf8 and
886the chars value is >255 then it will be returned as a plain hex
887sequence. Thus the output will either be a single char,
888an octal escape sequence, a special escape like C<\n> or a 3 or
889more digit hex value.
890
44a2ac75
YO
891If PERL_PV_ESCAPE_RE is set then the escape char used will be a '%' and
892not a '\\'. This is because regexes very often contain backslashed
893sequences, whereas '%' is not a particularly common character in patterns.
894
ddc5bc0f 895Returns a pointer to the escaped text as held by dsv.
3df15adc 896
ddc5bc0f
YO
897 char* pv_escape(SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags)
898
899=for hackers
900Found in file dump.c
3df15adc 901
ddc5bc0f
YO
902=item pv_pretty
903X<pv_pretty>
904
ddc5bc0f 905Converts a string into something presentable, handling escaping via
95b611b0 906pv_escape() and supporting quoting and ellipses.
ddc5bc0f
YO
907
908If the PERL_PV_PRETTY_QUOTE flag is set then the result will be
909double quoted with any double quotes in the string escaped. Otherwise
910if the PERL_PV_PRETTY_LTGT flag is set then the result be wrapped in
911angle brackets.
912
95b611b0
RGS
913If the PERL_PV_PRETTY_ELLIPSES flag is set and not all characters in
914string were output then an ellipsis C<...> will be appended to the
ddc5bc0f
YO
915string. Note that this happens AFTER it has been quoted.
916
917If start_color is non-null then it will be inserted after the opening
918quote (if there is one) but before the escaped text. If end_color
919is non-null then it will be inserted after the escaped text but before
95b611b0 920any quotes or ellipses.
ddc5bc0f
YO
921
922Returns a pointer to the prettified text as held by dsv.
923
ddc5bc0f 924 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)
3df15adc
YO
925
926=for hackers
927Found in file dump.c
928
929
930=back
931
9244d4ad
RGS
932=head1 Functions in file mathoms.c
933
934
935=over 8
936
937=item gv_fetchmethod
938X<gv_fetchmethod>
939
940See L<gv_fetchmethod_autoload>.
941
942 GV* gv_fetchmethod(HV* stash, const char* name)
943
944=for hackers
945Found in file mathoms.c
946
b47163a2
NC
947=item pack_cat
948X<pack_cat>
949
950The engine implementing pack() Perl function. Note: parameters next_in_list and
951flags are not used. This call should not be used; use packlist instead.
952
953 void pack_cat(SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags)
954
955=for hackers
956Found in file mathoms.c
957
9244d4ad
RGS
958=item sv_2pvbyte_nolen
959X<sv_2pvbyte_nolen>
960
961Return a pointer to the byte-encoded representation of the SV.
962May cause the SV to be downgraded from UTF-8 as a side-effect.
963
964Usually accessed via the C<SvPVbyte_nolen> macro.
965
966 char* sv_2pvbyte_nolen(SV* sv)
967
968=for hackers
969Found in file mathoms.c
970
971=item sv_2pvutf8_nolen
972X<sv_2pvutf8_nolen>
973
974Return a pointer to the UTF-8-encoded representation of the SV.
975May cause the SV to be upgraded to UTF-8 as a side-effect.
976
977Usually accessed via the C<SvPVutf8_nolen> macro.
978
979 char* sv_2pvutf8_nolen(SV* sv)
980
981=for hackers
982Found in file mathoms.c
983
984=item sv_2pv_nolen
985X<sv_2pv_nolen>
986
987Like C<sv_2pv()>, but doesn't return the length too. You should usually
988use the macro wrapper C<SvPV_nolen(sv)> instead.
989 char* sv_2pv_nolen(SV* sv)
990
991=for hackers
992Found in file mathoms.c
993
994=item sv_catpvn_mg
995X<sv_catpvn_mg>
996
997Like C<sv_catpvn>, but also handles 'set' magic.
998
999 void sv_catpvn_mg(SV *sv, const char *ptr, STRLEN len)
1000
1001=for hackers
1002Found in file mathoms.c
1003
1004=item sv_catsv_mg
1005X<sv_catsv_mg>
1006
1007Like C<sv_catsv>, but also handles 'set' magic.
1008
4048f010 1009 void sv_catsv_mg(SV *dsv, SV *ssv)
9244d4ad
RGS
1010
1011=for hackers
1012Found in file mathoms.c
1013
1014=item sv_force_normal
1015X<sv_force_normal>
1016
1017Undo various types of fakery on an SV: if the PV is a shared string, make
1018a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
1019an xpvmg. See also C<sv_force_normal_flags>.
1020
1021 void sv_force_normal(SV *sv)
1022
1023=for hackers
1024Found in file mathoms.c
1025
1026=item sv_iv
1027X<sv_iv>
1028
1029A private implementation of the C<SvIVx> macro for compilers which can't
1030cope with complex macro expressions. Always use the macro instead.
1031
1032 IV sv_iv(SV* sv)
1033
1034=for hackers
1035Found in file mathoms.c
1036
1037=item sv_nolocking
1038X<sv_nolocking>
1039
1040Dummy routine which "locks" an SV when there is no locking module present.
1041Exists to avoid test for a NULL function pointer and because it could
1042potentially warn under some level of strict-ness.
1043
1044"Superseded" by sv_nosharing().
1045
c48640ec 1046 void sv_nolocking(SV *sv)
9244d4ad
RGS
1047
1048=for hackers
1049Found in file mathoms.c
1050
1051=item sv_nounlocking
1052X<sv_nounlocking>
1053
1054Dummy routine which "unlocks" an SV when there is no locking module present.
1055Exists to avoid test for a NULL function pointer and because it could
1056potentially warn under some level of strict-ness.
1057
1058"Superseded" by sv_nosharing().
1059
c48640ec 1060 void sv_nounlocking(SV *sv)
9244d4ad
RGS
1061
1062=for hackers
1063Found in file mathoms.c
1064
1065=item sv_nv
1066X<sv_nv>
1067
1068A private implementation of the C<SvNVx> macro for compilers which can't
1069cope with complex macro expressions. Always use the macro instead.
1070
1071 NV sv_nv(SV* sv)
1072
1073=for hackers
1074Found in file mathoms.c
1075
1076=item sv_pv
1077X<sv_pv>
1078
1079Use the C<SvPV_nolen> macro instead
1080
1081 char* sv_pv(SV *sv)
1082
1083=for hackers
1084Found in file mathoms.c
1085
1086=item sv_pvbyte
1087X<sv_pvbyte>
1088
1089Use C<SvPVbyte_nolen> instead.
1090
1091 char* sv_pvbyte(SV *sv)
1092
1093=for hackers
1094Found in file mathoms.c
1095
1096=item sv_pvbyten
1097X<sv_pvbyten>
1098
1099A private implementation of the C<SvPVbyte> macro for compilers
1100which can't cope with complex macro expressions. Always use the macro
1101instead.
1102
4048f010 1103 char* sv_pvbyten(SV *sv, STRLEN *lp)
9244d4ad
RGS
1104
1105=for hackers
1106Found in file mathoms.c
1107
1108=item sv_pvn
1109X<sv_pvn>
1110
1111A private implementation of the C<SvPV> macro for compilers which can't
1112cope with complex macro expressions. Always use the macro instead.
1113
4048f010 1114 char* sv_pvn(SV *sv, STRLEN *lp)
9244d4ad
RGS
1115
1116=for hackers
1117Found in file mathoms.c
1118
1119=item sv_pvutf8
1120X<sv_pvutf8>
1121
1122Use the C<SvPVutf8_nolen> macro instead
1123
1124 char* sv_pvutf8(SV *sv)
1125
1126=for hackers
1127Found in file mathoms.c
1128
1129=item sv_pvutf8n
1130X<sv_pvutf8n>
1131
1132A private implementation of the C<SvPVutf8> macro for compilers
1133which can't cope with complex macro expressions. Always use the macro
1134instead.
1135
4048f010 1136 char* sv_pvutf8n(SV *sv, STRLEN *lp)
9244d4ad
RGS
1137
1138=for hackers
1139Found in file mathoms.c
1140
1141=item sv_taint
1142X<sv_taint>
1143
1144Taint an SV. Use C<SvTAINTED_on> instead.
1145 void sv_taint(SV* sv)
1146
1147=for hackers
1148Found in file mathoms.c
1149
1150=item sv_unref
1151X<sv_unref>
1152
1153Unsets the RV status of the SV, and decrements the reference count of
1154whatever was being referenced by the RV. This can almost be thought of
1155as a reversal of C<newSVrv>. This is C<sv_unref_flags> with the C<flag>
1156being zero. See C<SvROK_off>.
1157
1158 void sv_unref(SV* sv)
1159
1160=for hackers
1161Found in file mathoms.c
1162
fed01289
SP
1163=item sv_usepvn
1164X<sv_usepvn>
1165
1166Tells an SV to use C<ptr> to find its string value. Implemented by
1167calling C<sv_usepvn_flags> with C<flags> of 0, hence does not handle 'set'
1168magic. See C<sv_usepvn_flags>.
1169
1170 void sv_usepvn(SV* sv, char* ptr, STRLEN len)
1171
1172=for hackers
1173Found in file mathoms.c
1174
1175=item sv_usepvn_mg
1176X<sv_usepvn_mg>
1177
1178Like C<sv_usepvn>, but also handles 'set' magic.
1179
1180 void sv_usepvn_mg(SV *sv, char *ptr, STRLEN len)
1181
1182=for hackers
1183Found in file mathoms.c
1184
9244d4ad
RGS
1185=item sv_uv
1186X<sv_uv>
1187
1188A private implementation of the C<SvUVx> macro for compilers which can't
1189cope with complex macro expressions. Always use the macro instead.
1190
1191 UV sv_uv(SV* sv)
1192
1193=for hackers
1194Found in file mathoms.c
1195
95be277c
NC
1196=item unpack_str
1197X<unpack_str>
1198
1199The engine implementing unpack() Perl function. Note: parameters strbeg, new_s
1200and ocnt are not used. This call should not be used, use unpackstring instead.
1201
1202 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)
1203
1204=for hackers
1205Found in file mathoms.c
1206
9244d4ad
RGS
1207
1208=back
1209
eb533572
DM
1210=head1 Functions in file perl.h
1211
1212
1213=over 8
1214
1215=item PERL_SYS_INIT
1216X<PERL_SYS_INIT>
1217
1218Provides system-specific tune up of the C runtime environment necessary to
1219run Perl interpreters. This should be called only once, before creating
1220any Perl interpreters.
1221
1222 void PERL_SYS_INIT(int argc, char** argv)
1223
1224=for hackers
1225Found in file perl.h
1226
1227=item PERL_SYS_INIT3
1228X<PERL_SYS_INIT3>
1229
1230Provides system-specific tune up of the C runtime environment necessary to
1231run Perl interpreters. This should be called only once, before creating
1232any Perl interpreters.
1233
1234 void PERL_SYS_INIT3(int argc, char** argv, char** env)
1235
1236=for hackers
1237Found in file perl.h
1238
1239=item PERL_SYS_TERM
1240X<PERL_SYS_TERM>
1241
1242Provides system-specific clean up of the C runtime environment after
1243running Perl interpreters. This should be called only once, after
1244freeing any remaining Perl interpreters.
1245
1246 void PERL_SYS_TERM()
1247
1248=for hackers
1249Found in file perl.h
1250
1251
1252=back
1253
daad78fc
RGS
1254=head1 Functions in file pp_ctl.c
1255
1256
1257=over 8
1258
1259=item find_runcv
1260X<find_runcv>
1261
1262Locate the CV corresponding to the currently executing sub or eval.
1263If db_seqp is non_null, skip CVs that are in the DB package and populate
1264*db_seqp with the cop sequence number at the point that the DB:: code was
1265entered. (allows debuggers to eval in the scope of the breakpoint rather
1266than in the scope of the debugger itself).
1267
1268 CV* find_runcv(U32 *db_seqp)
1269
1270=for hackers
1271Found in file pp_ctl.c
1272
1273
1274=back
1275
6050d10e
JP
1276=head1 Functions in file pp_pack.c
1277
1278
1279=over 8
1280
7accc089 1281=item packlist
d8c40edc 1282X<packlist>
6050d10e
JP
1283
1284The engine implementing pack() Perl function.
1285
f7fe979e 1286 void packlist(SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist)
7accc089
JH
1287
1288=for hackers
1289Found in file pp_pack.c
1290
7accc089 1291=item unpackstring
d8c40edc 1292X<unpackstring>
6050d10e 1293
608d3aed
WL
1294The engine implementing unpack() Perl function. C<unpackstring> puts the
1295extracted list items on the stack and returns the number of elements.
1296Issue C<PUTBACK> before and C<SPAGAIN> after the call to this function.
6050d10e 1297
f7fe979e 1298 I32 unpackstring(const char *pat, const char *patend, const char *s, const char *strend, U32 flags)
7accc089
JH
1299
1300=for hackers
1301Found in file pp_pack.c
1302
6050d10e
JP
1303
1304=back
1305
8226a3d7
NC
1306=head1 Functions in file pp_sys.c
1307
1308
1309=over 8
1310
1311=item setdefout
1312X<setdefout>
1313
1314Sets PL_defoutgv, the default file handle for output, to the passed in
1315typeglob. As PL_defoutgv "owns" a reference on its typeglob, the reference
1316count of the passed in typeglob is increased by one, and the reference count
1317of the typeglob that PL_defoutgv points to is decreased by one.
1318
1319 void setdefout(GV* gv)
1320
1321=for hackers
1322Found in file pp_sys.c
1323
1324
1325=back
1326
94bdecf9 1327=head1 GV Functions
6e9d1081 1328
94bdecf9 1329=over 8
6e9d1081 1330
954c1994 1331=item GvSV
d8c40edc 1332X<GvSV>
954c1994
GS
1333
1334Return the SV from the GV.
1335
1336 SV* GvSV(GV* gv)
1337
497711e7
GS
1338=for hackers
1339Found in file gv.h
1340
9f435386
RGS
1341=item gv_const_sv
1342X<gv_const_sv>
1343
1344If C<gv> is a typeglob whose subroutine entry is a constant sub eligible for
1345inlining, or C<gv> is a placeholder reference that would be promoted to such
1346a typeglob, then returns the value returned by the sub. Otherwise, returns
1347NULL.
1348
1349 SV* gv_const_sv(GV* gv)
1350
1351=for hackers
1352Found in file gv.c
1353
954c1994 1354=item gv_fetchmeth
d8c40edc 1355X<gv_fetchmeth>
954c1994
GS
1356
1357Returns the glob with the given C<name> and a defined subroutine or
1358C<NULL>. The glob lives in the given C<stash>, or in the stashes
a453c169 1359accessible via @ISA and UNIVERSAL::.
954c1994
GS
1360
1361The argument C<level> should be either 0 or -1. If C<level==0>, as a
1362side-effect creates a glob with the given C<name> in the given C<stash>
1363which in the case of success contains an alias for the subroutine, and sets
e1a479c5 1364up caching info for this glob.
954c1994
GS
1365
1366This function grants C<"SUPER"> token as a postfix of the stash name. The
1367GV returned from C<gv_fetchmeth> may be a method cache entry, which is not
4929bf7b 1368visible to Perl code. So when calling C<call_sv>, you should not use
954c1994 1369the GV directly; instead, you should use the method's CV, which can be
1c846c1f 1370obtained from the GV with the C<GvCV> macro.
954c1994
GS
1371
1372 GV* gv_fetchmeth(HV* stash, const char* name, STRLEN len, I32 level)
1373
497711e7
GS
1374=for hackers
1375Found in file gv.c
1376
954c1994 1377=item gv_fetchmethod_autoload
d8c40edc 1378X<gv_fetchmethod_autoload>
954c1994
GS
1379
1380Returns the glob which contains the subroutine to call to invoke the method
1381on the C<stash>. In fact in the presence of autoloading this may be the
1382glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is
1c846c1f 1383already setup.
954c1994
GS
1384
1385The third parameter of C<gv_fetchmethod_autoload> determines whether
1386AUTOLOAD lookup is performed if the given method is not present: non-zero
1c846c1f 1387means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.
954c1994 1388Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload>
1c846c1f 1389with a non-zero C<autoload> parameter.
954c1994
GS
1390
1391These functions grant C<"SUPER"> token as a prefix of the method name. Note
1392that if you want to keep the returned glob for a long time, you need to
1393check for it being "AUTOLOAD", since at the later time the call may load a
1394different subroutine due to $AUTOLOAD changing its value. Use the glob
1c846c1f 1395created via a side effect to do this.
954c1994
GS
1396
1397These functions have the same side-effects and as C<gv_fetchmeth> with
1398C<level==0>. C<name> should be writable if contains C<':'> or C<'
1399''>. The warning against passing the GV returned by C<gv_fetchmeth> to
1c846c1f 1400C<call_sv> apply equally to these functions.
954c1994
GS
1401
1402 GV* gv_fetchmethod_autoload(HV* stash, const char* name, I32 autoload)
1403
497711e7
GS
1404=for hackers
1405Found in file gv.c
1406
0c81b680 1407=item gv_fetchmeth_autoload
d8c40edc 1408X<gv_fetchmeth_autoload>
0c81b680
JH
1409
1410Same as gv_fetchmeth(), but looks for autoloaded subroutines too.
1411Returns a glob for the subroutine.
1412
1413For an autoloaded subroutine without a GV, will create a GV even
1414if C<level < 0>. For an autoloaded subroutine without a stub, GvCV()
1415of the result may be zero.
1416
1417 GV* gv_fetchmeth_autoload(HV* stash, const char* name, STRLEN len, I32 level)
1418
1419=for hackers
1420Found in file gv.c
1421
954c1994 1422=item gv_stashpv
d8c40edc 1423X<gv_stashpv>
954c1994 1424
da51bb9b 1425Returns a pointer to the stash for a specified package. Uses C<strlen> to
75c442e4 1426determine the length of C<name>, then calls C<gv_stashpvn()>.
bc96cb06 1427
da51bb9b 1428 HV* gv_stashpv(const char* name, I32 flags)
bc96cb06
SH
1429
1430=for hackers
1431Found in file gv.c
1432
1433=item gv_stashpvn
d8c40edc 1434X<gv_stashpvn>
bc96cb06 1435
da51bb9b
NC
1436Returns a pointer to the stash for a specified package. The C<namelen>
1437parameter indicates the length of the C<name>, in bytes. C<flags> is passed
1438to C<gv_fetchpvn_flags()>, so if set to C<GV_ADD> then the package will be
1439created if it does not already exist. If the package does not exist and
1440C<flags> is 0 (or any other setting that does not create packages) then NULL
1441is returned.
954c1994 1442
da51bb9b
NC
1443
1444 HV* gv_stashpvn(const char* name, U32 namelen, I32 flags)
954c1994 1445
497711e7
GS
1446=for hackers
1447Found in file gv.c
1448
3fe05580
MHM
1449=item gv_stashpvs
1450X<gv_stashpvs>
1451
1452Like C<gv_stashpvn>, but takes a literal string instead of a string/length pair.
1453
1454 HV* gv_stashpvs(const char* name, I32 create)
1455
1456=for hackers
1457Found in file handy.h
1458
954c1994 1459=item gv_stashsv
d8c40edc 1460X<gv_stashsv>
954c1994 1461
da51bb9b 1462Returns a pointer to the stash for a specified package. See C<gv_stashpvn>.
954c1994 1463
da51bb9b 1464 HV* gv_stashsv(SV* sv, I32 flags)
954c1994 1465
497711e7
GS
1466=for hackers
1467Found in file gv.c
1468
954c1994 1469
94bdecf9 1470=back
954c1994 1471
94bdecf9 1472=head1 Handy Values
497711e7 1473
94bdecf9 1474=over 8
954c1994 1475
e509e693 1476=item Nullav
d8c40edc 1477X<Nullav>
497711e7 1478
e509e693 1479Null AV pointer.
954c1994 1480
3ae1b226
NC
1481(deprecated - use C<(AV *)NULL> instead)
1482
94bdecf9 1483=for hackers
e509e693 1484Found in file av.h
954c1994 1485
dd2155a4 1486=item Nullch
d8c40edc 1487X<Nullch>
94bdecf9 1488
24792b8d 1489Null character pointer. (No longer available when C<PERL_CORE> is defined.)
2307c6d0 1490
497711e7 1491=for hackers
94bdecf9 1492Found in file handy.h
497711e7 1493
e509e693 1494=item Nullcv
d8c40edc 1495X<Nullcv>
e509e693
SH
1496
1497Null CV pointer.
1498
3ae1b226
NC
1499(deprecated - use C<(CV *)NULL> instead)
1500
e509e693
SH
1501=for hackers
1502Found in file cv.h
1503
1504=item Nullhv
d8c40edc 1505X<Nullhv>
e509e693
SH
1506
1507Null HV pointer.
1508
3ae1b226
NC
1509(deprecated - use C<(HV *)NULL> instead)
1510
e509e693
SH
1511=for hackers
1512Found in file hv.h
1513
94bdecf9 1514=item Nullsv
d8c40edc 1515X<Nullsv>
954c1994 1516
24792b8d 1517Null SV pointer. (No longer available when C<PERL_CORE> is defined.)
954c1994 1518
497711e7 1519=for hackers
94bdecf9 1520Found in file handy.h
497711e7 1521
954c1994 1522
94bdecf9 1523=back
954c1994 1524
94bdecf9 1525=head1 Hash Manipulation Functions
497711e7 1526
94bdecf9 1527=over 8
954c1994 1528
94bdecf9 1529=item get_hv
d8c40edc 1530X<get_hv>
954c1994 1531
6673a63c
NC
1532Returns the HV of the specified Perl hash. C<flags> are passed to
1533C<gv_fetchpv>. If C<GV_ADD> is set and the
1534Perl variable does not exist then it will be created. If C<flags> is zero
1535and the variable does not exist then NULL is returned.
497711e7 1536
94bdecf9 1537NOTE: the perl_ form of this function is deprecated.
954c1994 1538
6673a63c 1539 HV* get_hv(const char *name, I32 flags)
954c1994 1540
497711e7 1541=for hackers
94bdecf9 1542Found in file perl.c
497711e7 1543
e509e693 1544=item HEf_SVKEY
d8c40edc 1545X<HEf_SVKEY>
e509e693
SH
1546
1547This flag, used in the length slot of hash entries and magic structures,
1548specifies the structure contains an C<SV*> pointer where a C<char*> pointer
1549is to be expected. (For information only--not to be used).
1550
1551=for hackers
1552Found in file hv.h
1553
954c1994 1554=item HeHASH
d8c40edc 1555X<HeHASH>
954c1994
GS
1556
1557Returns the computed hash stored in the hash entry.
1558
1559 U32 HeHASH(HE* he)
1560
497711e7
GS
1561=for hackers
1562Found in file hv.h
1563
954c1994 1564=item HeKEY
d8c40edc 1565X<HeKEY>
954c1994
GS
1566
1567Returns the actual pointer stored in the key slot of the hash entry. The
1568pointer may be either C<char*> or C<SV*>, depending on the value of
1569C<HeKLEN()>. Can be assigned to. The C<HePV()> or C<HeSVKEY()> macros are
1570usually preferable for finding the value of a key.
1571
1572 void* HeKEY(HE* he)
1573
497711e7
GS
1574=for hackers
1575Found in file hv.h
1576
954c1994 1577=item HeKLEN
d8c40edc 1578X<HeKLEN>
954c1994
GS
1579
1580If this is negative, and amounts to C<HEf_SVKEY>, it indicates the entry
1581holds an C<SV*> key. Otherwise, holds the actual length of the key. Can
1582be assigned to. The C<HePV()> macro is usually preferable for finding key
1583lengths.
1584
1585 STRLEN HeKLEN(HE* he)
1586
497711e7
GS
1587=for hackers
1588Found in file hv.h
1589
954c1994 1590=item HePV
d8c40edc 1591X<HePV>
954c1994
GS
1592
1593Returns the key slot of the hash entry as a C<char*> value, doing any
1594necessary dereferencing of possibly C<SV*> keys. The length of the string
1595is placed in C<len> (this is a macro, so do I<not> use C<&len>). If you do
1596not care about what the length of the key is, you may use the global
1597variable C<PL_na>, though this is rather less efficient than using a local
1598variable. Remember though, that hash keys in perl are free to contain
1599embedded nulls, so using C<strlen()> or similar is not a good way to find
1600the length of hash keys. This is very similar to the C<SvPV()> macro
289d3c6a
NC
1601described elsewhere in this document. See also C<HeUTF8>.
1602
1603If you are using C<HePV> to get values to pass to C<newSVpvn()> to create a
1604new SV, you should consider using C<newSVhek(HeKEY_hek(he))> as it is more
1605efficient.
954c1994
GS
1606
1607 char* HePV(HE* he, STRLEN len)
1608
497711e7
GS
1609=for hackers
1610Found in file hv.h
1611
954c1994 1612=item HeSVKEY
d8c40edc 1613X<HeSVKEY>
954c1994 1614
458cb9d2 1615Returns the key as an C<SV*>, or C<NULL> if the hash entry does not
954c1994
GS
1616contain an C<SV*> key.
1617
1618 SV* HeSVKEY(HE* he)
1619
497711e7
GS
1620=for hackers
1621Found in file hv.h
1622
954c1994 1623=item HeSVKEY_force
d8c40edc 1624X<HeSVKEY_force>
954c1994
GS
1625
1626Returns the key as an C<SV*>. Will create and return a temporary mortal
1627C<SV*> if the hash entry contains only a C<char*> key.
1628
1629 SV* HeSVKEY_force(HE* he)
1630
497711e7
GS
1631=for hackers
1632Found in file hv.h
1633
954c1994 1634=item HeSVKEY_set
d8c40edc 1635X<HeSVKEY_set>
954c1994
GS
1636
1637Sets the key to a given C<SV*>, taking care to set the appropriate flags to
1638indicate the presence of an C<SV*> key, and returns the same
1639C<SV*>.
1640
1641 SV* HeSVKEY_set(HE* he, SV* sv)
1642
497711e7
GS
1643=for hackers
1644Found in file hv.h
1645
289d3c6a
NC
1646=item HeUTF8
1647X<HeUTF8>
1648
1649Returns whether the C<char *> value returned by C<HePV> is encoded in UTF-8,
1650doing any necessary dereferencing of possibly C<SV*> keys. The value returned
0a0b43fa 1651will be 0 or non-0, not necessarily 1 (or even a value with any low bits set),
289d3c6a
NC
1652so B<do not> blindly assign this to a C<bool> variable, as C<bool> may be a
1653typedef for C<char>.
1654
1655 char* HeUTF8(HE* he, STRLEN len)
1656
1657=for hackers
1658Found in file hv.h
1659
954c1994 1660=item HeVAL
d8c40edc 1661X<HeVAL>
954c1994
GS
1662
1663Returns the value slot (type C<SV*>) stored in the hash entry.
1664
1665 SV* HeVAL(HE* he)
1666
497711e7
GS
1667=for hackers
1668Found in file hv.h
1669
954c1994 1670=item HvNAME
d8c40edc 1671X<HvNAME>
954c1994 1672
9282b5fd
SH
1673Returns the package name of a stash, or NULL if C<stash> isn't a stash.
1674See C<SvSTASH>, C<CvSTASH>.
954c1994
GS
1675
1676 char* HvNAME(HV* stash)
1677
497711e7
GS
1678=for hackers
1679Found in file hv.h
1680
ecae49c0 1681=item hv_assert
d8c40edc 1682X<hv_assert>
ecae49c0
NC
1683
1684Check that a hash is in an internally consistent state.
1685
4048f010 1686 void hv_assert(HV *hv)
ecae49c0
NC
1687
1688=for hackers
1689Found in file hv.c
1690
954c1994 1691=item hv_clear
d8c40edc 1692X<hv_clear>
954c1994
GS
1693
1694Clears a hash, making it empty.
1695
4048f010 1696 void hv_clear(HV *hv)
954c1994 1697
497711e7
GS
1698=for hackers
1699Found in file hv.c
1700
3540d4ce 1701=item hv_clear_placeholders
d8c40edc 1702X<hv_clear_placeholders>
3540d4ce
AB
1703
1704Clears any placeholders from a hash. If a restricted hash has any of its keys
1705marked as readonly and the key is subsequently deleted, the key is not actually
1706deleted but is marked by assigning it a value of &PL_sv_placeholder. This tags
1707it so it will be ignored by future operations such as iterating over the hash,
fa11829f 1708but will still allow the hash to have a value reassigned to the key at some
3540d4ce
AB
1709future point. This function clears any such placeholder keys from the hash.
1710See Hash::Util::lock_keys() for an example of its use.
1711
4048f010 1712 void hv_clear_placeholders(HV *hv)
3540d4ce
AB
1713
1714=for hackers
1715Found in file hv.c
1716
954c1994 1717=item hv_delete
d8c40edc 1718X<hv_delete>
954c1994
GS
1719
1720Deletes a key/value pair in the hash. The value SV is removed from the
1c846c1f 1721hash and returned to the caller. The C<klen> is the length of the key.
954c1994
GS
1722The C<flags> value will normally be zero; if set to G_DISCARD then NULL
1723will be returned.
1724
4048f010 1725 SV* hv_delete(HV *hv, const char *key, I32 klen, I32 flags)
954c1994 1726
497711e7
GS
1727=for hackers
1728Found in file hv.c
1729
954c1994 1730=item hv_delete_ent
d8c40edc 1731X<hv_delete_ent>
954c1994
GS
1732
1733Deletes a key/value pair in the hash. The value SV is removed from the
1734hash and returned to the caller. The C<flags> value will normally be zero;
1735if set to G_DISCARD then NULL will be returned. C<hash> can be a valid
1736precomputed hash value, or 0 to ask for it to be computed.
1737
4048f010 1738 SV* hv_delete_ent(HV *hv, SV *keysv, I32 flags, U32 hash)
954c1994 1739
497711e7
GS
1740=for hackers
1741Found in file hv.c
1742
954c1994 1743=item hv_exists
d8c40edc 1744X<hv_exists>
954c1994
GS
1745
1746Returns a boolean indicating whether the specified hash key exists. The
1747C<klen> is the length of the key.
1748
4048f010 1749 bool hv_exists(HV *hv, const char *key, I32 klen)
954c1994 1750
497711e7
GS
1751=for hackers
1752Found in file hv.c
1753
954c1994 1754=item hv_exists_ent
d8c40edc 1755X<hv_exists_ent>
954c1994
GS
1756
1757Returns a boolean indicating whether the specified hash key exists. C<hash>
1758can be a valid precomputed hash value, or 0 to ask for it to be
1759computed.
1760
4048f010 1761 bool hv_exists_ent(HV *hv, SV *keysv, U32 hash)
954c1994 1762
497711e7
GS
1763=for hackers
1764Found in file hv.c
1765
954c1994 1766=item hv_fetch
d8c40edc 1767X<hv_fetch>
954c1994
GS
1768
1769Returns the SV which corresponds to the specified key in the hash. The
1770C<klen> is the length of the key. If C<lval> is set then the fetch will be
1771part of a store. Check that the return value is non-null before
f4758303 1772dereferencing it to an C<SV*>.
954c1994 1773
96f1132b 1774See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994
GS
1775information on how to use this function on tied hashes.
1776
4048f010 1777 SV** hv_fetch(HV *hv, const char *key, I32 klen, I32 lval)
954c1994 1778
497711e7
GS
1779=for hackers
1780Found in file hv.c
1781
3fe05580
MHM
1782=item hv_fetchs
1783X<hv_fetchs>
1784
1785Like C<hv_fetch>, but takes a literal string instead of a string/length pair.
1786
1787 SV** hv_fetchs(HV* tb, const char* key, I32 lval)
1788
1789=for hackers
1790Found in file handy.h
1791
954c1994 1792=item hv_fetch_ent
d8c40edc 1793X<hv_fetch_ent>
954c1994
GS
1794
1795Returns the hash entry which corresponds to the specified key in the hash.
1796C<hash> must be a valid precomputed hash number for the given C<key>, or 0
1797if you want the function to compute it. IF C<lval> is set then the fetch
1798will be part of a store. Make sure the return value is non-null before
1799accessing it. The return value when C<tb> is a tied hash is a pointer to a
1800static location, so be sure to make a copy of the structure if you need to
1c846c1f 1801store it somewhere.
954c1994 1802
96f1132b 1803See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994
GS
1804information on how to use this function on tied hashes.
1805
4048f010 1806 HE* hv_fetch_ent(HV *hv, SV *keysv, I32 lval, U32 hash)
954c1994 1807
497711e7
GS
1808=for hackers
1809Found in file hv.c
1810
954c1994 1811=item hv_iterinit
d8c40edc 1812X<hv_iterinit>
954c1994
GS
1813
1814Prepares a starting point to traverse a hash table. Returns the number of
1815keys in the hash (i.e. the same as C<HvKEYS(tb)>). The return value is
1c846c1f 1816currently only meaningful for hashes without tie magic.
954c1994
GS
1817
1818NOTE: Before version 5.004_65, C<hv_iterinit> used to return the number of
1819hash buckets that happen to be in use. If you still need that esoteric
1820value, you can get it through the macro C<HvFILL(tb)>.
1821
641d4181 1822
4048f010 1823 I32 hv_iterinit(HV *hv)
954c1994 1824
497711e7
GS
1825=for hackers
1826Found in file hv.c
1827
954c1994 1828=item hv_iterkey
d8c40edc 1829X<hv_iterkey>
954c1994
GS
1830
1831Returns the key from the current position of the hash iterator. See
1832C<hv_iterinit>.
1833
1834 char* hv_iterkey(HE* entry, I32* retlen)
1835
497711e7
GS
1836=for hackers
1837Found in file hv.c
1838
954c1994 1839=item hv_iterkeysv
d8c40edc 1840X<hv_iterkeysv>
954c1994
GS
1841
1842Returns the key as an C<SV*> from the current position of the hash
1843iterator. The return value will always be a mortal copy of the key. Also
1844see C<hv_iterinit>.
1845
1846 SV* hv_iterkeysv(HE* entry)
1847
497711e7
GS
1848=for hackers
1849Found in file hv.c
1850
954c1994 1851=item hv_iternext
d8c40edc 1852X<hv_iternext>
954c1994
GS
1853
1854Returns entries from a hash iterator. See C<hv_iterinit>.
1855
641d4181
JH
1856You may call C<hv_delete> or C<hv_delete_ent> on the hash entry that the
1857iterator currently points to, without losing your place or invalidating your
1858iterator. Note that in this case the current entry is deleted from the hash
1859with your iterator holding the last reference to it. Your iterator is flagged
1860to free the entry on the next call to C<hv_iternext>, so you must not discard
1861your iterator immediately else the entry will leak - call C<hv_iternext> to
1862trigger the resource deallocation.
1863
4048f010 1864 HE* hv_iternext(HV *hv)
954c1994 1865
497711e7
GS
1866=for hackers
1867Found in file hv.c
1868
954c1994 1869=item hv_iternextsv
d8c40edc 1870X<hv_iternextsv>
954c1994
GS
1871
1872Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one
1873operation.
1874
4048f010 1875 SV* hv_iternextsv(HV *hv, char **key, I32 *retlen)
954c1994 1876
497711e7
GS
1877=for hackers
1878Found in file hv.c
1879
641d4181 1880=item hv_iternext_flags
d8c40edc 1881X<hv_iternext_flags>
641d4181
JH
1882
1883Returns entries from a hash iterator. See C<hv_iterinit> and C<hv_iternext>.
1884The C<flags> value will normally be zero; if HV_ITERNEXT_WANTPLACEHOLDERS is
1885set the placeholders keys (for restricted hashes) will be returned in addition
1886to normal keys. By default placeholders are automatically skipped over.
384679aa
RGS
1887Currently a placeholder is implemented with a value that is
1888C<&Perl_sv_placeholder>. Note that the implementation of placeholders and
641d4181
JH
1889restricted hashes may change, and the implementation currently is
1890insufficiently abstracted for any change to be tidy.
1891
1892NOTE: this function is experimental and may change or be
1893removed without notice.
1894
4048f010 1895 HE* hv_iternext_flags(HV *hv, I32 flags)
641d4181
JH
1896
1897=for hackers
1898Found in file hv.c
1899
954c1994 1900=item hv_iterval
d8c40edc 1901X<hv_iterval>
954c1994
GS
1902
1903Returns the value from the current position of the hash iterator. See
1904C<hv_iterkey>.
1905
4048f010 1906 SV* hv_iterval(HV *hv, HE *entry)
954c1994 1907
497711e7
GS
1908=for hackers
1909Found in file hv.c
1910
954c1994 1911=item hv_magic
d8c40edc 1912X<hv_magic>
954c1994
GS
1913
1914Adds magic to a hash. See C<sv_magic>.
1915
4048f010 1916 void hv_magic(HV *hv, GV *gv, int how)
954c1994 1917
497711e7
GS
1918=for hackers
1919Found in file hv.c
1920
a3bcc51e 1921=item hv_scalar
d8c40edc 1922X<hv_scalar>
a3bcc51e
TP
1923
1924Evaluates the hash in scalar context and returns the result. Handles magic when the hash is tied.
1925
4048f010 1926 SV* hv_scalar(HV *hv)
a3bcc51e
TP
1927
1928=for hackers
1929Found in file hv.c
1930
954c1994 1931=item hv_store
d8c40edc 1932X<hv_store>
954c1994
GS
1933
1934Stores an SV in a hash. The hash key is specified as C<key> and C<klen> is
1935the length of the key. The C<hash> parameter is the precomputed hash
1936value; if it is zero then Perl will compute it. The return value will be
1937NULL if the operation failed or if the value did not need to be actually
1938stored within the hash (as in the case of tied hashes). Otherwise it can
1939be dereferenced to get the original C<SV*>. Note that the caller is
1940responsible for suitably incrementing the reference count of C<val> before
7e8c5dac
HS
1941the call, and decrementing it if the function returned NULL. Effectively
1942a successful hv_store takes ownership of one reference to C<val>. This is
1943usually what you want; a newly created SV has a reference count of one, so
1944if all your code does is create SVs then store them in a hash, hv_store
1945will own the only reference to the new SV, and your code doesn't need to do
1946anything further to tidy up. hv_store is not implemented as a call to
1947hv_store_ent, and does not create a temporary SV for the key, so if your
1948key data is not already in SV form then use hv_store in preference to
1949hv_store_ent.
954c1994 1950
96f1132b 1951See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994
GS
1952information on how to use this function on tied hashes.
1953
4048f010 1954 SV** hv_store(HV *hv, const char *key, I32 klen, SV *val, U32 hash)
954c1994 1955
497711e7
GS
1956=for hackers
1957Found in file hv.c
1958
3fe05580
MHM
1959=item hv_stores
1960X<hv_stores>
1961
1962Like C<hv_store>, but takes a literal string instead of a string/length pair
1963and omits the hash parameter.
1964
1965 SV** hv_stores(HV* tb, const char* key, NULLOK SV* val)
1966
1967=for hackers
1968Found in file handy.h
1969
954c1994 1970=item hv_store_ent
d8c40edc 1971X<hv_store_ent>
954c1994
GS
1972
1973Stores C<val> in a hash. The hash key is specified as C<key>. The C<hash>
1974parameter is the precomputed hash value; if it is zero then Perl will
1975compute it. The return value is the new hash entry so created. It will be
1976NULL if the operation failed or if the value did not need to be actually
1977stored within the hash (as in the case of tied hashes). Otherwise the
f22d8e4b 1978contents of the return value can be accessed using the C<He?> macros
954c1994
GS
1979described here. Note that the caller is responsible for suitably
1980incrementing the reference count of C<val> before the call, and
7e8c5dac
HS
1981decrementing it if the function returned NULL. Effectively a successful
1982hv_store_ent takes ownership of one reference to C<val>. This is
1983usually what you want; a newly created SV has a reference count of one, so
1984if all your code does is create SVs then store them in a hash, hv_store
1985will own the only reference to the new SV, and your code doesn't need to do
1986anything further to tidy up. Note that hv_store_ent only reads the C<key>;
1987unlike C<val> it does not take ownership of it, so maintaining the correct
1988reference count on C<key> is entirely the caller's responsibility. hv_store
1989is not implemented as a call to hv_store_ent, and does not create a temporary
1990SV for the key, so if your key data is not already in SV form then use
1991hv_store in preference to hv_store_ent.
954c1994 1992
96f1132b 1993See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994
GS
1994information on how to use this function on tied hashes.
1995
4048f010 1996 HE* hv_store_ent(HV *hv, SV *key, SV *val, U32 hash)
954c1994 1997
497711e7
GS
1998=for hackers
1999Found in file hv.c
2000
954c1994 2001=item hv_undef
d8c40edc 2002X<hv_undef>
954c1994
GS
2003
2004Undefines the hash.
2005
4048f010 2006 void hv_undef(HV *hv)
954c1994 2007
497711e7
GS
2008=for hackers
2009Found in file hv.c
2010
94bdecf9 2011=item newHV
d8c40edc 2012X<newHV>
d2cc3551 2013
94bdecf9 2014Creates a new HV. The reference count is set to 1.
d2cc3551 2015
94bdecf9 2016 HV* newHV()
d2cc3551
JH
2017
2018=for hackers
6fc9eaaa 2019Found in file hv.h
d2cc3551 2020
954c1994 2021
94bdecf9 2022=back
954c1994 2023
94bdecf9 2024=head1 Magical Functions
954c1994 2025
94bdecf9 2026=over 8
497711e7 2027
94bdecf9 2028=item mg_clear
d8c40edc 2029X<mg_clear>
954c1994 2030
94bdecf9 2031Clear something magical that the SV represents. See C<sv_magic>.
954c1994 2032
94bdecf9 2033 int mg_clear(SV* sv)
954c1994 2034
497711e7 2035=for hackers
94bdecf9 2036Found in file mg.c
497711e7 2037
94bdecf9 2038=item mg_copy
d8c40edc 2039X<mg_copy>
954c1994 2040
94bdecf9 2041Copies the magic from one SV to another. See C<sv_magic>.
954c1994 2042
4048f010 2043 int mg_copy(SV *sv, SV *nsv, const char *key, I32 klen)
954c1994 2044
497711e7 2045=for hackers
94bdecf9 2046Found in file mg.c
497711e7 2047
94bdecf9 2048=item mg_find
d8c40edc 2049X<mg_find>
954c1994 2050
94bdecf9 2051Finds the magic pointer for type matching the SV. See C<sv_magic>.
954c1994 2052
35a4481c 2053 MAGIC* mg_find(const SV* sv, int type)
954c1994 2054
497711e7 2055=for hackers
94bdecf9 2056Found in file mg.c
497711e7 2057
94bdecf9 2058=item mg_free
d8c40edc 2059X<mg_free>
954c1994 2060
94bdecf9 2061Free any magic storage used by the SV. See C<sv_magic>.
954c1994 2062
94bdecf9 2063 int mg_free(SV* sv)
954c1994 2064
497711e7 2065=for hackers
94bdecf9 2066Found in file mg.c
497711e7 2067
94bdecf9 2068=item mg_get
d8c40edc 2069X<mg_get>
eebe1485 2070
94bdecf9 2071Do magic after a value is retrieved from the SV. See C<sv_magic>.
282f25c9 2072
94bdecf9 2073 int mg_get(SV* sv)
eebe1485
SC
2074
2075=for hackers
94bdecf9 2076Found in file mg.c
eebe1485 2077
94bdecf9 2078=item mg_length
d8c40edc 2079X<mg_length>
eebe1485 2080
94bdecf9 2081Report on the SV's length. See C<sv_magic>.
eebe1485 2082
94bdecf9 2083 U32 mg_length(SV* sv)
eebe1485
SC
2084
2085=for hackers
94bdecf9 2086Found in file mg.c
eebe1485 2087
94bdecf9 2088=item mg_magical
d8c40edc 2089X<mg_magical>
954c1994 2090
94bdecf9 2091Turns on the magical status of an SV. See C<sv_magic>.
954c1994 2092
94bdecf9 2093 void mg_magical(SV* sv)
954c1994 2094
497711e7 2095=for hackers
94bdecf9 2096Found in file mg.c
497711e7 2097
94bdecf9 2098=item mg_set
d8c40edc 2099X<mg_set>
954c1994 2100
94bdecf9 2101Do magic after a value is assigned to the SV. See C<sv_magic>.
954c1994 2102
94bdecf9 2103 int mg_set(SV* sv)
954c1994 2104
497711e7 2105=for hackers
94bdecf9 2106Found in file mg.c
497711e7 2107
94bdecf9 2108=item SvGETMAGIC
d8c40edc 2109X<SvGETMAGIC>
954c1994 2110
94bdecf9
JH
2111Invokes C<mg_get> on an SV if it has 'get' magic. This macro evaluates its
2112argument more than once.
954c1994 2113
94bdecf9 2114 void SvGETMAGIC(SV* sv)
954c1994 2115
497711e7 2116=for hackers
94bdecf9 2117Found in file sv.h
497711e7 2118
a4f1a029 2119=item SvLOCK
d8c40edc 2120X<SvLOCK>
a4f1a029
NIS
2121
2122Arranges for a mutual exclusion lock to be obtained on sv if a suitable module
2123has been loaded.
2124
2125 void SvLOCK(SV* sv)
2126
2127=for hackers
2128Found in file sv.h
2129
94bdecf9 2130=item SvSETMAGIC
d8c40edc 2131X<SvSETMAGIC>
7d3fb230 2132
94bdecf9
JH
2133Invokes C<mg_set> on an SV if it has 'set' magic. This macro evaluates its
2134argument more than once.
7d3fb230 2135
94bdecf9 2136 void SvSETMAGIC(SV* sv)
7d3fb230
BS
2137
2138=for hackers
94bdecf9 2139Found in file sv.h
7d3fb230 2140
94bdecf9 2141=item SvSetMagicSV
d8c40edc 2142X<SvSetMagicSV>
954c1994 2143
94bdecf9 2144Like C<SvSetSV>, but does any set magic required afterwards.
954c1994 2145
94bdecf9 2146 void SvSetMagicSV(SV* dsb, SV* ssv)
954c1994 2147
497711e7 2148=for hackers
94bdecf9 2149Found in file sv.h
497711e7 2150
a4f1a029 2151=item SvSetMagicSV_nosteal
d8c40edc 2152X<SvSetMagicSV_nosteal>
a4f1a029 2153
80663158 2154Like C<SvSetSV_nosteal>, but does any set magic required afterwards.
a4f1a029
NIS
2155
2156 void SvSetMagicSV_nosteal(SV* dsv, SV* ssv)
2157
2158=for hackers
2159Found in file sv.h
2160
94bdecf9 2161=item SvSetSV
d8c40edc 2162X<SvSetSV>
954c1994 2163
94bdecf9
JH
2164Calls C<sv_setsv> if dsv is not the same as ssv. May evaluate arguments
2165more than once.
2166
2167 void SvSetSV(SV* dsb, SV* ssv)
954c1994 2168
497711e7 2169=for hackers
94bdecf9 2170Found in file sv.h
497711e7 2171
94bdecf9 2172=item SvSetSV_nosteal
d8c40edc 2173X<SvSetSV_nosteal>
954c1994 2174
94bdecf9
JH
2175Calls a non-destructive version of C<sv_setsv> if dsv is not the same as
2176ssv. May evaluate arguments more than once.
954c1994 2177
94bdecf9 2178 void SvSetSV_nosteal(SV* dsv, SV* ssv)
954c1994 2179
497711e7 2180=for hackers
94bdecf9 2181Found in file sv.h
497711e7 2182
a4f1a029 2183=item SvSHARE
d8c40edc 2184X<SvSHARE>
a4f1a029
NIS
2185
2186Arranges for sv to be shared between threads if a suitable module
2187has been loaded.
2188
2189 void SvSHARE(SV* sv)
2190
2191=for hackers
2192Found in file sv.h
2193
e509e693 2194=item SvUNLOCK
d8c40edc 2195X<SvUNLOCK>
e509e693
SH
2196
2197Releases a mutual exclusion lock on sv if a suitable module
2198has been loaded.
2199
2200 void SvUNLOCK(SV* sv)
2201
2202=for hackers
2203Found in file sv.h
2204
954c1994 2205
94bdecf9 2206=back
954c1994 2207
94bdecf9 2208=head1 Memory Management
954c1994 2209
94bdecf9 2210=over 8
497711e7 2211
94bdecf9 2212=item Copy
d8c40edc 2213X<Copy>
954c1994 2214
94bdecf9
JH
2215The XSUB-writer's interface to the C C<memcpy> function. The C<src> is the
2216source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is
2217the type. May fail on overlapping copies. See also C<Move>.
954c1994 2218
94bdecf9 2219 void Copy(void* src, void* dest, int nitems, type)
954c1994 2220
497711e7 2221=for hackers
94bdecf9 2222Found in file handy.h
497711e7 2223
e90e2364 2224=item CopyD
d8c40edc 2225X<CopyD>
e90e2364
NC
2226
2227Like C<Copy> but returns dest. Useful for encouraging compilers to tail-call
2228optimise.
2229
2230 void * CopyD(void* src, void* dest, int nitems, type)
2231
2232=for hackers
2233Found in file handy.h
2234
94bdecf9 2235=item Move
d8c40edc 2236X<Move>
954c1994 2237
94bdecf9
JH
2238The XSUB-writer's interface to the C C<memmove> function. The C<src> is the
2239source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is
2240the type. Can do overlapping moves. See also C<Copy>.
954c1994 2241
94bdecf9 2242 void Move(void* src, void* dest, int nitems, type)
954c1994 2243
497711e7 2244=for hackers
94bdecf9 2245Found in file handy.h
497711e7 2246
e90e2364 2247=item MoveD
d8c40edc 2248X<MoveD>
e90e2364
NC
2249
2250Like C<Move> but returns dest. Useful for encouraging compilers to tail-call
2251optimise.
2252
2253 void * MoveD(void* src, void* dest, int nitems, type)
2254
2255=for hackers
2256Found in file handy.h
2257
a02a5408 2258=item Newx
d8c40edc 2259X<Newx>
954c1994 2260
94bdecf9 2261The XSUB-writer's interface to the C C<malloc> function.
954c1994 2262
c5008215
JC
2263In 5.9.3, Newx() and friends replace the older New() API, and drops
2264the first parameter, I<x>, a debug aid which allowed callers to identify
37b8b4c9 2265themselves. This aid has been superseded by a new build option,
c5008215
JC
2266PERL_MEM_LOG (see L<perlhack/PERL_MEM_LOG>). The older API is still
2267there for use in XS modules supporting older perls.
2268
a02a5408 2269 void Newx(void* ptr, int nitems, type)
954c1994 2270
497711e7 2271=for hackers
94bdecf9 2272Found in file handy.h
497711e7 2273
a02a5408 2274=item Newxc
d8c40edc 2275X<Newxc>
954c1994 2276
94bdecf9 2277The XSUB-writer's interface to the C C<malloc> function, with
c5008215 2278cast. See also C<Newx>.
954c1994 2279
a02a5408 2280 void Newxc(void* ptr, int nitems, type, cast)
954c1994 2281
497711e7 2282=for hackers
94bdecf9 2283Found in file handy.h
954c1994 2284
a02a5408 2285=item Newxz
d8c40edc 2286X<Newxz>
954c1994 2287
94bdecf9 2288The XSUB-writer's interface to the C C<malloc> function. The allocated
c5008215 2289memory is zeroed with C<memzero>. See also C<Newx>.
a02a5408
JC
2290
2291 void Newxz(void* ptr, int nitems, type)
954c1994 2292
497711e7
GS
2293=for hackers
2294Found in file handy.h
2295
9965345d 2296=item Poison
d8c40edc 2297X<Poison>
9965345d 2298
7e337ee0 2299PoisonWith(0xEF) for catching access to freed memory.
9965345d
JH
2300
2301 void Poison(void* dest, int nitems, type)
2302
2303=for hackers
2304Found in file handy.h
2305
3fe05580
MHM
2306=item PoisonFree
2307X<PoisonFree>
2308
2309PoisonWith(0xEF) for catching access to freed memory.
2310
2311 void PoisonFree(void* dest, int nitems, type)
2312
2313=for hackers
2314Found in file handy.h
2315
7e337ee0
JH
2316=item PoisonNew
2317X<PoisonNew>
2318
2319PoisonWith(0xAB) for catching access to allocated but uninitialized memory.
2320
2321 void PoisonNew(void* dest, int nitems, type)
2322
2323=for hackers
2324Found in file handy.h
2325
2326=item PoisonWith
2327X<PoisonWith>
2328
2329Fill up memory with a byte pattern (a byte repeated over and over
2330again) that hopefully catches attempts to access uninitialized memory.
2331
2332 void PoisonWith(void* dest, int nitems, type, U8 byte)
2333
2334=for hackers
2335Found in file handy.h
2336
94bdecf9 2337=item Renew
d8c40edc 2338X<Renew>
954c1994 2339
94bdecf9 2340The XSUB-writer's interface to the C C<realloc> function.
954c1994 2341
94bdecf9 2342 void Renew(void* ptr, int nitems, type)
954c1994 2343
497711e7
GS
2344=for hackers
2345Found in file handy.h
2346
94bdecf9 2347=item Renewc
d8c40edc 2348X<Renewc>
954c1994 2349
94bdecf9
JH
2350The XSUB-writer's interface to the C C<realloc> function, with
2351cast.
954c1994 2352
94bdecf9 2353 void Renewc(void* ptr, int nitems, type, cast)
954c1994 2354
497711e7 2355=for hackers
94bdecf9 2356Found in file handy.h
497711e7 2357
94bdecf9 2358=item Safefree
d8c40edc 2359X<Safefree>
954c1994 2360
94bdecf9 2361The XSUB-writer's interface to the C C<free> function.
954c1994 2362
94bdecf9 2363 void Safefree(void* ptr)
954c1994 2364
497711e7
GS
2365=for hackers
2366Found in file handy.h
2367
94bdecf9 2368=item savepv
d8c40edc 2369X<savepv>
954c1994 2370
641d4181
JH
2371Perl's version of C<strdup()>. Returns a pointer to a newly allocated
2372string which is a duplicate of C<pv>. The size of the string is
2373determined by C<strlen()>. The memory allocated for the new string can
2374be freed with the C<Safefree()> function.
954c1994 2375
641d4181 2376 char* savepv(const char* pv)
954c1994 2377
497711e7 2378=for hackers
94bdecf9 2379Found in file util.c
497711e7 2380
94bdecf9 2381=item savepvn
d8c40edc 2382X<savepvn>
954c1994 2383
641d4181
JH
2384Perl's version of what C<strndup()> would be if it existed. Returns a
2385pointer to a newly allocated string which is a duplicate of the first
cbf82dd0
NC
2386C<len> bytes from C<pv>, plus a trailing NUL byte. The memory allocated for
2387the new string can be freed with the C<Safefree()> function.
954c1994 2388
641d4181 2389 char* savepvn(const char* pv, I32 len)
954c1994 2390
497711e7 2391=for hackers
94bdecf9 2392Found in file util.c
497711e7 2393
3fe05580
MHM
2394=item savepvs
2395X<savepvs>
2396
2397Like C<savepvn>, but takes a literal string instead of a string/length pair.
2398
2399 char* savepvs(const char* s)
2400
2401=for hackers
2402Found in file handy.h
2403
a4f1a029 2404=item savesharedpv
d8c40edc 2405X<savesharedpv>
a4f1a029 2406
641d4181
JH
2407A version of C<savepv()> which allocates the duplicate string in memory
2408which is shared between threads.
a4f1a029 2409
641d4181 2410 char* savesharedpv(const char* pv)
a4f1a029
NIS
2411
2412=for hackers
2413Found in file util.c
2414
d9095cec
NC
2415=item savesharedpvn
2416X<savesharedpvn>
2417
2418A version of C<savepvn()> which allocates the duplicate string in memory
2419which is shared between threads. (With the specific difference that a NULL
2420pointer is not acceptable)
2421
2422 char* savesharedpvn(const char *const pv, const STRLEN len)
2423
2424=for hackers
2425Found in file util.c
2426
766f8916 2427=item savesvpv
d8c40edc 2428X<savesvpv>
766f8916 2429
9c2fe30c 2430A version of C<savepv()>/C<savepvn()> which gets the string to duplicate from
766f8916
MHM
2431the passed in SV using C<SvPV()>
2432
2433 char* savesvpv(SV* sv)
2434
2435=for hackers
2436Found in file util.c
2437
94bdecf9 2438=item StructCopy
d8c40edc 2439X<StructCopy>
954c1994 2440
94bdecf9 2441This is an architecture-independent macro to copy one structure to another.
954c1994 2442
94bdecf9 2443 void StructCopy(type src, type dest, type)
954c1994 2444
497711e7 2445=for hackers
94bdecf9 2446Found in file handy.h
497711e7 2447
94bdecf9 2448=item Zero
d8c40edc 2449X<Zero>
954c1994 2450
94bdecf9
JH
2451The XSUB-writer's interface to the C C<memzero> function. The C<dest> is the
2452destination, C<nitems> is the number of items, and C<type> is the type.
954c1994 2453
94bdecf9 2454 void Zero(void* dest, int nitems, type)
954c1994 2455
497711e7 2456=for hackers
94bdecf9 2457Found in file handy.h
497711e7 2458
e90e2364 2459=item ZeroD
d8c40edc 2460X<ZeroD>
e90e2364
NC
2461
2462Like C<Zero> but returns dest. Useful for encouraging compilers to tail-call
2463optimise.
2464
2465 void * ZeroD(void* dest, int nitems, type)
2466
2467=for hackers
2468Found in file handy.h
2469
954c1994 2470
94bdecf9 2471=back
954c1994 2472
94bdecf9 2473=head1 Miscellaneous Functions
954c1994 2474
94bdecf9 2475=over 8
497711e7 2476
94bdecf9 2477=item fbm_compile
d8c40edc 2478X<fbm_compile>
8b4ac5a4 2479
94bdecf9
JH
2480Analyses the string in order to make fast searches on it using fbm_instr()
2481-- the Boyer-Moore algorithm.
8b4ac5a4 2482
94bdecf9 2483 void fbm_compile(SV* sv, U32 flags)
8b4ac5a4
JH
2484
2485=for hackers
94bdecf9 2486Found in file util.c
8b4ac5a4 2487
94bdecf9 2488=item fbm_instr
d8c40edc 2489X<fbm_instr>
954c1994 2490
94bdecf9 2491Returns the location of the SV in the string delimited by C<str> and
bd61b366 2492C<strend>. It returns C<NULL> if the string can't be found. The C<sv>
94bdecf9
JH
2493does not have to be fbm_compiled, but the search will not be as fast
2494then.
954c1994 2495
4048f010 2496 char* fbm_instr(unsigned char* big, unsigned char* bigend, SV* littlestr, U32 flags)
954c1994 2497
497711e7 2498=for hackers
94bdecf9 2499Found in file util.c
497711e7 2500
94bdecf9 2501=item form
d8c40edc 2502X<form>
954c1994 2503
94bdecf9
JH
2504Takes a sprintf-style format pattern and conventional
2505(non-SV) arguments and returns the formatted string.
954c1994 2506
94bdecf9 2507 (char *) Perl_form(pTHX_ const char* pat, ...)
954c1994 2508
94bdecf9 2509can be used any place a string (char *) is required:
497711e7 2510
94bdecf9 2511 char * s = Perl_form("%d.%d",major,minor);
954c1994 2512
94bdecf9
JH
2513Uses a single private buffer so if you want to format several strings you
2514must explicitly copy the earlier strings away (and free the copies when you
2515are done).
954c1994 2516
94bdecf9 2517 char* form(const char* pat, ...)
954c1994 2518
497711e7 2519=for hackers
94bdecf9 2520Found in file util.c
497711e7 2521
94bdecf9 2522=item getcwd_sv
d8c40edc 2523X<getcwd_sv>
954c1994 2524
94bdecf9 2525Fill the sv with current working directory
954c1994 2526
94bdecf9 2527 int getcwd_sv(SV* sv)
954c1994 2528
497711e7 2529=for hackers
94bdecf9 2530Found in file util.c
497711e7 2531
d9fad198
JH
2532=item my_snprintf
2533X<my_snprintf>
2534
2535The C library C<snprintf> functionality, if available and
5b692037 2536standards-compliant (uses C<vsnprintf>, actually). However, if the
d9fad198 2537C<vsnprintf> is not available, will unfortunately use the unsafe
5b692037
JH
2538C<vsprintf> which can overrun the buffer (there is an overrun check,
2539but that may be too late). Consider using C<sv_vcatpvf> instead, or
2540getting C<vsnprintf>.
d9fad198
JH
2541
2542 int my_snprintf(char *buffer, const Size_t len, const char *format, ...)
2543
2544=for hackers
2545Found in file util.c
2546
9244d4ad
RGS
2547=item my_sprintf
2548X<my_sprintf>
2549
2550The C library C<sprintf>, wrapped if necessary, to ensure that it will return
2551the length of the string written to the buffer. Only rare pre-ANSI systems
2552need the wrapper function - usually this is a direct call to C<sprintf>.
2553
2554 int my_sprintf(char *buffer, const char *pat, ...)
2555
2556=for hackers
2557Found in file util.c
2558
d9fad198
JH
2559=item my_vsnprintf
2560X<my_vsnprintf>
2561
5b692037
JH
2562The C library C<vsnprintf> if available and standards-compliant.
2563However, if if the C<vsnprintf> is not available, will unfortunately
2564use the unsafe C<vsprintf> which can overrun the buffer (there is an
2565overrun check, but that may be too late). Consider using
2566C<sv_vcatpvf> instead, or getting C<vsnprintf>.
d9fad198
JH
2567
2568 int my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap)
2569
2570=for hackers
2571Found in file util.c
2572
f333445c 2573=item new_version
d8c40edc 2574X<new_version>
f333445c
JP
2575
2576Returns a new version object based on the passed in SV:
2577
2578 SV *sv = new_version(SV *ver);
2579
2580Does not alter the passed in ver SV. See "upg_version" if you
2581want to upgrade the SV.
2582
2583 SV* new_version(SV *ver)
2584
2585=for hackers
2586Found in file util.c
2587
2588=item scan_version
d8c40edc 2589X<scan_version>
f333445c
JP
2590
2591Returns a pointer to the next character after the parsed
2592version string, as well as upgrading the passed in SV to
2593an RV.
2594
2595Function must be called with an already existing SV like
2596
137d6fc0 2597 sv = newSV(0);
8a0be661 2598 s = scan_version(s, SV *sv, bool qv);
f333445c
JP
2599
2600Performs some preprocessing to the string to ensure that
2601it has the correct characteristics of a version. Flags the
2602object if it contains an underscore (which denotes this
8a0be661 2603is an alpha version). The boolean qv denotes that the version
137d6fc0
JP
2604should be interpreted as if it had multiple decimals, even if
2605it doesn't.
f333445c 2606
4048f010 2607 const char* scan_version(const char *s, SV *rv, bool qv)
f333445c
JP
2608
2609=for hackers
2610Found in file util.c
2611
94bdecf9 2612=item strEQ
d8c40edc 2613X<strEQ>
954c1994 2614
94bdecf9 2615Test two strings to see if they are equal. Returns true or false.
954c1994 2616
94bdecf9 2617 bool strEQ(char* s1, char* s2)
954c1994 2618
497711e7 2619=for hackers
94bdecf9 2620Found in file handy.h
497711e7 2621
94bdecf9 2622=item strGE
d8c40edc 2623X<strGE>
1c846c1f 2624
94bdecf9
JH
2625Test two strings to see if the first, C<s1>, is greater than or equal to
2626the second, C<s2>. Returns true or false.
1c846c1f 2627
94bdecf9 2628 bool strGE(char* s1, char* s2)
1c846c1f
NIS
2629
2630=for hackers
94bdecf9 2631Found in file handy.h
1c846c1f 2632
94bdecf9 2633=item strGT
d8c40edc 2634X<strGT>
954c1994 2635
94bdecf9
JH
2636Test two strings to see if the first, C<s1>, is greater than the second,
2637C<s2>. Returns true or false.
954c1994 2638
94bdecf9 2639 bool strGT(char* s1, char* s2)
954c1994 2640
497711e7 2641=for hackers
94bdecf9 2642Found in file handy.h
497711e7 2643
94bdecf9 2644=item strLE
d8c40edc 2645X<strLE>
954c1994 2646
94bdecf9
JH
2647Test two strings to see if the first, C<s1>, is less than or equal to the
2648second, C<s2>. Returns true or false.
954c1994 2649
94bdecf9 2650 bool strLE(char* s1, char* s2)
954c1994 2651
497711e7 2652=for hackers
94bdecf9 2653Found in file handy.h
497711e7 2654
94bdecf9 2655=item strLT
d8c40edc 2656X<strLT>
1a3327fb 2657
94bdecf9
JH
2658Test two strings to see if the first, C<s1>, is less than the second,
2659C<s2>. Returns true or false.
1a3327fb 2660
94bdecf9 2661 bool strLT(char* s1, char* s2)
1a3327fb 2662
497711e7 2663=for hackers
94bdecf9 2664Found in file handy.h
497711e7 2665
94bdecf9 2666=item strNE
d8c40edc 2667X<strNE>
954c1994 2668
94bdecf9
JH
2669Test two strings to see if they are different. Returns true or
2670false.
2671
2672 bool strNE(char* s1, char* s2)
954c1994 2673
497711e7 2674=for hackers
94bdecf9 2675Found in file handy.h
497711e7 2676
94bdecf9 2677=item strnEQ
d8c40edc 2678X<strnEQ>
954c1994 2679
94bdecf9
JH
2680Test two strings to see if they are equal. The C<len> parameter indicates
2681the number of bytes to compare. Returns true or false. (A wrapper for
2682C<strncmp>).
2683
2684 bool strnEQ(char* s1, char* s2, STRLEN len)
954c1994 2685
497711e7 2686=for hackers
94bdecf9 2687Found in file handy.h
497711e7 2688
94bdecf9 2689=item strnNE
d8c40edc 2690X<strnNE>
954c1994 2691
94bdecf9
JH
2692Test two strings to see if they are different. The C<len> parameter
2693indicates the number of bytes to compare. Returns true or false. (A
2694wrapper for C<strncmp>).
954c1994 2695
94bdecf9 2696 bool strnNE(char* s1, char* s2, STRLEN len)
954c1994 2697
497711e7
GS
2698=for hackers
2699Found in file handy.h
2700
eba16661
JH
2701=item sv_destroyable
2702X<sv_destroyable>
2703
2704Dummy routine which reports that object can be destroyed when there is no
2705sharing module present. It ignores its single SV argument, and returns
2706'true'. Exists to avoid test for a NULL function pointer and because it
2707could potentially warn under some level of strict-ness.
2708
2709 bool sv_destroyable(SV *sv)
2710
2711=for hackers
2712Found in file util.c
2713
f333445c 2714=item sv_nosharing
d8c40edc 2715X<sv_nosharing>
f333445c
JP
2716
2717Dummy routine which "shares" an SV when there is no sharing module present.
9244d4ad
RGS
2718Or "locks" it. Or "unlocks" it. In other words, ignores its single SV argument.
2719Exists to avoid test for a NULL function pointer and because it could
2720potentially warn under some level of strict-ness.
f333445c 2721
c48640ec 2722 void sv_nosharing(SV *sv)
f333445c
JP
2723
2724=for hackers
2725Found in file util.c
2726
f333445c 2727=item upg_version
d8c40edc 2728X<upg_version>
f333445c
JP
2729
2730In-place upgrade of the supplied SV to a version object.
2731
ac0e6a2f 2732 SV *sv = upg_version(SV *sv, bool qv);
f333445c 2733
ac0e6a2f
RGS
2734Returns a pointer to the upgraded SV. Set the boolean qv if you want
2735to force this SV to be interpreted as an "extended" version.
f333445c 2736
ac0e6a2f 2737 SV* upg_version(SV *ver, bool qv)
f333445c
JP
2738
2739=for hackers
2740Found in file util.c
2741
2742=item vcmp
d8c40edc 2743X<vcmp>
f333445c
JP
2744
2745Version object aware cmp. Both operands must already have been
2746converted into version objects.
2747
4048f010 2748 int vcmp(SV *lhv, SV *rhv)
f333445c
JP
2749
2750=for hackers
2751Found in file util.c
2752
b9381830 2753=item vnormal
d8c40edc 2754X<vnormal>
b9381830
JP
2755
2756Accepts a version object and returns the normalized string
2757representation. Call like:
2758
2759 sv = vnormal(rv);
2760
2761NOTE: you can pass either the object directly or the SV
2762contained within the RV.
2763
2764 SV* vnormal(SV *vs)
2765
2766=for hackers
2767Found in file util.c
2768
f333445c 2769=item vnumify
d8c40edc 2770X<vnumify>
f333445c
JP
2771
2772Accepts a version object and returns the normalized floating
2773point representation. Call like:
2774
2775 sv = vnumify(rv);
2776
2777NOTE: you can pass either the object directly or the SV
2778contained within the RV.
2779
2780 SV* vnumify(SV *vs)
2781
2782=for hackers
2783Found in file util.c
2784
2785=item vstringify
d8c40edc 2786X<vstringify>
f333445c 2787
b9381830
JP
2788In order to maintain maximum compatibility with earlier versions
2789of Perl, this function will return either the floating point
2790notation or the multiple dotted notation, depending on whether
2791the original version contained 1 or more dots, respectively
f333445c
JP
2792
2793 SV* vstringify(SV *vs)
2794
2795=for hackers
2796Found in file util.c
2797
e0218a61 2798=item vverify
d8c40edc 2799X<vverify>
e0218a61
JP
2800
2801Validates that the SV contains a valid version object.
2802
2803 bool vverify(SV *vobj);
2804
2805Note that it only confirms the bare minimum structure (so as not to get
2806confused by derived classes which may contain additional hash entries):
2807
2808 bool vverify(SV *vs)
2809
2810=for hackers
2811Found in file util.c
2812
f4758303 2813
94bdecf9 2814=back
7207e29d 2815
47c9dd14
BB
2816=head1 MRO Functions
2817
2818=over 8
2819
2820=item mro_get_linear_isa
2821X<mro_get_linear_isa>
2822
2823Returns either C<mro_get_linear_isa_c3> or
2824C<mro_get_linear_isa_dfs> for the given stash,
2825dependant upon which MRO is in effect
2826for that stash. The return value is a
2827read-only AV*.
2828
2829You are responsible for C<SvREFCNT_inc()> on the
2830return value if you plan to store it anywhere
2831semi-permanently (otherwise it might be deleted
2832out from under you the next time the cache is
2833invalidated).
2834
2835 AV* mro_get_linear_isa(HV* stash)
2836
2837=for hackers
2838Found in file mro.c
2839
47c9dd14
BB
2840=item mro_method_changed_in
2841X<mro_method_changed_in>
2842
2843Invalidates method caching on any child classes
2844of the given stash, so that they might notice
2845the changes in this one.
2846
2847Ideally, all instances of C<PL_sub_generation++> in
dd69841b
BB
2848perl source outside of C<mro.c> should be
2849replaced by calls to this.
2850
2851Perl automatically handles most of the common
2852ways a method might be redefined. However, there
2853are a few ways you could change a method in a stash
2854without the cache code noticing, in which case you
2855need to call this method afterwards:
2856
28571) Directly manipulating the stash HV entries from
2858XS code.
2859
28602) Assigning a reference to a readonly scalar
2861constant into a stash entry in order to create
2862a constant subroutine (like constant.pm
2863does).
2864
2865This same method is available from pure perl
2866via, C<mro::method_changed_in(classname)>.
47c9dd14
BB
2867
2868 void mro_method_changed_in(HV* stash)
2869
2870=for hackers
2871Found in file mro.c
2872
2873
2874=back
2875
cd299c6e
RGS
2876=head1 Multicall Functions
2877
2878=over 8
2879
2880=item dMULTICALL
2881X<dMULTICALL>
2882
2883Declare local variables for a multicall. See L<perlcall/Lightweight Callbacks>.
2884
2885 dMULTICALL;
2886
2887=for hackers
2888Found in file cop.h
2889
2890=item MULTICALL
2891X<MULTICALL>
2892
2893Make a lightweight callback. See L<perlcall/Lightweight Callbacks>.
2894
2895 MULTICALL;
2896
2897=for hackers
2898Found in file cop.h
2899
2900=item POP_MULTICALL
2901X<POP_MULTICALL>
2902
2903Closing bracket for a lightweight callback.
2904See L<perlcall/Lightweight Callbacks>.
2905
2906 POP_MULTICALL;
2907
2908=for hackers
2909Found in file cop.h
2910
2911=item PUSH_MULTICALL
2912X<PUSH_MULTICALL>
2913
2914Opening bracket for a lightweight callback.
2915See L<perlcall/Lightweight Callbacks>.
2916
2917 PUSH_MULTICALL;
2918
2919=for hackers
2920Found in file cop.h
2921
2922
2923=back
2924
94bdecf9 2925=head1 Numeric functions
7207e29d 2926
94bdecf9 2927=over 8
f4758303 2928
94bdecf9 2929=item grok_bin
d8c40edc 2930X<grok_bin>
f4758303 2931
94bdecf9
JH
2932converts a string representing a binary number to numeric form.
2933
2934On entry I<start> and I<*len> give the string to scan, I<*flags> gives
2935conversion flags, and I<result> should be NULL or a pointer to an NV.
2936The scan stops at the end of the string, or the first invalid character.
7b667b5f
MHM
2937Unless C<PERL_SCAN_SILENT_ILLDIGIT> is set in I<*flags>, encountering an
2938invalid character will also trigger a warning.
2939On return I<*len> is set to the length of the scanned string,
2940and I<*flags> gives output flags.
94bdecf9 2941
7fc63493 2942If the value is <= C<UV_MAX> it is returned as a UV, the output flags are clear,
94bdecf9
JH
2943and nothing is written to I<*result>. If the value is > UV_MAX C<grok_bin>
2944returns UV_MAX, sets C<PERL_SCAN_GREATER_THAN_UV_MAX> in the output flags,
2945and writes the value to I<*result> (or the value is discarded if I<result>
2946is NULL).
2947
7b667b5f 2948The binary number may optionally be prefixed with "0b" or "b" unless
94bdecf9
JH
2949C<PERL_SCAN_DISALLOW_PREFIX> is set in I<*flags> on entry. If
2950C<PERL_SCAN_ALLOW_UNDERSCORES> is set in I<*flags> then the binary
2951number may use '_' characters to separate digits.
2952
a3b680e6 2953 UV grok_bin(const char* start, STRLEN* len_p, I32* flags, NV *result)
f4758303
JP
2954
2955=for hackers
94bdecf9 2956Found in file numeric.c
f4758303 2957
94bdecf9 2958=item grok_hex
d8c40edc 2959X<grok_hex>
954c1994 2960
94bdecf9
JH
2961converts a string representing a hex number to numeric form.
2962
2963On entry I<start> and I<*len> give the string to scan, I<*flags> gives
2964conversion flags, and I<result> should be NULL or a pointer to an NV.
7b667b5f
MHM
2965The scan stops at the end of the string, or the first invalid character.
2966Unless C<PERL_SCAN_SILENT_ILLDIGIT> is set in I<*flags>, encountering an
2967invalid character will also trigger a warning.
2968On return I<*len> is set to the length of the scanned string,
2969and I<*flags> gives output flags.
94bdecf9
JH
2970
2971If the value is <= UV_MAX it is returned as a UV, the output flags are clear,
2972and nothing is written to I<*result>. If the value is > UV_MAX C<grok_hex>
2973returns UV_MAX, sets C<PERL_SCAN_GREATER_THAN_UV_MAX> in the output flags,
2974and writes the value to I<*result> (or the value is discarded if I<result>
2975is NULL).
2976
2977The hex number may optionally be prefixed with "0x" or "x" unless
2978C<PERL_SCAN_DISALLOW_PREFIX> is set in I<*flags> on entry. If
2979C<PERL_SCAN_ALLOW_UNDERSCORES> is set in I<*flags> then the hex
2980number may use '_' characters to separate digits.
2981
a3b680e6 2982 UV grok_hex(const char* start, STRLEN* len_p, I32* flags, NV *result)
954c1994 2983
497711e7 2984=for hackers
94bdecf9 2985Found in file numeric.c
497711e7 2986
94bdecf9 2987=item grok_number
d8c40edc 2988X<grok_number>
954c1994 2989
94bdecf9
JH
2990Recognise (or not) a number. The type of the number is returned
2991(0 if unrecognised), otherwise it is a bit-ORed combination of
2992IS_NUMBER_IN_UV, IS_NUMBER_GREATER_THAN_UV_MAX, IS_NUMBER_NOT_INT,
2993IS_NUMBER_NEG, IS_NUMBER_INFINITY, IS_NUMBER_NAN (defined in perl.h).
2994
2995If the value of the number can fit an in UV, it is returned in the *valuep
2996IS_NUMBER_IN_UV will be set to indicate that *valuep is valid, IS_NUMBER_IN_UV
2997will never be set unless *valuep is valid, but *valuep may have been assigned
2998to during processing even though IS_NUMBER_IN_UV is not set on return.
2999If valuep is NULL, IS_NUMBER_IN_UV will be set for the same cases as when
3000valuep is non-NULL, but no actual assignment (or SEGV) will occur.
3001
3002IS_NUMBER_NOT_INT will be set with IS_NUMBER_IN_UV if trailing decimals were
3003seen (in which case *valuep gives the true value truncated to an integer), and
3004IS_NUMBER_NEG if the number is negative (in which case *valuep holds the
3005absolute value). IS_NUMBER_IN_UV is not set if e notation was used or the
3006number is larger than a UV.
3007
3008 int grok_number(const char *pv, STRLEN len, UV *valuep)
954c1994 3009
497711e7 3010=for hackers
94bdecf9 3011Found in file numeric.c
497711e7 3012
94bdecf9 3013=item grok_numeric_radix
d8c40edc 3014X<grok_numeric_radix>
954c1994 3015
94bdecf9
JH
3016Scan and skip for a numeric decimal separator (radix).
3017
3018 bool grok_numeric_radix(const char **sp, const char *send)
954c1994 3019
497711e7 3020=for hackers
94bdecf9 3021Found in file numeric.c
497711e7 3022
94bdecf9 3023=item grok_oct
d8c40edc 3024X<grok_oct>
954c1994 3025
7b667b5f
MHM
3026converts a string representing an octal number to numeric form.
3027
3028On entry I<start> and I<*len> give the string to scan, I<*flags> gives
3029conversion flags, and I<result> should be NULL or a pointer to an NV.
3030The scan stops at the end of the string, or the first invalid character.
3031Unless C<PERL_SCAN_SILENT_ILLDIGIT> is set in I<*flags>, encountering an
3032invalid character will also trigger a warning.
3033On return I<*len> is set to the length of the scanned string,
3034and I<*flags> gives output flags.
3035
3036If the value is <= UV_MAX it is returned as a UV, the output flags are clear,
3037and nothing is written to I<*result>. If the value is > UV_MAX C<grok_oct>
3038returns UV_MAX, sets C<PERL_SCAN_GREATER_THAN_UV_MAX> in the output flags,
3039and writes the value to I<*result> (or the value is discarded if I<result>
3040is NULL).
3041
3042If C<PERL_SCAN_ALLOW_UNDERSCORES> is set in I<*flags> then the octal
3043number may use '_' characters to separate digits.
94bdecf9 3044
a3b680e6 3045 UV grok_oct(const char* start, STRLEN* len_p, I32* flags, NV *result)
954c1994 3046
497711e7 3047=for hackers
94bdecf9 3048Found in file numeric.c
497711e7 3049
ed140128
AD
3050=item Perl_signbit
3051X<Perl_signbit>
3052
3053Return a non-zero integer if the sign bit on an NV is set, and 0 if
3054it is not.
3055
3056If Configure detects this system has a signbit() that will work with
3057our NVs, then we just use it via the #define in perl.h. Otherwise,
3058fall back on this implementation. As a first pass, this gets everything
3059right except -0.0. Alas, catching -0.0 is the main use for this function,
3060so this is not too helpful yet. Still, at least we have the scaffolding
3061in place to support other systems, should that prove useful.
3062
3063
3064Configure notes: This function is called 'Perl_signbit' instead of a
3065plain 'signbit' because it is easy to imagine a system having a signbit()
3066function or macro that doesn't happen to work with our particular choice
3067of NVs. We shouldn't just re-#define signbit as Perl_signbit and expect
3068the standard system headers to be happy. Also, this is a no-context
3069function (no pTHX_) because Perl_signbit() is usually re-#defined in
3070perl.h as a simple macro call to the system's signbit().
3071Users should just always call Perl_signbit().
3072
3073NOTE: this function is experimental and may change or be
3074removed without notice.
3075
3076 int Perl_signbit(NV f)
3077
3078=for hackers
3079Found in file numeric.c
3080
94bdecf9 3081=item scan_bin
d8c40edc 3082X<scan_bin>
954c1994 3083
94bdecf9
JH
3084For backwards compatibility. Use C<grok_bin> instead.
3085
73d840c0 3086 NV scan_bin(const char* start, STRLEN len, STRLEN* retlen)
954c1994 3087
497711e7 3088=for hackers
94bdecf9 3089Found in file numeric.c
497711e7 3090
94bdecf9 3091=item scan_hex
d8c40edc 3092X<scan_hex>
954c1994 3093
94bdecf9
JH
3094For backwards compatibility. Use C<grok_hex> instead.
3095
73d840c0 3096 NV scan_hex(const char* start, STRLEN len, STRLEN* retlen)
954c1994 3097
497711e7 3098=for hackers
94bdecf9 3099Found in file numeric.c
497711e7 3100
94bdecf9 3101=item scan_oct
d8c40edc 3102X<scan_oct>
954c1994 3103
94bdecf9 3104For backwards compatibility. Use C<grok_oct> instead.
954c1994 3105
73d840c0 3106 NV scan_oct(const char* start, STRLEN len, STRLEN* retlen)
954c1994 3107
497711e7 3108=for hackers
94bdecf9 3109Found in file numeric.c
497711e7 3110
645c22ef 3111
94bdecf9 3112=back
645c22ef 3113
94bdecf9
JH
3114=head1 Optree Manipulation Functions
3115
3116=over 8
3117
3118=item cv_const_sv
d8c40edc 3119X<cv_const_sv>
94bdecf9
JH
3120
3121If C<cv> is a constant sub eligible for inlining. returns the constant
3122value returned by the sub. Otherwise, returns NULL.
3123
3124Constant subs can be created with C<newCONSTSUB> or as described in
3125L<perlsub/"Constant Functions">.
3126
64f0785e 3127 SV* cv_const_sv(const CV *const cv)
645c22ef
DM
3128
3129=for hackers
94bdecf9 3130Found in file op.c
645c22ef 3131
94bdecf9 3132=item newCONSTSUB
d8c40edc 3133X<newCONSTSUB>
954c1994 3134
94bdecf9
JH
3135Creates a constant sub equivalent to Perl C<sub FOO () { 123 }> which is
3136eligible for inlining at compile-time.
954c1994 3137
99ab892b
NC
3138Passing NULL for SV creates a constant sub equivalent to C<sub BAR () {}>,
3139which won't be called if used as a destructor, but will suppress the overhead
3140of a call to C<AUTOLOAD>. (This form, however, isn't eligible for inlining at
3141compile time.)
3142
e1ec3a88 3143 CV* newCONSTSUB(HV* stash, const char* name, SV* sv)
954c1994 3144
497711e7 3145=for hackers
94bdecf9 3146Found in file op.c
497711e7 3147
94bdecf9 3148=item newXS
d8c40edc 3149X<newXS>
954c1994 3150
77004dee
NC
3151Used by C<xsubpp> to hook up XSUBs as Perl subs. I<filename> needs to be
3152static storage, as it is used directly as CvFILE(), without a copy being made.
954c1994 3153
94bdecf9
JH
3154=for hackers
3155Found in file op.c
3156
3157
3158=back
3159
dd2155a4
DM
3160=head1 Pad Data Structures
3161
3162=over 8
3163
3164=item pad_sv
d8c40edc 3165X<pad_sv>
dd2155a4
DM
3166
3167Get the value at offset po in the current pad.
3168Use macro PAD_SV instead of calling this function directly.
3169
3170 SV* pad_sv(PADOFFSET po)
3171
3172=for hackers
3173Found in file pad.c
3174
3175
3176=back
907b3e23
DM
3177
3178=head1 Per-Interpreter Variables
3179
3180=over 8
3181
3182=item PL_modglobal
3183X<PL_modglobal>
3184
3185C<PL_modglobal> is a general purpose, interpreter global HV for use by
3186extensions that need to keep information on a per-interpreter basis.
3187In a pinch, it can also be used as a symbol table for extensions
3188to share data among each other. It is a good idea to use keys
3189prefixed by the package name of the extension that owns the data.
3190
3191 HV* PL_modglobal
3192
3193=for hackers
3194Found in file intrpvar.h
3195
3196=item PL_na
3197X<PL_na>
3198
3199A convenience variable which is typically used with C<SvPV> when one
3200doesn't care about the length of the string. It is usually more efficient
3201to either declare a local variable and use that instead or to use the
3202C<SvPV_nolen> macro.
3203
3204 STRLEN PL_na
3205
3206=for hackers
3207Found in file intrpvar.h
3208
3209=item PL_sv_no
3210X<PL_sv_no>
3211
3212This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
3213C<&PL_sv_no>.
3214
3215 SV PL_sv_no
3216
3217=for hackers
3218Found in file intrpvar.h
3219
3220=item PL_sv_undef
3221X<PL_sv_undef>
3222
3223This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
3224
3225 SV PL_sv_undef
3226
3227=for hackers
3228Found in file intrpvar.h
3229
3230=item PL_sv_yes
3231X<PL_sv_yes>
3232
3233This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
3234C<&PL_sv_yes>.
3235
3236 SV PL_sv_yes
3237
3238=for hackers
3239Found in file intrpvar.h
3240
3241
3242=back
f7e71195
AB
3243
3244=head1 REGEXP Functions
3245
3246=over 8
3247
3248=item SvRX
3249X<SvRX>
3250
3251Convenience macro to get the REGEXP from a SV. This is approximately
3252equivalent to the following snippet:
3253
3254 if (SvMAGICAL(sv))
3255 mg_get(sv);
3256 if (SvROK(sv) &&
3257 (tmpsv = (SV*)SvRV(sv)) &&
3258 SvTYPE(tmpsv) == SVt_PVMG &&
3259 (tmpmg = mg_find(tmpsv, PERL_MAGIC_qr)))
3260 {
3261 return (REGEXP *)tmpmg->mg_obj;
3262 }
3263
3264NULL will be returned if a REGEXP* is not found.
3265
3266 REGEXP * SvRX(SV *sv)
3267
3268=for hackers
3269Found in file regexp.h
3270
3271=item SvRXOK
3272X<SvRXOK>
3273
3274Returns a boolean indicating whether the SV contains qr magic
3275(PERL_MAGIC_qr).
3276
3277If you want to do something with the REGEXP* later use SvRX instead
3278and check for NULL.
3279
3280 bool SvRXOK(SV* sv)
3281
3282=for hackers
3283Found in file regexp.h
3284
3285
3286=back
dd2155a4 3287
59887a99
MHM
3288=head1 Simple Exception Handling Macros
3289
3290=over 8
3291
3292=item dXCPT
d8c40edc 3293X<dXCPT>
59887a99 3294
2dfe1b17 3295Set up necessary local variables for exception handling.
59887a99
MHM
3296See L<perlguts/"Exception Handling">.
3297
3298 dXCPT;
3299
3300=for hackers
3301Found in file XSUB.h
3302
3303=item XCPT_CATCH
d8c40edc 3304X<XCPT_CATCH>
59887a99
MHM
3305
3306Introduces a catch block. See L<perlguts/"Exception Handling">.
3307
3308=for hackers
3309Found in file XSUB.h
3310
3311=item XCPT_RETHROW
d8c40edc 3312X<XCPT_RETHROW>
59887a99
MHM
3313
3314Rethrows a previously caught exception. See L<perlguts/"Exception Handling">.
3315
3316 XCPT_RETHROW;
3317
3318=for hackers
3319Found in file XSUB.h
3320
3321=item XCPT_TRY_END
d8c40edc 3322X<XCPT_TRY_END>
59887a99
MHM
3323
3324Ends a try block. See L<perlguts/"Exception Handling">.
3325
3326=for hackers
3327Found in file XSUB.h
3328
3329=item XCPT_TRY_START
d8c40edc 3330X<XCPT_TRY_START>
59887a99
MHM
3331
3332Starts a try block. See L<perlguts/"Exception Handling">.
3333
3334=for hackers
3335Found in file XSUB.h
3336
3337
3338=back
3339
94bdecf9
JH
3340=head1 Stack Manipulation Macros
3341
3342=over 8
3343
3344=item dMARK
d8c40edc 3345X<dMARK>
954c1994 3346
94bdecf9
JH
3347Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and
3348C<dORIGMARK>.
954c1994 3349
94bdecf9 3350 dMARK;
954c1994 3351
497711e7 3352=for hackers
94bdecf9 3353Found in file pp.h
497711e7 3354
94bdecf9 3355=item dORIGMARK
d8c40edc 3356X<dORIGMARK>
954c1994 3357
94bdecf9 3358Saves the original stack mark for the XSUB. See C<ORIGMARK>.
954c1994 3359
94bdecf9 3360 dORIGMARK;
954c1994 3361
497711e7 3362=for hackers
94bdecf9 3363Found in file pp.h
497711e7 3364
94bdecf9 3365=item dSP
d8c40edc 3366X<dSP>
954c1994 3367
94bdecf9
JH
3368Declares a local copy of perl's stack pointer for the XSUB, available via
3369the C<SP> macro. See C<SP>.
954c1994 3370
94bdecf9 3371 dSP;
954c1994 3372
497711e7 3373=for hackers
94bdecf9 3374Found in file pp.h
497711e7 3375
94bdecf9 3376=item EXTEND
d8c40edc 3377X<EXTEND>
954c1994 3378
94bdecf9
JH
3379Used to extend the argument stack for an XSUB's return values. Once
3380used, guarantees that there is room for at least C<nitems> to be pushed
3381onto the stack.
954c1994 3382
94bdecf9 3383 void EXTEND(SP, int nitems)
954c1994 3384
497711e7 3385=for hackers
94bdecf9 3386Found in file pp.h
954c1994 3387
94bdecf9 3388=item MARK
d8c40edc 3389X<MARK>
954c1994 3390
94bdecf9 3391Stack marker variable for the XSUB. See C<dMARK>.
954c1994 3392
497711e7 3393=for hackers
94bdecf9 3394Found in file pp.h
954c1994 3395
d82b684c 3396=item mPUSHi
d8c40edc 3397X<mPUSHi>
d82b684c
SH
3398
3399Push an integer onto the stack. The stack must have room for this element.
121b7712 3400Does not use C<TARG>. See also C<PUSHi>, C<mXPUSHi> and C<XPUSHi>.
d82b684c
SH
3401
3402 void mPUSHi(IV iv)
3403
3404=for hackers
3405Found in file pp.h
3406
3407=item mPUSHn
d8c40edc 3408X<mPUSHn>
d82b684c
SH
3409
3410Push a double onto the stack. The stack must have room for this element.
121b7712 3411Does not use C<TARG>. See also C<PUSHn>, C<mXPUSHn> and C<XPUSHn>.
d82b684c
SH
3412
3413 void mPUSHn(NV nv)
3414
3415=for hackers
3416Found in file pp.h
3417
3418=item mPUSHp
d8c40edc 3419X<mPUSHp>
d82b684c
SH
3420
3421Push a string onto the stack. The stack must have room for this element.
121b7712
MHM
3422The C<len> indicates the length of the string. Does not use C<TARG>.
3423See also C<PUSHp>, C<mXPUSHp> and C<XPUSHp>.
d82b684c
SH
3424
3425 void mPUSHp(char* str, STRLEN len)
3426
3427=for hackers
3428Found in file pp.h
3429
ae374e95
SH
3430=item mPUSHs
3431X<mPUSHs>
3432
3433Push an SV onto the stack and mortalizes the SV. The stack must have room
121b7712 3434for this element. Does not use C<TARG>. See also C<PUSHs> and C<mXPUSHs>.
ae374e95
SH
3435
3436 void mPUSHs(SV* sv)
3437
3438=for hackers
3439Found in file pp.h
3440
d82b684c 3441=item mPUSHu
d8c40edc 3442X<mPUSHu>
d82b684c
SH
3443
3444Push an unsigned integer onto the stack. The stack must have room for this
121b7712 3445element. Does not use C<TARG>. See also C<PUSHu>, C<mXPUSHu> and C<XPUSHu>.
d82b684c
SH
3446
3447 void mPUSHu(UV uv)
3448
3449=for hackers
3450Found in file pp.h
3451
3452=item mXPUSHi
d8c40edc 3453X<mXPUSHi>
d82b684c 3454
121b7712
MHM
3455Push an integer onto the stack, extending the stack if necessary.
3456Does not use C<TARG>. See also C<XPUSHi>, C<mPUSHi> and C<PUSHi>.
d82b684c
SH
3457
3458 void mXPUSHi(IV iv)
3459
3460=for hackers
3461Found in file pp.h
3462
3463=item mXPUSHn
d8c40edc 3464X<mXPUSHn>
d82b684c 3465
121b7712
MHM
3466Push a double onto the stack, extending the stack if necessary.
3467Does not use C<TARG>. See also C<XPUSHn>, C<mPUSHn> and C<PUSHn>.
d82b684c
SH
3468
3469 void mXPUSHn(NV nv)
3470
3471=for hackers
3472Found in file pp.h
3473
3474=item mXPUSHp
d8c40edc 3475X<mXPUSHp>
d82b684c
SH
3476
3477Push a string onto the stack, extending the stack if necessary. The C<len>
121b7712
MHM
3478indicates the length of the string. Does not use C<TARG>. See also C<XPUSHp>,
3479C<mPUSHp> and C<PUSHp>.
d82b684c
SH
3480
3481 void mXPUSHp(char* str, STRLEN len)
3482
3483=for hackers
3484Found in file pp.h
3485
ae374e95
SH
3486=item mXPUSHs
3487X<mXPUSHs>
3488
3489Push an SV onto the stack, extending the stack if necessary and mortalizes
121b7712 3490the SV. Does not use C<TARG>. See also C<XPUSHs> and C<mPUSHs>.
ae374e95
SH
3491
3492 void mXPUSHs(SV* sv)
3493
3494=for hackers
3495Found in file pp.h
3496
d82b684c 3497=item mXPUSHu
d8c40edc 3498X<mXPUSHu>
d82b684c
SH
3499
3500Push an unsigned integer onto the stack, extending the stack if necessary.
121b7712 3501Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> and C<PUSHu>.
d82b684c
SH
3502
3503 void mXPUSHu(UV uv)
3504
3505=for hackers
3506Found in file pp.h
3507
94bdecf9 3508=item ORIGMARK
d8c40edc 3509X<ORIGMARK>
954c1994 3510
94bdecf9 3511The original stack mark for the XSUB. See C<dORIGMARK>.
954c1994 3512
497711e7 3513=for hackers
94bdecf9 3514Found in file pp.h
497711e7 3515
954c1994 3516=item POPi
d8c40edc 3517X<POPi>
954c1994
GS
3518
3519Pops an integer off the stack.
3520
3521 IV POPi
3522
497711e7
GS
3523=for hackers
3524Found in file pp.h
3525
954c1994 3526=item POPl
d8c40edc 3527X<POPl>
954c1994
GS
3528
3529Pops a long off the stack.
3530
3531 long POPl
3532
497711e7
GS
3533=for hackers
3534Found in file pp.h
3535
954c1994 3536=item POPn
d8c40edc 3537X<POPn>
954c1994
GS
3538
3539Pops a double off the stack.
3540
3541 NV POPn
3542
497711e7
GS
3543=for hackers
3544Found in file pp.h
3545
954c1994 3546=item POPp
d8c40edc 3547X<POPp>
954c1994 3548
184499a4 3549Pops a string off the stack. Deprecated. New code should use POPpx.
954c1994
GS
3550
3551 char* POPp
3552
497711e7
GS
3553=for hackers
3554Found in file pp.h
3555
fa519979 3556=item POPpbytex
d8c40edc 3557X<POPpbytex>
fa519979
JH
3558
3559Pops a string off the stack which must consist of bytes i.e. characters < 256.
fa519979
JH
3560
3561 char* POPpbytex
3562
3563=for hackers
3564Found in file pp.h
3565
3566=item POPpx
d8c40edc 3567X<POPpx>
fa519979
JH
3568
3569Pops a string off the stack.
fa519979
JH
3570
3571 char* POPpx
3572
3573=for hackers
3574Found in file pp.h
3575
954c1994 3576=item POPs
d8c40edc 3577X<POPs>
954c1994
GS
3578
3579Pops an SV off the stack.
3580
3581 SV* POPs
3582
497711e7
GS
3583=for hackers
3584Found in file pp.h
3585
954c1994 3586=item PUSHi
d8c40edc 3587X<PUSHi>
954c1994
GS
3588
3589Push an integer onto the stack. The stack must have room for this element.
d82b684c
SH
3590Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be
3591called to declare it. Do not call multiple C<TARG>-oriented macros to
3592return lists from XSUB's - see C<mPUSHi> instead. See also C<XPUSHi> and
3593C<mXPUSHi>.
954c1994
GS
3594
3595 void PUSHi(IV iv)
3596
497711e7
GS
3597=for hackers
3598Found in file pp.h
3599
954c1994 3600=item PUSHMARK
d8c40edc 3601X<PUSHMARK>
954c1994
GS
3602
3603Opening bracket for arguments on a callback. See C<PUTBACK> and
3604L<perlcall>.
3605
c578083c 3606 void PUSHMARK(SP)
954c1994 3607
497711e7
GS
3608=for hackers
3609Found in file pp.h
3610
d82b684c 3611=item PUSHmortal
d8c40edc 3612X<PUSHmortal>
d82b684c
SH
3613
3614Push a new mortal SV onto the stack. The stack must have room for this
121b7712 3615element. Does not use C<TARG>. See also C<PUSHs>, C<XPUSHmortal> and C<XPUSHs>.
d82b684c
SH
3616
3617 void PUSHmortal()
3618
3619=for hackers
3620Found in file pp.h
3621
954c1994 3622=item PUSHn
d8c40edc 3623X<PUSHn>
954c1994
GS
3624
3625Push a double onto the stack. The stack must have room for this element.
d82b684c
SH
3626Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be
3627called to declare it. Do not call multiple C<TARG>-oriented macros to
3628return lists from XSUB's - see C<mPUSHn> instead. See also C<XPUSHn> and
3629C<mXPUSHn>.
954c1994
GS
3630
3631 void PUSHn(NV nv)
3632
497711e7
GS
3633=for hackers
3634Found in file pp.h
3635
954c1994 3636=item PUSHp
d8c40edc 3637X<PUSHp>
954c1994
GS
3638
3639Push a string onto the stack. The stack must have room for this element.
d82b684c
SH
3640The C<len> indicates the length of the string. Handles 'set' magic. Uses
3641C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to declare it. Do not
3642call multiple C<TARG>-oriented macros to return lists from XSUB's - see
3643C<mPUSHp> instead. See also C<XPUSHp> and C<mXPUSHp>.
954c1994
GS
3644
3645 void PUSHp(char* str, STRLEN len)
3646
497711e7
GS
3647=for hackers
3648Found in file pp.h
3649
954c1994 3650=item PUSHs
d8c40edc 3651X<PUSHs>
954c1994 3652
1c846c1f 3653Push an SV onto the stack. The stack must have room for this element.
d82b684c
SH
3654Does not handle 'set' magic. Does not use C<TARG>. See also C<PUSHmortal>,
3655C<XPUSHs> and C<XPUSHmortal>.
954c1994
GS
3656
3657 void PUSHs(SV* sv)
3658
497711e7
GS
3659=for hackers
3660Found in file pp.h
3661
954c1994 3662=item PUSHu
d8c40edc 3663X<PUSHu>
954c1994
GS
3664
3665Push an unsigned integer onto the stack. The stack must have room for this
d82b684c
SH
3666element. Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG>
3667should be called to declare it. Do not call multiple C<TARG>-oriented
3668macros to return lists from XSUB's - see C<mPUSHu> instead. See also
3669C<XPUSHu> and C<mXPUSHu>.
954c1994
GS
3670
3671 void PUSHu(UV uv)
3672
497711e7
GS
3673=for hackers
3674Found in file pp.h
3675
954c1994 3676=item PUTBACK
d8c40edc 3677X<PUTBACK>
954c1994
GS
3678
3679Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>.
3680See C<PUSHMARK> and L<perlcall> for other uses.
3681
3682 PUTBACK;
3683
497711e7
GS
3684=for hackers
3685Found in file pp.h
3686
94bdecf9 3687=item SP
d8c40edc 3688X<SP>
d2cc3551 3689
94bdecf9
JH
3690Stack pointer. This is usually handled by C<xsubpp>. See C<dSP> and
3691C<SPAGAIN>.
d2cc3551 3692
94bdecf9
JH
3693=for hackers
3694Found in file pp.h
3695
3696=item SPAGAIN
d8c40edc 3697X<SPAGAIN>
94bdecf9
JH
3698
3699Refetch the stack pointer. Used after a callback. See L<perlcall>.
3700
3701 SPAGAIN;
d2cc3551
JH
3702
3703=for hackers
94bdecf9 3704Found in file pp.h
d2cc3551 3705
94bdecf9 3706=item XPUSHi
d8c40edc 3707X<XPUSHi>
954c1994 3708
94bdecf9 3709Push an integer onto the stack, extending the stack if necessary. Handles
d82b684c
SH
3710'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to
3711declare it. Do not call multiple C<TARG>-oriented macros to return lists
3712from XSUB's - see C<mXPUSHi> instead. See also C<PUSHi> and C<mPUSHi>.
954c1994 3713
94bdecf9 3714 void XPUSHi(IV iv)
954c1994 3715
497711e7 3716=for hackers
94bdecf9 3717Found in file pp.h
497711e7 3718
d82b684c 3719=item XPUSHmortal
d8c40edc 3720X<XPUSHmortal>
d82b684c 3721
121b7712
MHM
3722Push a new mortal SV onto the stack, extending the stack if necessary.
3723Does not use C<TARG>. See also C<XPUSHs>, C<PUSHmortal> and C<PUSHs>.
d82b684c
SH
3724
3725 void XPUSHmortal()
3726
3727=for hackers
3728Found in file pp.h
3729
94bdecf9 3730=item XPUSHn
d8c40edc 3731X<XPUSHn>
954c1994 3732
94bdecf9 3733Push a double onto the stack, extending the stack if necessary. Handles
d82b684c
SH
3734'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to
3735declare it. Do not call multiple C<TARG>-oriented macros to return lists
3736from XSUB's - see C<mXPUSHn> instead. See also C<PUSHn> and C<mPUSHn>.
954c1994 3737
94bdecf9 3738 void XPUSHn(NV nv)
954c1994 3739
497711e7 3740=for hackers
94bdecf9 3741Found in file pp.h
497711e7 3742
94bdecf9 3743=item XPUSHp
d8c40edc 3744X<XPUSHp>
954c1994 3745
94bdecf9 3746Push a string onto the stack, extending the stack if necessary. The C<len>
d82b684c
SH
3747indicates the length of the string. Handles 'set' magic. Uses C<TARG>, so
3748C<dTARGET> or C<dXSTARG> should be called to declare it. Do not call
3749multiple C<TARG>-oriented macros to return lists from XSUB's - see
3750C<mXPUSHp> instead. See also C<PUSHp> and C<mPUSHp>.
954c1994 3751
94bdecf9 3752 void XPUSHp(char* str, STRLEN len)
954c1994 3753
94bdecf9
JH
3754=for hackers
3755Found in file pp.h
3756
3757=item XPUSHs
d8c40edc 3758X<XPUSHs>
94bdecf9
JH
3759
3760Push an SV onto the stack, extending the stack if necessary. Does not
d82b684c
SH
3761handle 'set' magic. Does not use C<TARG>. See also C<XPUSHmortal>,
3762C<PUSHs> and C<PUSHmortal>.
94bdecf9
JH
3763
3764 void XPUSHs(SV* sv)
954c1994 3765
497711e7 3766=for hackers
94bdecf9 3767Found in file pp.h
497711e7 3768
94bdecf9 3769=item XPUSHu
d8c40edc 3770X<XPUSHu>
954c1994 3771
94bdecf9 3772Push an unsigned integer onto the stack, extending the stack if necessary.
d82b684c
SH
3773Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be
3774called to declare it. Do not call multiple C<TARG>-oriented macros to
3775return lists from XSUB's - see C<mXPUSHu> instead. See also C<PUSHu> and
3776C<mPUSHu>.
954c1994 3777
94bdecf9
JH
3778 void XPUSHu(UV uv)
3779
3780=for hackers
3781Found in file pp.h
3782
3783=item XSRETURN
d8c40edc 3784X<XSRETURN>
94bdecf9
JH
3785
3786Return from XSUB, indicating number of items on the stack. This is usually
3787handled by C<xsubpp>.
3788
3789 void XSRETURN(int nitems)
954c1994 3790
497711e7
GS
3791=for hackers
3792Found in file XSUB.h
3793
e509e693 3794=item XSRETURN_EMPTY
d8c40edc 3795X<XSRETURN_EMPTY>
e509e693
SH
3796
3797Return an empty list from an XSUB immediately.
3798
3799 XSRETURN_EMPTY;
3800
3801=for hackers
3802Found in file XSUB.h
3803
94bdecf9 3804=item XSRETURN_IV
d8c40edc 3805X<XSRETURN_IV>
954c1994 3806
94bdecf9 3807Return an integer from an XSUB immediately. Uses C<XST_mIV>.
954c1994 3808
94bdecf9 3809 void XSRETURN_IV(IV iv)
954c1994 3810
497711e7 3811=for hackers
94bdecf9 3812Found in file XSUB.h
497711e7 3813
94bdecf9 3814=item XSRETURN_NO
d8c40edc 3815X<XSRETURN_NO>
954c1994 3816
94bdecf9 3817Return C<&PL_sv_no> from an XSUB immediately. Uses C<XST_mNO>.
954c1994 3818
94bdecf9 3819 XSRETURN_NO;
954c1994 3820
497711e7 3821=for hackers
94bdecf9 3822Found in file XSUB.h
497711e7 3823
94bdecf9 3824=item XSRETURN_NV
d8c40edc 3825X<XSRETURN_NV>
954c1994 3826
94bdecf9 3827Return a double from an XSUB immediately. Uses C<XST_mNV>.
954c1994 3828
94bdecf9 3829 void XSRETURN_NV(NV nv)
954c1994 3830
497711e7 3831=for hackers
94bdecf9
JH
3832Found in file XSUB.h
3833
3834=item XSRETURN_PV
d8c40edc 3835X<XSRETURN_PV>
94bdecf9
JH
3836
3837Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>.
3838
3839 void XSRETURN_PV(char* str)
3840
3841=for hackers
3842Found in file XSUB.h
3843
3844=item XSRETURN_UNDEF
d8c40edc 3845X<XSRETURN_UNDEF>
94bdecf9
JH
3846
3847Return C<&PL_sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>.
3848
3849 XSRETURN_UNDEF;
3850
3851=for hackers
3852Found in file XSUB.h
3853
0ee80f49 3854=item XSRETURN_UV
d8c40edc 3855X<XSRETURN_UV>
0ee80f49
JH
3856
3857Return an integer from an XSUB immediately. Uses C<XST_mUV>.
3858
3859 void XSRETURN_UV(IV uv)
3860
3861=for hackers
3862Found in file XSUB.h
3863
94bdecf9 3864=item XSRETURN_YES
d8c40edc 3865X<XSRETURN_YES>
94bdecf9
JH
3866
3867Return C<&PL_sv_yes> from an XSUB immediately. Uses C<XST_mYES>.
3868
3869 XSRETURN_YES;
3870
3871=for hackers
3872Found in file XSUB.h
3873
3874=item XST_mIV
d8c40edc 3875X<XST_mIV>
94bdecf9
JH
3876
3877Place an integer into the specified position C<pos> on the stack. The
3878value is stored in a new mortal SV.
3879
3880 void XST_mIV(int pos, IV iv)
3881
3882=for hackers
3883Found in file XSUB.h
3884
3885=item XST_mNO
d8c40edc 3886X<XST_mNO>
94bdecf9
JH
3887
3888Place C<&PL_sv_no> into the specified position C<pos> on the
3889stack.
3890
3891 void XST_mNO(int pos)
3892
3893=for hackers
3894Found in file XSUB.h
3895
3896=item XST_mNV
d8c40edc 3897X<XST_mNV>
94bdecf9
JH
3898
3899Place a double into the specified position C<pos> on the stack. The value
3900is stored in a new mortal SV.
3901
3902 void XST_mNV(int pos, NV nv)
3903
3904=for hackers
3905Found in file XSUB.h
3906
3907=item XST_mPV
d8c40edc 3908X<XST_mPV>
94bdecf9
JH
3909
3910Place a copy of a string into the specified position C<pos> on the stack.
3911The value is stored in a new mortal SV.
3912
3913 void XST_mPV(int pos, char* str)
3914
3915=for hackers
3916Found in file XSUB.h
3917
3918=item XST_mUNDEF
d8c40edc 3919X<XST_mUNDEF>
94bdecf9
JH
3920
3921Place C<&PL_sv_undef> into the specified position C<pos> on the
3922stack.
3923
3924 void XST_mUNDEF(int pos)
3925
3926=for hackers
3927Found in file XSUB.h
3928
3929=item XST_mYES
d8c40edc 3930X<XST_mYES>
94bdecf9
JH
3931
3932Place C<&PL_sv_yes> into the specified position C<pos> on the
3933stack.
3934
3935 void XST_mYES(int pos)
3936
3937=for hackers
3938Found in file XSUB.h
3939
3940
3941=back
3942
3943=head1 SV Flags
497711e7 3944
94bdecf9 3945=over 8
954c1994 3946
94bdecf9 3947=item svtype
d8c40edc 3948X<svtype>
954c1994 3949
94bdecf9
JH
3950An enum of flags for Perl types. These are found in the file B<sv.h>
3951in the C<svtype> enum. Test these flags with the C<SvTYPE> macro.
954c1994 3952
497711e7 3953=for hackers
94bdecf9 3954Found in file sv.h
6e9d1081 3955
94bdecf9 3956=item SVt_IV
d8c40edc 3957X<SVt_IV>
6e9d1081 3958
94bdecf9 3959Integer type flag for scalars. See C<svtype>.
6e9d1081
NC
3960
3961=for hackers
94bdecf9 3962Found in file sv.h
6e9d1081 3963
94bdecf9 3964=item SVt_NV
d8c40edc 3965X<SVt_NV>
6e9d1081 3966
94bdecf9 3967Double type flag for scalars. See C<svtype>.
6e9d1081
NC
3968
3969=for hackers
94bdecf9 3970Found in file sv.h
6e9d1081 3971
94bdecf9 3972=item SVt_PV
d8c40edc 3973X<SVt_PV>
6e9d1081 3974
94bdecf9 3975Pointer type flag for scalars. See C<svtype>.
6e9d1081
NC
3976
3977=for hackers
94bdecf9 3978Found in file sv.h
cd1ee231 3979
94bdecf9 3980=item SVt_PVAV
d8c40edc 3981X<SVt_PVAV>
cd1ee231 3982
94bdecf9 3983Type flag for arrays. See C<svtype>.
cd1ee231
JH
3984
3985=for hackers
94bdecf9 3986Found in file sv.h
cd1ee231 3987
94bdecf9 3988=item SVt_PVCV
d8c40edc 3989X<SVt_PVCV>
cd1ee231 3990
94bdecf9 3991Type flag for code refs. See C<svtype>.
cd1ee231
JH
3992
3993=for hackers
94bdecf9 3994Found in file sv.h
cd1ee231 3995
94bdecf9 3996=item SVt_PVHV
d8c40edc 3997X<SVt_PVHV>
cd1ee231 3998
94bdecf9 3999Type flag for hashes. See C<svtype>.
cd1ee231
JH
4000
4001=for hackers
94bdecf9 4002Found in file sv.h
cd1ee231 4003
94bdecf9 4004=item SVt_PVMG
d8c40edc 4005X<SVt_PVMG>
cd1ee231 4006
94bdecf9 4007Type flag for blessed scalars. See C<svtype>.
cd1ee231
JH
4008
4009=for hackers
94bdecf9 4010Found in file sv.h
cd1ee231 4011
cd1ee231 4012
94bdecf9 4013=back
cd1ee231 4014
94bdecf9 4015=head1 SV Manipulation Functions
cd1ee231 4016
94bdecf9 4017=over 8
cd1ee231 4018
afa74d42
NC
4019=item croak_xs_usage
4020X<croak_xs_usage>
4021
4022A specialised variant of C<croak()> for emitting the usage message for xsubs
4023
4024 croak_xs_usage(cv, "eee_yow");
4025
4026works out the package name and subroutine name from C<cv>, and then calls
4027C<croak()>. Hence if C<cv> is C<&ouch::awk>, it would call C<croak> as:
4028
4029 Perl_croak(aTHX_ "Usage %s::%s(%s)", "ouch" "awk", "eee_yow");
4030
a201cd31 4031 void croak_xs_usage(const CV *const cv, const char *const params)
afa74d42
NC
4032
4033=for hackers
4034Found in file universal.c
4035
94bdecf9 4036=item get_sv
d8c40edc 4037X<get_sv>
cd1ee231 4038
64ace3f8
NC
4039Returns the SV of the specified Perl scalar. C<flags> are passed to
4040C<gv_fetchpv>. If C<GV_ADD> is set and the
4041Perl variable does not exist then it will be created. If C<flags> is zero
4042and the variable does not exist then NULL is returned.
94bdecf9
JH
4043
4044NOTE: the perl_ form of this function is deprecated.
4045
64ace3f8 4046 SV* get_sv(const char *name, I32 flags)
cd1ee231
JH
4047
4048=for hackers
94bdecf9 4049Found in file perl.c
cd1ee231 4050
94bdecf9 4051=item newRV_inc
d8c40edc 4052X<newRV_inc>
2a5a0c38 4053
94bdecf9
JH
4054Creates an RV wrapper for an SV. The reference count for the original SV is
4055incremented.
2a5a0c38 4056
94bdecf9 4057 SV* newRV_inc(SV* sv)
2a5a0c38
JH
4058
4059=for hackers
94bdecf9 4060Found in file sv.h
2a5a0c38 4061
740cce10
NC
4062=item newSVpvn_utf8
4063X<newSVpvn_utf8>
4064
4065Creates a new SV and copies a string into it. If utf8 is true, calls
4066C<SvUTF8_on> on the new SV. Implemented as a wrapper around C<newSVpvn_flags>.
4067
4068 SV* newSVpvn_utf8(NULLOK const char* s, STRLEN len, U32 utf8)
4069
4070=for hackers
4071Found in file sv.h
4072
954c1994 4073=item SvCUR
d8c40edc 4074X<SvCUR>
954c1994
GS
4075
4076Returns the length of the string which is in the SV. See C<SvLEN>.
4077
4078 STRLEN SvCUR(SV* sv)
4079
497711e7
GS
4080=for hackers
4081Found in file sv.h
4082
954c1994 4083=item SvCUR_set
d8c40edc 4084X<SvCUR_set>
954c1994 4085
20799e15
SP
4086Set the current length of the string which is in the SV. See C<SvCUR>
4087and C<SvIV_set>.
954c1994
GS
4088
4089 void SvCUR_set(SV* sv, STRLEN len)
4090
497711e7
GS
4091=for hackers
4092Found in file sv.h
4093
94bdecf9 4094=item SvEND
d8c40edc 4095X<SvEND>
954c1994 4096
94bdecf9
JH
4097Returns a pointer to the last character in the string which is in the SV.
4098See C<SvCUR>. Access the character as *(SvEND(sv)).
954c1994 4099
94bdecf9 4100 char* SvEND(SV* sv)
954c1994 4101
497711e7
GS
4102=for hackers
4103Found in file sv.h
4104
d34786ba
NC
4105=item SvGAMAGIC
4106X<SvGAMAGIC>
4107
4108Returns true if the SV has get magic or overloading. If either is true then
4109the scalar is active data, and has the potential to return a new value every
4110time it is accessed. Hence you must be careful to only read it once per user
4111logical operation and work with that returned value. If neither is true then
4112the scalar's value cannot change unless written to.
4113
4114 char* SvGAMAGIC(SV* sv)
4115
4116=for hackers
4117Found in file sv.h
4118
954c1994 4119=item SvGROW
d8c40edc 4120X<SvGROW>
954c1994
GS
4121
4122Expands the character buffer in the SV so that it has room for the
4123indicated number of bytes (remember to reserve space for an extra trailing
8cf8f3d1 4124NUL character). Calls C<sv_grow> to perform the expansion if necessary.
954c1994
GS
4125Returns a pointer to the character buffer.
4126
679ac26e 4127 char * SvGROW(SV* sv, STRLEN len)
954c1994 4128
497711e7
GS
4129=for hackers
4130Found in file sv.h
4131
954c1994 4132=item SvIOK
d8c40edc 4133X<SvIOK>
954c1994 4134
fbf9f983 4135Returns a U32 value indicating whether the SV contains an integer.
954c1994 4136
fbf9f983 4137 U32 SvIOK(SV* sv)
954c1994 4138
497711e7
GS
4139=for hackers
4140Found in file sv.h
4141
954c1994 4142=item SvIOKp
d8c40edc 4143X<SvIOKp>
954c1994 4144
fbf9f983 4145Returns a U32 value indicating whether the SV contains an integer. Checks
f08e0584 4146the B<private> setting. Use C<SvIOK> instead.
954c1994 4147
fbf9f983 4148 U32 SvIOKp(SV* sv)
954c1994 4149
497711e7
GS
4150=for hackers
4151Found in file sv.h
4152
e331fc52 4153=item SvIOK_notUV
d8c40edc 4154X<SvIOK_notUV>
e331fc52 4155
f4758303 4156Returns a boolean indicating whether the SV contains a signed integer.
e331fc52 4157
12fa07df 4158 bool SvIOK_notUV(SV* sv)
e331fc52
JH
4159
4160=for hackers
4161Found in file sv.h
4162
954c1994 4163=item SvIOK_off
d8c40edc 4164X<SvIOK_off>
954c1994
GS
4165
4166Unsets the IV status of an SV.
4167
4168 void SvIOK_off(SV* sv)
4169
497711e7
GS
4170=for hackers
4171Found in file sv.h
4172
954c1994 4173=item SvIOK_on
d8c40edc 4174X<SvIOK_on>
954c1994
GS
4175
4176Tells an SV that it is an integer.
4177
4178 void SvIOK_on(SV* sv)
4179
497711e7
GS
4180=for hackers
4181Found in file sv.h
4182
954c1994 4183=item SvIOK_only
d8c40edc 4184X<SvIOK_only>
954c1994
GS
4185
4186Tells an SV that it is an integer and disables all other OK bits.
4187
4188 void SvIOK_only(SV* sv)
4189
497711e7
GS
4190=for hackers
4191Found in file sv.h
4192
e331fc52 4193=item SvIOK_only_UV
d8c40edc 4194X<SvIOK_only_UV>
e331fc52
JH
4195
4196Tells and SV that it is an unsigned integer and disables all other OK bits.
4197
4198 void SvIOK_only_UV(SV* sv)
4199
4200=for hackers
4201Found in file sv.h
4202
4203=item SvIOK_UV
d8c40edc 4204X<SvIOK_UV>
e331fc52
JH
4205
4206Returns a boolean indicating whether the SV contains an unsigned integer.
4207
12fa07df 4208 bool SvIOK_UV(SV* sv)
e331fc52
JH
4209
4210=for hackers
4211Found in file sv.h
4212
19dbb8f1 4213=item SvIsCOW
d8c40edc 4214X<SvIsCOW>
19dbb8f1
NC
4215
4216Returns a boolean indicating whether the SV is Copy-On-Write. (either shared
4217hash key scalars, or full Copy On Write scalars if 5.9.0 is configured for
4218COW)
4219
4220 bool SvIsCOW(SV* sv)
4221
4222=for hackers
4223Found in file sv.h
4224
4225=item SvIsCOW_shared_hash
d8c40edc 4226X<SvIsCOW_shared_hash>
19dbb8f1
NC
4227
4228Returns a boolean indicating whether the SV is Copy-On-Write shared hash key
4229scalar.
4230
4231 bool SvIsCOW_shared_hash(SV* sv)
4232
4233=for hackers
4234Found in file sv.h
4235
954c1994 4236=item SvIV
d8c40edc 4237X<SvIV>
954c1994 4238
c40f1585 4239Coerces the given SV to an integer and returns it. See C<SvIVx> for a
645c22ef 4240version which guarantees to evaluate sv only once.
954c1994
GS
4241
4242 IV SvIV(SV* sv)
4243
497711e7
GS
4244=for hackers
4245Found in file sv.h
4246
df344c0f 4247=item SvIVX
d8c40edc 4248X<SvIVX>
954c1994 4249
df344c0f
NC
4250Returns the raw value in the SV's IV slot, without checks or conversions.
4251Only use when you are sure SvIOK is true. See also C<SvIV()>.
954c1994 4252
df344c0f 4253 IV SvIVX(SV* sv)
954c1994 4254
497711e7
GS
4255=for hackers
4256Found in file sv.h
4257
df344c0f 4258=item SvIVx
d8c40edc 4259X<SvIVx>
645c22ef 4260
df344c0f 4261Coerces the given SV to an integer and returns it. Guarantees to evaluate
4ea561bc
NC
4262C<sv> only once. Only use this if C<sv> is an expression with side effects,
4263otherwise use the more efficient C<SvIV>.
645c22ef 4264
df344c0f 4265 IV SvIVx(SV* sv)
645c22ef
DM
4266
4267=for hackers
4268Found in file sv.h
4269
891f9566 4270=item SvIV_nomg
d8c40edc 4271X<SvIV_nomg>
891f9566
YST
4272
4273Like C<SvIV> but doesn't process magic.
4274
4275 IV SvIV_nomg(SV* sv)
4276
4277=for hackers
4278Found in file sv.h
4279
672994ce 4280=item SvIV_set
d8c40edc 4281X<SvIV_set>
672994ce 4282
20799e15
SP
4283Set the value of the IV pointer in sv to val. It is possible to perform
4284the same function of this macro with an lvalue assignment to C<SvIVX>.
4285With future Perls, however, it will be more efficient to use
4286C<SvIV_set> instead of the lvalue assignment to C<SvIVX>.
672994ce
SP
4287
4288 void SvIV_set(SV* sv, IV val)
4289
4290=for hackers
4291Found in file sv.h
4292
954c1994 4293=item SvLEN
d8c40edc 4294X<SvLEN>
954c1994 4295
91e74348
JH
4296Returns the size of the string buffer in the SV, not including any part
4297attributable to C<SvOOK>. See C<SvCUR>.
954c1994
GS
4298
4299 STRLEN SvLEN(SV* sv)
4300
497711e7
GS
4301=for hackers
4302Found in file sv.h
4303
672994ce 4304=item SvLEN_set
d8c40edc 4305X<SvLEN_set>
672994ce 4306
20799e15 4307Set the actual length of the string which is in the SV. See C<SvIV_set>.
672994ce
SP
4308
4309 void SvLEN_set(SV* sv, STRLEN len)
4310
4311=for hackers
4312Found in file sv.h
4313
4314=item SvMAGIC_set
d8c40edc 4315X<SvMAGIC_set>
672994ce 4316
20799e15 4317Set the value of the MAGIC pointer in sv to val. See C<SvIV_set>.
672994ce
SP
4318
4319 void SvMAGIC_set(SV* sv, MAGIC* val)
4320
4321=for hackers
4322Found in file sv.h
4323
954c1994 4324=item SvNIOK
d8c40edc 4325X<SvNIOK>
954c1994 4326
fbf9f983 4327Returns a U32 value indicating whether the SV contains a number, integer or
954c1994
GS
4328double.
4329
fbf9f983 4330 U32 SvNIOK(SV* sv)
954c1994 4331
497711e7
GS
4332=for hackers
4333Found in file sv.h
4334
954c1994 4335=item SvNIOKp
d8c40edc 4336X<SvNIOKp>
954c1994 4337
fbf9f983 4338Returns a U32 value indicating whether the SV contains a number, integer or
f08e0584 4339double. Checks the B<private> setting. Use C<SvNIOK> instead.
954c1994 4340
fbf9f983 4341 U32 SvNIOKp(SV* sv)
954c1994 4342
497711e7
GS
4343=for hackers
4344Found in file sv.h
4345
954c1994 4346=item SvNIOK_off
d8c40edc 4347X<SvNIOK_off>
954c1994
GS
4348
4349Unsets the NV/IV status of an SV.
4350
4351 void SvNIOK_off(SV* sv)
4352
497711e7
GS
4353=for hackers
4354Found in file sv.h
4355
954c1994 4356=item SvNOK
d8c40edc 4357X<SvNOK>
954c1994 4358
fbf9f983 4359Returns a U32 value indicating whether the SV contains a double.
954c1994 4360
fbf9f983 4361 U32 SvNOK(SV* sv)
954c1994 4362
497711e7
GS
4363=for hackers
4364Found in file sv.h
4365
954c1994 4366=item SvNOKp
d8c40edc 4367X<SvNOKp>
954c1994 4368
fbf9f983 4369Returns a U32 value indicating whether the SV contains a double. Checks the
f08e0584 4370B<private> setting. Use C<SvNOK> instead.
954c1994 4371
fbf9f983 4372 U32 SvNOKp(SV* sv)
954c1994 4373
497711e7
GS
4374=for hackers
4375Found in file sv.h
4376
954c1994 4377=item SvNOK_off
d8c40edc 4378X<SvNOK_off>
954c1994
GS
4379
4380Unsets the NV status of an SV.
4381
4382 void SvNOK_off(SV* sv)
4383
497711e7
GS
4384=for hackers
4385Found in file sv.h
4386
954c1994 4387=item SvNOK_on
d8c40edc 4388X<SvNOK_on>
954c1994
GS
4389
4390Tells an SV that it is a double.
4391
4392 void SvNOK_on(SV* sv)
4393
497711e7
GS
4394=for hackers
4395Found in file sv.h
4396
954c1994 4397=item SvNOK_only
d8c40edc 4398X<SvNOK_only>
954c1994
GS
4399
4400Tells an SV that it is a double and disables all other OK bits.
4401
4402 void SvNOK_only(SV* sv)
4403
497711e7
GS
4404=for hackers
4405Found in file sv.h
4406
954c1994 4407=item SvNV
d8c40edc 4408X<SvNV>
954c1994 4409
c40f1585 4410Coerce the given SV to a double and return it. See C<SvNVx> for a version
645c22ef 4411which guarantees to evaluate sv only once.
954c1994
GS
4412
4413 NV SvNV(SV* sv)
4414
497711e7
GS
4415=for hackers
4416Found in file sv.h
4417
b9381830 4418=item SvNVX
d8c40edc 4419X<SvNVX>
645c22ef 4420
b9381830
JP
4421Returns the raw value in the SV's NV slot, without checks or conversions.
4422Only use when you are sure SvNOK is true. See also C<SvNV()>.
645c22ef 4423
b9381830 4424 NV SvNVX(SV* sv)
645c22ef
DM
4425
4426=for hackers
4427Found in file sv.h
4428
b9381830 4429=item SvNVx
d8c40edc 4430X<SvNVx>
954c1994 4431
b9381830 4432Coerces the given SV to a double and returns it. Guarantees to evaluate
4ea561bc
NC
4433C<sv> only once. Only use this if C<sv> is an expression with side effects,
4434otherwise use the more efficient C<SvNV>.
954c1994 4435
b9381830 4436 NV SvNVx(SV* sv)
954c1994 4437
497711e7
GS
4438=for hackers
4439Found in file sv.h
4440
672994ce 4441=item SvNV_set
d8c40edc 4442X<SvNV_set>
672994ce 4443
20799e15 4444Set the value of the NV pointer in sv to val. See C<SvIV_set>.
672994ce
SP
4445
4446 void SvNV_set(SV* sv, NV val)
4447
4448=for hackers
4449Found in file sv.h
4450
954c1994 4451=item SvOK
d8c40edc 4452X<SvOK>
954c1994 4453
fbf9f983 4454Returns a U32 value indicating whether the value is an SV. It also tells
9adebda4 4455whether the value is defined or not.
954c1994 4456
fbf9f983 4457 U32 SvOK(SV* sv)
954c1994 4458
497711e7
GS
4459=for hackers
4460Found in file sv.h
4461
954c1994 4462=item SvOOK
d8c40edc 4463X<SvOOK>
954c1994 4464
69240efd
NC
4465Returns a U32 indicating whether the pointer to the string buffer is offset.
4466This hack is used internally to speed up removal of characters from the
4467beginning of a SvPV. When SvOOK is true, then the start of the
4468allocated string buffer is actually C<SvOOK_offset()> bytes before SvPVX.
4469This offset used to be stored in SvIVX, but is now stored within the spare
4470part of the buffer.
954c1994 4471
fbf9f983 4472 U32 SvOOK(SV* sv)
954c1994 4473
497711e7
GS
4474=for hackers
4475Found in file sv.h
4476
69240efd
NC
4477=item SvOOK_offset
4478X<SvOOK_offset>
4479
4480Reads into I<len> the offset from SvPVX back to the true start of the
4481allocated buffer, which will be non-zero if C<sv_chop> has been used to
4482efficiently remove characters from start of the buffer. Implemented as a
4483macro, which takes the address of I<len>, which must be of type C<STRLEN>.
4484Evaluates I<sv> more than once. Sets I<len> to 0 if C<SvOOK(sv)> is false.
4485
4486 void SvOOK_offset(NN SV*sv, STRLEN len)
4487
4488=for hackers
4489Found in file sv.h
4490
954c1994 4491=item SvPOK
d8c40edc 4492X<SvPOK>
954c1994 4493
fbf9f983 4494Returns a U32 value indicating whether the SV contains a character
954c1994
GS
4495string.
4496
fbf9f983 4497 U32 SvPOK(SV* sv)
954c1994 4498
497711e7
GS
4499=for hackers
4500Found in file sv.h
4501
954c1994 4502=item SvPOKp
d8c40edc 4503X<SvPOKp>
954c1994 4504
fbf9f983 4505Returns a U32 value indicating whether the SV contains a character string.
f08e0584 4506Checks the B<private> setting. Use C<SvPOK> instead.
954c1994 4507
fbf9f983 4508 U32 SvPOKp(SV* sv)
954c1994 4509
497711e7
GS
4510=for hackers
4511Found in file sv.h
4512
954c1994 4513=item SvPOK_off
d8c40edc 4514X<SvPOK_off>
954c1994
GS
4515
4516Unsets the PV status of an SV.
4517
4518 void SvPOK_off(SV* sv)
4519
497711e7
GS
4520=for hackers
4521Found in file sv.h
4522
954c1994 4523=item SvPOK_on
d8c40edc 4524X<SvPOK_on>
954c1994
GS
4525
4526Tells an SV that it is a string.
4527
4528 void SvPOK_on(SV* sv)
4529
497711e7
GS
4530=for hackers
4531Found in file sv.h
4532
954c1994 4533=item SvPOK_only
d8c40edc 4534X<SvPOK_only>
954c1994
GS
4535
4536Tells an SV that it is a string and disables all other OK bits.
1e54db1a 4537Will also turn off the UTF-8 status.
954c1994
GS
4538
4539 void SvPOK_only(SV* sv)
4540
497711e7
GS
4541=for hackers
4542Found in file sv.h
4543
914184e1 4544=item SvPOK_only_UTF8
d8c40edc 4545X<SvPOK_only_UTF8>
914184e1 4546
d5ce4a7c 4547Tells an SV that it is a string and disables all other OK bits,
1e54db1a 4548and leaves the UTF-8 status as it was.
f1a1024e 4549
914184e1
JH
4550 void SvPOK_only_UTF8(SV* sv)
4551
4552=for hackers
4553Found in file sv.h
4554
954c1994 4555=item SvPV
d8c40edc 4556X<SvPV>
954c1994 4557
12b7c5c7
JH
4558Returns a pointer to the string in the SV, or a stringified form of
4559the SV if the SV does not contain a string. The SV may cache the
4560stringified version becoming C<SvPOK>. Handles 'get' magic. See also
645c22ef 4561C<SvPVx> for a version which guarantees to evaluate sv only once.
954c1994
GS
4562
4563 char* SvPV(SV* sv, STRLEN len)
4564
497711e7
GS
4565=for hackers
4566Found in file sv.h
4567
645c22ef 4568=item SvPVbyte
d8c40edc 4569X<SvPVbyte>
645c22ef
DM
4570
4571Like C<SvPV>, but converts sv to byte representation first if necessary.
4572
4573 char* SvPVbyte(SV* sv, STRLEN len)
4574
4575=for hackers
4576Found in file sv.h
4577
4578=item SvPVbytex
d8c40edc 4579X<SvPVbytex>
645c22ef
DM
4580
4581Like C<SvPV>, but converts sv to byte representation first if necessary.
d1be9408 4582Guarantees to evaluate sv only once; use the more efficient C<SvPVbyte>
645c22ef
DM
4583otherwise.
4584
645c22ef
DM
4585 char* SvPVbytex(SV* sv, STRLEN len)
4586
4587=for hackers
4588Found in file sv.h
4589
4590=item SvPVbytex_force
d8c40edc 4591X<SvPVbytex_force>
645c22ef
DM
4592
4593Like C<SvPV_force>, but converts sv to byte representation first if necessary.
d1be9408 4594Guarantees to evaluate sv only once; use the more efficient C<SvPVbyte_force>
645c22ef
DM
4595otherwise.
4596
4597 char* SvPVbytex_force(SV* sv, STRLEN len)
4598
4599=for hackers
4600Found in file sv.h
4601
4602=item SvPVbyte_force
d8c40edc 4603X<SvPVbyte_force>
645c22ef
DM
4604
4605Like C<SvPV_force>, but converts sv to byte representation first if necessary.
4606
4607 char* SvPVbyte_force(SV* sv, STRLEN len)
4608
4609=for hackers
4610Found in file sv.h
4611
4612=item SvPVbyte_nolen
d8c40edc 4613X<SvPVbyte_nolen>
645c22ef
DM
4614
4615Like C<SvPV_nolen>, but converts sv to byte representation first if necessary.
4616
1fdc5aa6 4617 char* SvPVbyte_nolen(SV* sv)
645c22ef
DM
4618
4619=for hackers
4620Found in file sv.h
4621
4622=item SvPVutf8
d8c40edc 4623X<SvPVutf8>
645c22ef 4624
1fdc5aa6 4625Like C<SvPV>, but converts sv to utf8 first if necessary.
645c22ef
DM
4626
4627 char* SvPVutf8(SV* sv, STRLEN len)
4628
4629=for hackers
4630Found in file sv.h
4631
4632=item SvPVutf8x
d8c40edc 4633X<SvPVutf8x>
645c22ef 4634
1fdc5aa6 4635Like C<SvPV>, but converts sv to utf8 first if necessary.
d1be9408 4636Guarantees to evaluate sv only once; use the more efficient C<SvPVutf8>
645c22ef
DM
4637otherwise.
4638
4639 char* SvPVutf8x(SV* sv, STRLEN len)
4640
4641=for hackers
4642Found in file sv.h
4643
4644=item SvPVutf8x_force
d8c40edc 4645X<SvPVutf8x_force>
645c22ef 4646
1fdc5aa6 4647Like C<SvPV_force>, but converts sv to utf8 first if necessary.
d1be9408 4648Guarantees to evaluate sv only once; use the more efficient C<SvPVutf8_force>
645c22ef
DM
4649otherwise.
4650
4651 char* SvPVutf8x_force(SV* sv, STRLEN len)
4652
4653=for hackers
4654Found in file sv.h
4655
4656=item SvPVutf8_force
d8c40edc 4657X<SvPVutf8_force>
645c22ef 4658
1fdc5aa6 4659Like C<SvPV_force>, but converts sv to utf8 first if necessary.
645c22ef
DM
4660
4661 char* SvPVutf8_force(SV* sv, STRLEN len)
4662
4663=for hackers
4664Found in file sv.h
4665
4666=item SvPVutf8_nolen
d8c40edc 4667X<SvPVutf8_nolen>
645c22ef 4668
1fdc5aa6 4669Like C<SvPV_nolen>, but converts sv to utf8 first if necessary.
645c22ef 4670
1fdc5aa6 4671 char* SvPVutf8_nolen(SV* sv)
645c22ef
DM
4672
4673=for hackers
4674Found in file sv.h
4675
df344c0f 4676=item SvPVX
d8c40edc 4677X<SvPVX>
645c22ef 4678
df344c0f
NC
4679Returns a pointer to the physical string in the SV. The SV must contain a
4680string.
645c22ef 4681
df344c0f 4682 char* SvPVX(SV* sv)
645c22ef
DM
4683
4684=for hackers
4685Found in file sv.h
4686
df344c0f 4687=item SvPVx
d8c40edc 4688X<SvPVx>
954c1994 4689
4ea561bc
NC
4690A version of C<SvPV> which guarantees to evaluate C<sv> only once.
4691Only use this if C<sv> is an expression with side effects, otherwise use the
4692more efficient C<SvPVX>.
954c1994 4693
df344c0f 4694 char* SvPVx(SV* sv, STRLEN len)
954c1994 4695
497711e7
GS
4696=for hackers
4697Found in file sv.h
4698
954c1994 4699=item SvPV_force
d8c40edc 4700X<SvPV_force>
954c1994 4701
12b7c5c7
JH
4702Like C<SvPV> but will force the SV into containing just a string
4703(C<SvPOK_only>). You want force if you are going to update the C<SvPVX>
4704directly.
954c1994
GS
4705
4706 char* SvPV_force(SV* sv, STRLEN len)
4707
497711e7
GS
4708=for hackers
4709Found in file sv.h
4710
645c22ef 4711=item SvPV_force_nomg
d8c40edc 4712X<SvPV_force_nomg>
645c22ef 4713
12b7c5c7
JH
4714Like C<SvPV> but will force the SV into containing just a string
4715(C<SvPOK_only>). You want force if you are going to update the C<SvPVX>
4716directly. Doesn't process magic.
645c22ef
DM
4717
4718 char* SvPV_force_nomg(SV* sv, STRLEN len)
4719
4720=for hackers
4721Found in file sv.h
4722
954c1994 4723=item SvPV_nolen
d8c40edc 4724X<SvPV_nolen>
954c1994 4725
12b7c5c7
JH
4726Returns a pointer to the string in the SV, or a stringified form of
4727the SV if the SV does not contain a string. The SV may cache the
4728stringified form becoming C<SvPOK>. Handles 'get' magic.
954c1994
GS
4729
4730 char* SvPV_nolen(SV* sv)
4731
497711e7
GS
4732=for hackers
4733Found in file sv.h
4734
891f9566 4735=item SvPV_nomg
d8c40edc 4736X<SvPV_nomg>
891f9566
YST
4737
4738Like C<SvPV> but doesn't process magic.
4739
4740 char* SvPV_nomg(SV* sv, STRLEN len)
4741
4742=for hackers
4743Found in file sv.h
4744
672994ce 4745=item SvPV_set
d8c40edc 4746X<SvPV_set>
672994ce 4747
20799e15 4748Set the value of the PV pointer in sv to val. See C<SvIV_set>.
672994ce
SP
4749
4750 void SvPV_set(SV* sv, char* val)
4751
4752=for hackers
4753Found in file sv.h
4754
954c1994 4755=item SvREFCNT
d8c40edc 4756X<SvREFCNT>
954c1994
GS
4757
4758Returns the value of the object's reference count.
4759
4760 U32 SvREFCNT(SV* sv)
4761
497711e7
GS
4762=for hackers
4763Found in file sv.h
4764
954c1994 4765=item SvREFCNT_dec
d8c40edc 4766X<SvREFCNT_dec>
954c1994
GS
4767
4768Decrements the reference count of the given SV.
4769
4770 void SvREFCNT_dec(SV* sv)
4771
497711e7
GS
4772=for hackers
4773Found in file sv.h
4774
954c1994 4775=item SvREFCNT_inc
d8c40edc 4776X<SvREFCNT_inc>
954c1994
GS
4777
4778Increments the reference count of the given SV.
4779
3fe05580
MHM
4780All of the following SvREFCNT_inc* macros are optimized versions of
4781SvREFCNT_inc, and can be replaced with SvREFCNT_inc.
4782
954c1994
GS
4783 SV* SvREFCNT_inc(SV* sv)
4784
497711e7
GS
4785=for hackers
4786Found in file sv.h
4787
b37c2d43
AL
4788=item SvREFCNT_inc_NN
4789X<SvREFCNT_inc_NN>
4790
4791Same as SvREFCNT_inc, but can only be used if you know I<sv>
4792is not NULL. Since we don't have to check the NULLness, it's faster
4793and smaller.
4794
4795 SV* SvREFCNT_inc_NN(SV* sv)
4796
4797=for hackers
4798Found in file sv.h
4799
4800=item SvREFCNT_inc_simple
4801X<SvREFCNT_inc_simple>
4802
4ea561bc
NC
4803Same as SvREFCNT_inc, but can only be used with expressions without side
4804effects. Since we don't have to store a temporary value, it's faster.
b37c2d43
AL
4805
4806 SV* SvREFCNT_inc_simple(SV* sv)
4807
4808=for hackers
4809Found in file sv.h
4810
4811=item SvREFCNT_inc_simple_NN
4812X<SvREFCNT_inc_simple_NN>
4813
4814Same as SvREFCNT_inc_simple, but can only be used if you know I<sv>
4815is not NULL. Since we don't have to check the NULLness, it's faster
4816and smaller.
4817
4818 SV* SvREFCNT_inc_simple_NN(SV* sv)
4819
4820=for hackers
4821Found in file sv.h
4822
4823=item SvREFCNT_inc_simple_void
4824X<SvREFCNT_inc_simple_void>
4825
4826Same as SvREFCNT_inc_simple, but can only be used if you don't need the
4827return value. The macro doesn't need to return a meaningful value.
4828
f8f4df2c 4829 void SvREFCNT_inc_simple_void(SV* sv)
b37c2d43
AL
4830
4831=for hackers
4832Found in file sv.h
4833
3fe05580
MHM
4834=item SvREFCNT_inc_simple_void_NN
4835X<SvREFCNT_inc_simple_void_NN>
4836
4837Same as SvREFCNT_inc, but can only be used if you don't need the return
4838value, and you know that I<sv> is not NULL. The macro doesn't need
4839to return a meaningful value, or check for NULLness, so it's smaller
4840and faster.
4841
f8f4df2c 4842 void SvREFCNT_inc_simple_void_NN(SV* sv)
3fe05580
MHM
4843
4844=for hackers
4845Found in file sv.h
4846
b37c2d43
AL
4847=item SvREFCNT_inc_void
4848X<SvREFCNT_inc_void>
4849
4850Same as SvREFCNT_inc, but can only be used if you don't need the
4851return value. The macro doesn't need to return a meaningful value.
4852
f8f4df2c 4853 void SvREFCNT_inc_void(SV* sv)
b37c2d43
AL
4854
4855=for hackers
4856Found in file sv.h
4857
4858=item SvREFCNT_inc_void_NN
4859X<SvREFCNT_inc_void_NN>
4860
4861Same as SvREFCNT_inc, but can only be used if you don't need the return
4862value, and you know that I<sv> is not NULL. The macro doesn't need
4863to return a meaningful value, or check for NULLness, so it's smaller
4864and faster.
4865
f8f4df2c 4866 void SvREFCNT_inc_void_NN(SV* sv)
b37c2d43
AL
4867
4868=for hackers
4869Found in file sv.h
4870
954c1994 4871=item SvROK
d8c40edc 4872X<SvROK>
954c1994
GS
4873
4874Tests if the SV is an RV.
4875
fbf9f983 4876 U32 SvROK(SV* sv)
954c1994 4877
497711e7
GS
4878=for hackers
4879Found in file sv.h
4880
954c1994 4881=item SvROK_off
d8c40edc 4882X<SvROK_off>
954c1994
GS
4883
4884Unsets the RV status of an SV.
4885
4886 void SvROK_off(SV* sv)
4887
497711e7
GS
4888=for hackers
4889Found in file sv.h
4890
954c1994 4891=item SvROK_on
d8c40edc 4892X<SvROK_on>
954c1994
GS
4893
4894Tells an SV that it is an RV.
4895
4896 void SvROK_on(SV* sv)
4897
497711e7
GS
4898=for hackers
4899Found in file sv.h
4900
954c1994 4901=item SvRV
d8c40edc 4902X<SvRV>
954c1994
GS
4903
4904Dereferences an RV to return the SV.
4905
4906 SV* SvRV(SV* sv)
4907
497711e7
GS
4908=for hackers
4909Found in file sv.h
4910
672994ce 4911=item SvRV_set
d8c40edc 4912X<SvRV_set>
672994ce 4913
20799e15 4914Set the value of the RV pointer in sv to val. See C<SvIV_set>.
672994ce
SP
4915
4916 void SvRV_set(SV* sv, SV* val)
4917
4918=for hackers
4919Found in file sv.h
4920
954c1994 4921=item SvSTASH
d8c40edc 4922X<SvSTASH>
954c1994
GS
4923
4924Returns the stash of the SV.
4925
4926 HV* SvSTASH(SV* sv)
4927
497711e7
GS
4928=for hackers
4929Found in file sv.h
4930
672994ce 4931=item SvSTASH_set
d8c40edc 4932X<SvSTASH_set>
672994ce 4933
20799e15 4934Set the value of the STASH pointer in sv to val. See C<SvIV_set>.
672994ce 4935
d070ff45 4936 void SvSTASH_set(SV* sv, HV* val)
672994ce
SP
4937
4938=for hackers
4939Found in file sv.h
4940
954c1994 4941=item SvTAINT
d8c40edc 4942X<SvTAINT>
954c1994 4943
c55831ac 4944Taints an SV if tainting is enabled.
954c1994
GS
4945
4946 void SvTAINT(SV* sv)
4947
497711e7
GS
4948=for hackers
4949Found in file sv.h
4950
954c1994 4951=item SvTAINTED
d8c40edc 4952X<SvTAINTED>
954c1994
GS
4953
4954Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if
4955not.
4956
4957 bool SvTAINTED(SV* sv)
4958
497711e7
GS
4959=for hackers
4960Found in file sv.h
4961
954c1994 4962=item SvTAINTED_off
d8c40edc 4963X<SvTAINTED_off>
954c1994
GS
4964
4965Untaints an SV. Be I<very> careful with this routine, as it short-circuits
4966some of Perl's fundamental security features. XS module authors should not
4967use this function unless they fully understand all the implications of
4968unconditionally untainting the value. Untainting should be done in the
4969standard perl fashion, via a carefully crafted regexp, rather than directly
4970untainting variables.
4971
4972 void SvTAINTED_off(SV* sv)
4973
497711e7
GS
4974=for hackers
4975Found in file sv.h
4976
954c1994 4977=item SvTAINTED_on
d8c40edc 4978X<SvTAINTED_on>
954c1994 4979
c55831ac 4980Marks an SV as tainted if tainting is enabled.
954c1994
GS
4981
4982 void SvTAINTED_on(SV* sv)
4983
497711e7
GS
4984=for hackers
4985Found in file sv.h
4986
954c1994 4987=item SvTRUE
d8c40edc 4988X<SvTRUE>
954c1994
GS
4989
4990Returns a boolean indicating whether Perl would evaluate the SV as true or
4991false, defined or undefined. Does not handle 'get' magic.
4992
4993 bool SvTRUE(SV* sv)
4994
497711e7
GS
4995=for hackers
4996Found in file sv.h
4997
9f4817db 4998=item SvTYPE
d8c40edc 4999X<SvTYPE>
af3c7592 5000
9f4817db
JH
5001Returns the type of the SV. See C<svtype>.
5002
5003 svtype SvTYPE(SV* sv)
954c1994 5004
497711e7
GS
5005=for hackers
5006Found in file sv.h
5007
a8586c98 5008=item SvUOK
d8c40edc 5009X<SvUOK>
a8586c98
JH
5010
5011Returns a boolean indicating whether the SV contains an unsigned integer.
5012
fbf9f983 5013 bool SvUOK(SV* sv)
a8586c98
JH
5014
5015=for hackers
5016Found in file sv.h
5017
954c1994 5018=item SvUPGRADE
d8c40edc 5019X<SvUPGRADE>
954c1994
GS
5020
5021Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to
5022perform the upgrade if necessary. See C<svtype>.
5023
5024 void SvUPGRADE(SV* sv, svtype type)
5025
497711e7
GS
5026=for hackers
5027Found in file sv.h
5028
914184e1 5029=item SvUTF8
d8c40edc 5030X<SvUTF8>
914184e1 5031
fbf9f983 5032Returns a U32 value indicating whether the SV contains UTF-8 encoded data.
5912531f
DM
5033Call this after SvPV() in case any call to string overloading updates the
5034internal flag.
914184e1 5035
fbf9f983 5036 U32 SvUTF8(SV* sv)
914184e1
JH
5037
5038=for hackers
5039Found in file sv.h
5040
5041=item SvUTF8_off
d8c40edc 5042X<SvUTF8_off>
914184e1 5043
1e54db1a 5044Unsets the UTF-8 status of an SV.
914184e1
JH
5045
5046 void SvUTF8_off(SV *sv)
5047
5048=for hackers
5049Found in file sv.h
5050
5051=item SvUTF8_on
d8c40edc 5052X<SvUTF8_on>
914184e1 5053
1e54db1a 5054Turn on the UTF-8 status of an SV (the data is not changed, just the flag).
d5ce4a7c 5055Do not use frivolously.
914184e1
JH
5056
5057 void SvUTF8_on(SV *sv)
5058
5059=for hackers
5060Found in file sv.h
5061
954c1994 5062=item SvUV
d8c40edc 5063X<SvUV>
954c1994 5064
645c22ef
DM
5065Coerces the given SV to an unsigned integer and returns it. See C<SvUVx>
5066for a version which guarantees to evaluate sv only once.
954c1994
GS
5067
5068 UV SvUV(SV* sv)
5069
497711e7
GS
5070=for hackers
5071Found in file sv.h
5072
b9381830 5073=item SvUVX
d8c40edc 5074X<SvUVX>
891f9566 5075
b9381830
JP
5076Returns the raw value in the SV's UV slot, without checks or conversions.
5077Only use when you are sure SvIOK is true. See also C<SvUV()>.
891f9566 5078
b9381830 5079 UV SvUVX(SV* sv)
891f9566
YST
5080
5081=for hackers
5082Found in file sv.h
5083
b9381830 5084=item SvUVx
d8c40edc 5085X<SvUVx>
b0f01acb 5086
b9381830 5087Coerces the given SV to an unsigned integer and returns it. Guarantees to
4ea561bc
NC
5088C<sv> only once. Only use this if C<sv> is an expression with side effects,
5089otherwise use the more efficient C<SvUV>.
b0f01acb 5090
b9381830 5091 UV SvUVx(SV* sv)
b0f01acb
JP
5092
5093=for hackers
5094Found in file sv.h
5095
891f9566 5096=item SvUV_nomg
d8c40edc 5097X<SvUV_nomg>
954c1994 5098
891f9566 5099Like C<SvUV> but doesn't process magic.
954c1994 5100
891f9566 5101 UV SvUV_nomg(SV* sv)
954c1994 5102
497711e7
GS
5103=for hackers
5104Found in file sv.h
5105
672994ce 5106=item SvUV_set
d8c40edc 5107X<SvUV_set>
672994ce 5108
20799e15 5109Set the value of the UV pointer in sv to val. See C<SvIV_set>.
672994ce
SP
5110
5111 void SvUV_set(SV* sv, UV val)
5112
5113=for hackers
5114Found in file sv.h
5115
b0f01acb 5116=item SvVOK
d8c40edc 5117X<SvVOK>
645c22ef 5118
b0f01acb 5119Returns a boolean indicating whether the SV contains a v-string.
645c22ef 5120
b0f01acb 5121 bool SvVOK(SV* sv)
645c22ef
DM
5122
5123=for hackers
5124Found in file sv.h
5125
d2a0f284
JC
5126=item sv_catpvn_nomg
5127X<sv_catpvn_nomg>
5128
5129Like C<sv_catpvn> but doesn't process magic.
5130
5131 void sv_catpvn_nomg(SV* sv, const char* ptr, STRLEN len)
5132
5133=for hackers
5134Found in file sv.h
5135
5136=item sv_catsv_nomg
5137X<sv_catsv_nomg>
5138
5139Like C<sv_catsv> but doesn't process magic.
5140
5141 void sv_catsv_nomg(SV* dsv, SV* ssv)
5142
5143=for hackers
5144Found in file sv.h
5145
5146=item sv_derived_from
5147X<sv_derived_from>
5148
6885da0e 5149Returns a boolean indicating whether the SV is derived from the specified class
5150I<at the C level>. To check derivation at the Perl level, call C<isa()> as a
5151normal Perl method.
d2a0f284 5152
15f169a1 5153 bool sv_derived_from(SV* sv, const char *const name)
d2a0f284
JC
5154
5155=for hackers
5156Found in file universal.c
5157
cbc021f9 5158=item sv_does
5159X<sv_does>
5160
5161Returns a boolean indicating whether the SV performs a specific, named role.
5162The SV can be a Perl object or the name of a Perl class.
5163
15f169a1 5164 bool sv_does(SV* sv, const char *const name)
cbc021f9 5165
5166=for hackers
5167Found in file universal.c
5168
d2a0f284
JC
5169=item sv_report_used
5170X<sv_report_used>
5171
5172Dump the contents of all SVs not yet freed. (Debugging aid).
5173
5174 void sv_report_used()
5175
5176=for hackers
5177Found in file sv.c
5178
5179=item sv_setsv_nomg
5180X<sv_setsv_nomg>
5181
5182Like C<sv_setsv> but doesn't process magic.
5183
5184 void sv_setsv_nomg(SV* dsv, SV* ssv)
5185
5186=for hackers
5187Found in file sv.h
5188
dc960812
SP
5189=item sv_utf8_upgrade_nomg
5190X<sv_utf8_upgrade_nomg>
5191
5192Like sv_utf8_upgrade, but doesn't do magic on C<sv>
5193
5194 STRLEN sv_utf8_upgrade_nomg(NN SV *sv)
5195
5196=for hackers
5197Found in file sv.h
5198
d2a0f284
JC
5199
5200=back
5201
5202=head1 SV-Body Allocation
5203
5204=over 8
5205
5206=item looks_like_number
5207X<looks_like_number>
5208
5209Test if the content of an SV looks like a number (or is a number).
5210C<Inf> and C<Infinity> are treated as numbers (so will not issue a
5211non-numeric warning), even if your atof() doesn't grok them.
5212
aad570aa 5213 I32 looks_like_number(SV *const sv)
d2a0f284
JC
5214
5215=for hackers
5216Found in file sv.c
5217
5218=item newRV_noinc
5219X<newRV_noinc>
5220
5221Creates an RV wrapper for an SV. The reference count for the original
5222SV is B<not> incremented.
5223
23f13727 5224 SV* newRV_noinc(SV *const sv)
d2a0f284
JC
5225
5226=for hackers
5227Found in file sv.c
5228
5229=item newSV
5230X<newSV>
5231
5232Creates a new SV. A non-zero C<len> parameter indicates the number of
5233bytes of preallocated string space the SV should have. An extra byte for a
5234trailing NUL is also reserved. (SvPOK is not set for the SV even if string
5235space is allocated.) The reference count for the new SV is set to 1.
5236
5237In 5.9.3, newSV() replaces the older NEWSV() API, and drops the first
5238parameter, I<x>, a debug aid which allowed callers to identify themselves.
5239This aid has been superseded by a new build option, PERL_MEM_LOG (see
5240L<perlhack/PERL_MEM_LOG>). The older API is still there for use in XS
5241modules supporting older perls.
5242
2b021c53 5243 SV* newSV(const STRLEN len)
d2a0f284
JC
5244
5245=for hackers
5246Found in file sv.c
5247
5248=item newSVhek
5249X<newSVhek>
5250
5251Creates a new SV from the hash key structure. It will generate scalars that
5252point to the shared string table where possible. Returns a new (undefined)
5253SV if the hek is NULL.
5254
23f13727 5255 SV* newSVhek(const HEK *const hek)
d2a0f284
JC
5256
5257=for hackers
5258Found in file sv.c
5259
5260=item newSViv
5261X<newSViv>
5262
5263Creates a new SV and copies an integer into it. The reference count for the
5264SV is set to 1.
5265
23f13727 5266 SV* newSViv(const IV i)
d2a0f284
JC
5267
5268=for hackers
5269Found in file sv.c
5270
5271=item newSVnv
5272X<newSVnv>
5273
5274Creates a new SV and copies a floating point value into it.
5275The reference count for the SV is set to 1.
5276
23f13727 5277 SV* newSVnv(const NV n)
d2a0f284
JC
5278
5279=for hackers
5280Found in file sv.c
5281
5282=item newSVpv
5283X<newSVpv>
5284
5285Creates a new SV and copies a string into it. The reference count for the
5286SV is set to 1. If C<len> is zero, Perl will compute the length using
5287strlen(). For efficiency, consider using C<newSVpvn> instead.
5288
23f13727 5289 SV* newSVpv(const char *const s, const STRLEN len)
d2a0f284
JC
5290
5291=for hackers
5292Found in file sv.c
5293
5294=item newSVpvf
5295X<newSVpvf>
5296
5297Creates a new SV and initializes it with the string formatted like
5298C<sprintf>.
5299
23f13727 5300 SV* newSVpvf(const char *const pat, ...)
d2a0f284
JC
5301
5302=for hackers
5303Found in file sv.c
5304
5305=item newSVpvn
5306X<newSVpvn>
5307
5308Creates a new SV and copies a string into it. The reference count for the
5309SV is set to 1. Note that if C<len> is zero, Perl will create a zero length
5310string. You are responsible for ensuring that the source string is at least
5311C<len> bytes long. If the C<s> argument is NULL the new SV will be undefined.
5312
23f13727 5313 SV* newSVpvn(const char *const s, const STRLEN len)
d2a0f284
JC
5314
5315=for hackers
5316Found in file sv.c
5317
740cce10
NC
5318=item newSVpvn_flags
5319X<newSVpvn_flags>
5320
5321Creates a new SV and copies a string into it. The reference count for the
5322SV is set to 1. Note that if C<len> is zero, Perl will create a zero length
5323string. You are responsible for ensuring that the source string is at least
5324C<len> bytes long. If the C<s> argument is NULL the new SV will be undefined.
59cd0e26
NC
5325Currently the only flag bits accepted are C<SVf_UTF8> and C<SVs_TEMP>.
5326If C<SVs_TEMP> is set, then C<sv2mortal()> is called on the result before
5327returning. If C<SVf_UTF8> is set, then it will be set on the new SV.
5328C<newSVpvn_utf8()> is a convenience wrapper for this function, defined as
740cce10
NC
5329
5330 #define newSVpvn_utf8(s, len, u) \
5331 newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0)
5332
23f13727 5333 SV* newSVpvn_flags(const char *const s, const STRLEN len, const U32 flags)
740cce10
NC
5334
5335=for hackers
5336Found in file sv.c
5337
d2a0f284
JC
5338=item newSVpvn_share
5339X<newSVpvn_share>
5340
5341Creates a new SV with its SvPVX_const pointing to a shared string in the string
5342table. If the string does not already exist in the table, it is created
fe5bfecd
JH
5343first. Turns on READONLY and FAKE. If the C<hash> parameter is non-zero, that
5344value is used; otherwise the hash is computed. The string's hash can be later
5345be retrieved from the SV with the C<SvSHARED_HASH()> macro. The idea here is
5346that as the string table is used for shared hash keys these strings will have
5347SvPVX_const == HeKEY and hash lookup will avoid string compare.
d2a0f284
JC
5348
5349 SV* newSVpvn_share(const char* s, I32 len, U32 hash)
5350
5351=for hackers
5352Found in file sv.c
5353
3fe05580
MHM
5354=item newSVpvs
5355X<newSVpvs>
5356
5357Like C<newSVpvn>, but takes a literal string instead of a string/length pair.
5358
5359 SV* newSVpvs(const char* s)
5360
5361=for hackers
5362Found in file handy.h
5363
ae374e95
SH
5364=item newSVpvs_flags
5365X<newSVpvs_flags>
5366
5367Like C<newSVpvn_flags>, but takes a literal string instead of a string/length
5368pair.
5369
5370 SV* newSVpvs_flags(const char* s, U32 flags)
5371
5372=for hackers
5373Found in file handy.h
5374
3fe05580
MHM
5375=item newSVpvs_share
5376X<newSVpvs_share>
5377
5378Like C<newSVpvn_share>, but takes a literal string instead of a string/length
5379pair and omits the hash parameter.
5380
5381 SV* newSVpvs_share(const char* s)
5382
5383=for hackers
5384Found in file handy.h
5385
d2a0f284
JC
5386=item newSVrv
5387X<newSVrv>
5388
5389Creates a new SV for the RV, C<rv>, to point to. If C<rv> is not an RV then
5390it will be upgraded to one. If C<classname> is non-null then the new SV will
5391be blessed in the specified package. The new SV is returned and its
5392reference count is 1.
5393
12964ddd 5394 SV* newSVrv(SV *const rv, const char *const classname)
d2a0f284
JC
5395
5396=for hackers
5397Found in file sv.c
5398
5399=item newSVsv
5400X<newSVsv>
5401
5402Creates a new SV which is an exact duplicate of the original SV.
5403(Uses C<sv_setsv>).
5404
23f13727 5405 SV* newSVsv(SV *const old)
d2a0f284
JC
5406
5407=for hackers
5408Found in file sv.c
5409
5410=item newSVuv
5411X<newSVuv>
5412
5413Creates a new SV and copies an unsigned integer into it.
5414The reference count for the SV is set to 1.
5415
23f13727 5416 SV* newSVuv(const UV u)
d2a0f284
JC
5417
5418=for hackers
5419Found in file sv.c
5420
bae1192d
JH
5421=item newSV_type
5422X<newSV_type>
5423
353c6505 5424Creates a new SV, of the type specified. The reference count for the new SV
bae1192d
JH
5425is set to 1.
5426
fe9845cc 5427 SV* newSV_type(const svtype type)
bae1192d
JH
5428
5429=for hackers
5430Found in file sv.c
5431
645c22ef 5432=item sv_2bool
d8c40edc 5433X<sv_2bool>
645c22ef
DM
5434
5435This function is only called on magical items, and is only used by
8cf8f3d1 5436sv_true() or its macro equivalent.
645c22ef 5437
7bc54cea 5438 bool sv_2bool(SV *const sv)
645c22ef
DM
5439
5440=for hackers
5441Found in file sv.c
5442
5443=item sv_2cv
d8c40edc 5444X<sv_2cv>
645c22ef
DM
5445
5446Using various gambits, try to get a CV from an SV; in addition, try if
5447possible to set C<*st> and C<*gvp> to the stash and GV associated with it.
9f435386 5448The flags in C<lref> are passed to sv_fetchsv.
645c22ef 5449
23f13727 5450 CV* sv_2cv(SV* sv, HV **const st, GV **const gvp, const I32 lref)
645c22ef
DM
5451
5452=for hackers
5453Found in file sv.c
5454
5455=item sv_2io
d8c40edc 5456X<sv_2io>
645c22ef
DM
5457
5458Using various gambits, try to get an IO from an SV: the IO slot if its a
5459GV; or the recursive result if we're an RV; or the IO slot of the symbol
5460named after the PV if we're a string.
5461
23f13727 5462 IO* sv_2io(SV *const sv)
645c22ef
DM
5463
5464=for hackers
5465Found in file sv.c
5466
891f9566 5467=item sv_2iv_flags
d8c40edc 5468X<sv_2iv_flags>
645c22ef 5469
891f9566
YST
5470Return the integer value of an SV, doing any necessary string
5471conversion. If flags includes SV_GMAGIC, does an mg_get() first.
5472Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros.
645c22ef 5473
5de3775c 5474 IV sv_2iv_flags(SV *const sv, const I32 flags)
645c22ef
DM
5475
5476=for hackers
5477Found in file sv.c
5478
954c1994 5479=item sv_2mortal
d8c40edc 5480X<sv_2mortal>
954c1994 5481
793edb8a
JH
5482Marks an existing SV as mortal. The SV will be destroyed "soon", either
5483by an explicit call to FREETMPS, or by an implicit call at places such as
b0bc38e6
NC
5484statement boundaries. SvTEMP() is turned on which means that the SV's
5485string buffer can be "stolen" if this SV is copied. See also C<sv_newmortal>
5486and C<sv_mortalcopy>.
954c1994 5487
23f13727 5488 SV* sv_2mortal(SV *const sv)
954c1994 5489
497711e7
GS
5490=for hackers
5491Found in file sv.c
5492
645c22ef 5493=item sv_2nv
d8c40edc 5494X<sv_2nv>
645c22ef
DM
5495
5496Return the num value of an SV, doing any necessary string or integer
5497conversion, magic etc. Normally used via the C<SvNV(sv)> and C<SvNVx(sv)>
5498macros.
5499
5de3775c 5500 NV sv_2nv(SV *const sv)
645c22ef
DM
5501
5502=for hackers
5503Found in file sv.c
5504
451be7b1 5505=item sv_2pvbyte
d8c40edc 5506X<sv_2pvbyte>
451be7b1
DM
5507
5508Return a pointer to the byte-encoded representation of the SV, and set *lp
1e54db1a 5509to its length. May cause the SV to be downgraded from UTF-8 as a
451be7b1
DM
5510side-effect.
5511
5512Usually accessed via the C<SvPVbyte> macro.
5513
5de3775c 5514 char* sv_2pvbyte(SV *const sv, STRLEN *const lp)
451be7b1
DM
5515
5516=for hackers
5517Found in file sv.c
5518
035cbb0e
RGS
5519=item sv_2pvutf8
5520X<sv_2pvutf8>
5521
5522Return a pointer to the UTF-8-encoded representation of the SV, and set *lp
5523to its length. May cause the SV to be upgraded to UTF-8 as a side-effect.
5524
5525Usually accessed via the C<SvPVutf8> macro.
5526
7bc54cea 5527 char* sv_2pvutf8(SV *const sv, STRLEN *const lp)
035cbb0e
RGS
5528
5529=for hackers
5530Found in file sv.c
5531
645c22ef 5532=item sv_2pv_flags
d8c40edc 5533X<sv_2pv_flags>
645c22ef 5534
ff276b08 5535Returns a pointer to the string value of an SV, and sets *lp to its length.
645c22ef
DM
5536If flags includes SV_GMAGIC, does an mg_get() first. Coerces sv to a string
5537if necessary.
5538Normally invoked via the C<SvPV_flags> macro. C<sv_2pv()> and C<sv_2pv_nomg>
5539usually end up here too.
5540
5de3775c 5541 char* sv_2pv_flags(SV *const sv, STRLEN *const lp, const I32 flags)
645c22ef
DM
5542
5543=for hackers
5544Found in file sv.c
5545
891f9566 5546=item sv_2uv_flags
d8c40edc 5547X<sv_2uv_flags>
645c22ef
DM
5548
5549Return the unsigned integer value of an SV, doing any necessary string
891f9566
YST
5550conversion. If flags includes SV_GMAGIC, does an mg_get() first.
5551Normally used via the C<SvUV(sv)> and C<SvUVx(sv)> macros.
645c22ef 5552
5de3775c 5553 UV sv_2uv_flags(SV *const sv, const I32 flags)
645c22ef
DM
5554
5555=for hackers
5556Found in file sv.c
5557
5558=item sv_backoff
d8c40edc 5559X<sv_backoff>
645c22ef
DM
5560
5561Remove any string offset. You should normally use the C<SvOOK_off> macro
5562wrapper instead.
5563
aad570aa 5564 int sv_backoff(SV *const sv)
645c22ef
DM
5565
5566=for hackers
5567Found in file sv.c
5568
954c1994 5569=item sv_bless
d8c40edc 5570X<sv_bless>
954c1994
GS
5571
5572Blesses an SV into a specified package. The SV must be an RV. The package
5573must be designated by its stash (see C<gv_stashpv()>). The reference count
5574of the SV is unaffected.
5575
12964ddd 5576 SV* sv_bless(SV *const sv, HV *const stash)
954c1994 5577
497711e7
GS
5578=for hackers
5579Found in file sv.c
5580
954c1994 5581=item sv_catpv
d8c40edc 5582X<sv_catpv>
954c1994
GS
5583
5584Concatenates the string onto the end of the string which is in the SV.
1e54db1a
JH
5585If the SV has the UTF-8 status set, then the bytes appended should be
5586valid UTF-8. Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>.
954c1994 5587
2b021c53 5588 void sv_catpv(SV *const sv, const char* ptr)
954c1994 5589
497711e7
GS
5590=for hackers
5591Found in file sv.c
5592
954c1994 5593=item sv_catpvf
d8c40edc 5594X<sv_catpvf>
954c1994 5595
d5ce4a7c
GA
5596Processes its arguments like C<sprintf> and appends the formatted
5597output to an SV. If the appended data contains "wide" characters
5598(including, but not limited to, SVs with a UTF-8 PV formatted with %s,
5599and characters >255 formatted with %c), the original SV might get
bffc3d17 5600upgraded to UTF-8. Handles 'get' magic, but not 'set' magic. See
cdd94ca7
NC
5601C<sv_catpvf_mg>. If the original SV was UTF-8, the pattern should be
5602valid UTF-8; if the original SV was bytes, the pattern should be too.
954c1994 5603
66ceb532 5604 void sv_catpvf(SV *const sv, const char *const pat, ...)
954c1994 5605
497711e7
GS
5606=for hackers
5607Found in file sv.c
5608
954c1994 5609=item sv_catpvf_mg
d8c40edc 5610X<sv_catpvf_mg>
954c1994
GS
5611
5612Like C<sv_catpvf>, but also handles 'set' magic.
5613
66ceb532 5614 void sv_catpvf_mg(SV *const sv, const char *const pat, ...)
954c1994 5615
497711e7
GS
5616=for hackers
5617Found in file sv.c
5618
954c1994 5619=item sv_catpvn
d8c40edc 5620X<sv_catpvn>
954c1994
GS
5621
5622Concatenates the string onto the end of the string which is in the SV. The
1e54db1a
JH
5623C<len> indicates number of bytes to copy. If the SV has the UTF-8
5624status set, then the bytes appended should be valid UTF-8.
d5ce4a7c 5625Handles 'get' magic, but not 'set' magic. See C<sv_catpvn_mg>.
954c1994 5626
4048f010 5627 void sv_catpvn(SV *dsv, const char *sstr, STRLEN len)
954c1994 5628
497711e7
GS
5629=for hackers
5630Found in file sv.c
5631
8d6d96c1 5632=item sv_catpvn_flags
d8c40edc 5633X<sv_catpvn_flags>
8d6d96c1
HS
5634
5635Concatenates the string onto the end of the string which is in the SV. The
1e54db1a
JH
5636C<len> indicates number of bytes to copy. If the SV has the UTF-8
5637status set, then the bytes appended should be valid UTF-8.
8d6d96c1
HS
5638If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<dsv> if
5639appropriate, else not. C<sv_catpvn> and C<sv_catpvn_nomg> are implemented
5640in terms of this function.
5641
2e000ff2 5642 void sv_catpvn_flags(SV *const dstr, const char *sstr, const STRLEN len, const I32 flags)
8d6d96c1
HS
5643
5644=for hackers
5645Found in file sv.c
5646
3fe05580
MHM
5647=item sv_catpvs
5648X<sv_catpvs>
5649
5650Like C<sv_catpvn>, but takes a literal string instead of a string/length pair.
5651
f8f4df2c 5652 void sv_catpvs(SV* sv, const char* s)
3fe05580
MHM
5653
5654=for hackers
5655Found in file handy.h
5656
954c1994 5657=item sv_catpv_mg
d8c40edc 5658X<sv_catpv_mg>
954c1994
GS
5659
5660Like C<sv_catpv>, but also handles 'set' magic.
5661
2b021c53 5662 void sv_catpv_mg(SV *const sv, const char *const ptr)
954c1994 5663
497711e7
GS
5664=for hackers
5665Found in file sv.c
5666
954c1994 5667=item sv_catsv
d8c40edc 5668X<sv_catsv>
954c1994 5669
1aa99e6b
IH
5670Concatenates the string from SV C<ssv> onto the end of the string in
5671SV C<dsv>. Modifies C<dsv> but not C<ssv>. Handles 'get' magic, but
5672not 'set' magic. See C<sv_catsv_mg>.
954c1994 5673
4048f010 5674 void sv_catsv(SV *dstr, SV *sstr)
954c1994 5675
497711e7
GS
5676=for hackers
5677Found in file sv.c
5678
8d6d96c1 5679=item sv_catsv_flags
d8c40edc 5680X<sv_catsv_flags>
8d6d96c1
HS
5681
5682Concatenates the string from SV C<ssv> onto the end of the string in
5683SV C<dsv>. Modifies C<dsv> but not C<ssv>. If C<flags> has C<SV_GMAGIC>
5684bit set, will C<mg_get> on the SVs if appropriate, else not. C<sv_catsv>
5685and C<sv_catsv_nomg> are implemented in terms of this function.
5686
2e000ff2 5687 void sv_catsv_flags(SV *const dsv, SV *const ssv, const I32 flags)
8d6d96c1
HS
5688
5689=for hackers
5690Found in file sv.c
5691
954c1994 5692=item sv_chop
d8c40edc 5693X<sv_chop>
954c1994 5694
1c846c1f 5695Efficient removal of characters from the beginning of the string buffer.
954c1994
GS
5696SvPOK(sv) must be true and the C<ptr> must be a pointer to somewhere inside
5697the string buffer. The C<ptr> becomes the first character of the adjusted
645c22ef 5698string. Uses the "OOK hack".
3f7c398e 5699Beware: after this function returns, C<ptr> and SvPVX_const(sv) may no longer
5c3943b6 5700refer to the same chunk of data.
954c1994 5701
2e000ff2 5702 void sv_chop(SV *const sv, const char *const ptr)
954c1994 5703
497711e7
GS
5704=for hackers
5705Found in file sv.c
5706
c461cf8f 5707=item sv_clear
d8c40edc 5708X<sv_clear>
c461cf8f 5709
645c22ef
DM
5710Clear an SV: call any destructors, free up any memory used by the body,
5711and free the body itself. The SV's head is I<not> freed, although
5712its type is set to all 1's so that it won't inadvertently be assumed
5713to be live during global destruction etc.
5714This function should only be called when REFCNT is zero. Most of the time
5715you'll want to call C<sv_free()> (or its macro wrapper C<SvREFCNT_dec>)
5716instead.
c461cf8f 5717
af828c01 5718 void sv_clear(SV *const sv)
c461cf8f
JH
5719
5720=for hackers
5721Found in file sv.c
5722
954c1994 5723=item sv_cmp
d8c40edc 5724X<sv_cmp>
954c1994
GS
5725
5726Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the
5727string in C<sv1> is less than, equal to, or greater than the string in
645c22ef
DM
5728C<sv2>. Is UTF-8 and 'use bytes' aware, handles get magic, and will
5729coerce its args to strings if necessary. See also C<sv_cmp_locale>.
954c1994 5730
ac1e9476 5731 I32 sv_cmp(SV *const sv1, SV *const sv2)
954c1994 5732
497711e7
GS
5733=for hackers
5734Found in file sv.c
5735
c461cf8f 5736=item sv_cmp_locale
d8c40edc 5737X<sv_cmp_locale>
c461cf8f 5738
645c22ef
DM
5739Compares the strings in two SVs in a locale-aware manner. Is UTF-8 and
5740'use bytes' aware, handles get magic, and will coerce its args to strings
d77cdebf 5741if necessary. See also C<sv_cmp>.
c461cf8f 5742
ac1e9476 5743 I32 sv_cmp_locale(SV *const sv1, SV *const sv2)
c461cf8f
JH
5744
5745=for hackers
5746Found in file sv.c
5747
645c22ef 5748=item sv_collxfrm
d8c40edc 5749X<sv_collxfrm>
645c22ef
DM
5750
5751Add Collate Transform magic to an SV if it doesn't already have it.
5752
5753Any scalar variable may carry PERL_MAGIC_collxfrm magic that contains the
5754scalar data of the variable, but transformed to such a format that a normal
5755memory comparison can be used to compare the data according to the locale
5756settings.
5757
ac1e9476 5758 char* sv_collxfrm(SV *const sv, STRLEN *const nxp)
645c22ef
DM
5759
5760=for hackers
5761Found in file sv.c
5762
6050d10e 5763=item sv_copypv
d8c40edc 5764X<sv_copypv>
6050d10e
JP
5765
5766Copies a stringified representation of the source SV into the
5767destination SV. Automatically performs any necessary mg_get and
9ede5bc8 5768coercion of numeric values into strings. Guaranteed to preserve
2575c402 5769UTF8 flag even from overloaded objects. Similar in nature to
9ede5bc8
DM
5770sv_2pv[_flags] but operates directly on an SV instead of just the
5771string. Mostly uses sv_2pv_flags to do its work, except when that
6050d10e
JP
5772would lose the UTF-8'ness of the PV.
5773
5de3775c 5774 void sv_copypv(SV *const dsv, SV *const ssv)
6050d10e
JP
5775
5776=for hackers
5777Found in file sv.c
5778
954c1994 5779=item sv_dec
d8c40edc 5780X<sv_dec>
954c1994 5781
645c22ef
DM
5782Auto-decrement of the value in the SV, doing string to numeric conversion
5783if necessary. Handles 'get' magic.
954c1994 5784
ac1e9476 5785 void sv_dec(SV *const sv)
954c1994 5786
497711e7
GS
5787=for hackers
5788Found in file sv.c
5789
954c1994 5790=item sv_eq
d8c40edc 5791X<sv_eq>
954c1994
GS
5792
5793Returns a boolean indicating whether the strings in the two SVs are
645c22ef
DM
5794identical. Is UTF-8 and 'use bytes' aware, handles get magic, and will
5795coerce its args to strings if necessary.
954c1994
GS
5796
5797 I32 sv_eq(SV* sv1, SV* sv2)
5798
497711e7
GS
5799=for hackers
5800Found in file sv.c
5801
645c22ef 5802=item sv_force_normal_flags
d8c40edc 5803X<sv_force_normal_flags>
645c22ef
DM
5804
5805Undo various types of fakery on an SV: if the PV is a shared string, make
5806a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
765f542d
NC
5807an xpvmg; if we're a copy-on-write scalar, this is the on-write time when
5808we do the copy, and is also used locally. If C<SV_COW_DROP_PV> is set
5809then a copy-on-write scalar drops its PV buffer (if any) and becomes
5810SvPOK_off rather than making a copy. (Used where this scalar is about to be
d3050d9d 5811set to some other value.) In addition, the C<flags> parameter gets passed to
765f542d
NC
5812C<sv_unref_flags()> when unrefing. C<sv_force_normal> calls this function
5813with flags set to 0.
645c22ef 5814
2e000ff2 5815 void sv_force_normal_flags(SV *const sv, const U32 flags)
645c22ef
DM
5816
5817=for hackers
5818Found in file sv.c
5819
c461cf8f 5820=item sv_free
d8c40edc 5821X<sv_free>
c461cf8f 5822
645c22ef
DM
5823Decrement an SV's reference count, and if it drops to zero, call
5824C<sv_clear> to invoke destructors and free up any memory used by
5825the body; finally, deallocate the SV's head itself.
5826Normally called via a wrapper macro C<SvREFCNT_dec>.
c461cf8f 5827
af828c01 5828 void sv_free(SV *const sv)
c461cf8f
JH
5829
5830=for hackers
5831Found in file sv.c
5832
5833=item sv_gets
d8c40edc 5834X<sv_gets>
c461cf8f
JH
5835
5836Get a line from the filehandle and store it into the SV, optionally
5837appending to the currently-stored string.
5838
ac1e9476 5839 char* sv_gets(SV *const sv, PerlIO *const fp, I32 append)
c461cf8f
JH
5840
5841=for hackers
5842Found in file sv.c
5843
954c1994 5844=item sv_grow
d8c40edc 5845X<sv_grow>
954c1994 5846
645c22ef
DM
5847Expands the character buffer in the SV. If necessary, uses C<sv_unref> and
5848upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer.
5849Use the C<SvGROW> wrapper instead.
954c1994 5850
aad570aa 5851 char* sv_grow(SV *const sv, STRLEN newlen)
954c1994 5852
497711e7
GS
5853=for hackers
5854Found in file sv.c
5855
954c1994 5856=item sv_inc
d8c40edc 5857X<sv_inc>
954c1994 5858
645c22ef
DM
5859Auto-increment of the value in the SV, doing string to numeric conversion
5860if necessary. Handles 'get' magic.
954c1994 5861
ac1e9476 5862 void sv_inc(SV *const sv)
954c1994 5863
497711e7
GS
5864=for hackers
5865Found in file sv.c
5866
954c1994 5867=item sv_insert
d8c40edc 5868X<sv_insert>
954c1994
GS
5869
5870Inserts a string at the specified offset/length within the SV. Similar to
c0dd94a0 5871the Perl substr() function. Handles get magic.
954c1994 5872
2b021c53 5873 void sv_insert(SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen)
954c1994 5874
497711e7 5875=for hackers
c0dd94a0
VP
5876Found in file sv.c
5877
5878=item sv_insert_flags
5879X<sv_insert_flags>
5880
5881Same as C<sv_insert>, but the extra C<flags> are passed the C<SvPV_force_flags> that applies to C<bigstr>.
5882
5883 void sv_insert_flags(SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen, const U32 flags)
5884
5885=for hackers
497711e7
GS
5886Found in file sv.c
5887
954c1994 5888=item sv_isa
d8c40edc 5889X<sv_isa>
954c1994
GS
5890
5891Returns a boolean indicating whether the SV is blessed into the specified
5892class. This does not check for subtypes; use C<sv_derived_from> to verify
5893an inheritance relationship.
5894
12964ddd 5895 int sv_isa(SV* sv, const char *const name)
954c1994 5896
497711e7
GS
5897=for hackers
5898Found in file sv.c
5899
954c1994 5900=item sv_isobject
d8c40edc 5901X<sv_isobject>
954c1994
GS
5902
5903Returns a boolean indicating whether the SV is an RV pointing to a blessed
5904object. If the SV is not an RV, or if the object is not blessed, then this
5905will return false.
5906
5907 int sv_isobject(SV* sv)
5908
497711e7
GS
5909=for hackers
5910Found in file sv.c
5911
954c1994 5912=item sv_len
d8c40edc 5913X<sv_len>
954c1994 5914
645c22ef
DM
5915Returns the length of the string in the SV. Handles magic and type
5916coercion. See also C<SvCUR>, which gives raw access to the xpv_cur slot.
954c1994 5917
af828c01 5918 STRLEN sv_len(SV *const sv)
954c1994 5919
497711e7
GS
5920=for hackers
5921Found in file sv.c
5922
c461cf8f 5923=item sv_len_utf8
d8c40edc 5924X<sv_len_utf8>
c461cf8f
JH
5925
5926Returns the number of characters in the string in an SV, counting wide
1e54db1a 5927UTF-8 bytes as a single character. Handles magic and type coercion.
c461cf8f 5928
af828c01 5929 STRLEN sv_len_utf8(SV *const sv)
c461cf8f
JH
5930
5931=for hackers
5932Found in file sv.c
5933
954c1994 5934=item sv_magic
d8c40edc 5935X<sv_magic>
954c1994 5936
645c22ef
DM
5937Adds magic to an SV. First upgrades C<sv> to type C<SVt_PVMG> if necessary,
5938then adds a new magic item of type C<how> to the head of the magic list.
5939
2d8d5d5a
SH
5940See C<sv_magicext> (which C<sv_magic> now calls) for a description of the
5941handling of the C<name> and C<namlen> arguments.
5942
4509d3fb
SB
5943You need to use C<sv_magicext> to add magic to SvREADONLY SVs and also
5944to add more than one instance of the same 'how'.
5945
ac1e9476 5946 void sv_magic(SV *const sv, SV *const obj, const int how, const char *const name, const I32 namlen)
954c1994 5947
497711e7
GS
5948=for hackers
5949Found in file sv.c
5950
a4f1a029 5951=item sv_magicext
d8c40edc 5952X<sv_magicext>
a4f1a029
NIS
5953
5954Adds magic to an SV, upgrading it if necessary. Applies the
2d8d5d5a 5955supplied vtable and returns a pointer to the magic added.
a4f1a029 5956
2d8d5d5a
SH
5957Note that C<sv_magicext> will allow things that C<sv_magic> will not.
5958In particular, you can add magic to SvREADONLY SVs, and add more than
5959one instance of the same 'how'.
a4f1a029 5960
2d8d5d5a
SH
5961If C<namlen> is greater than zero then a C<savepvn> I<copy> of C<name> is
5962stored, if C<namlen> is zero then C<name> is stored as-is and - as another
5963special case - if C<(name && namlen == HEf_SVKEY)> then C<name> is assumed
5964to contain an C<SV*> and is stored as-is with its REFCNT incremented.
a4f1a029 5965
2d8d5d5a 5966(This is now used as a subroutine by C<sv_magic>.)
a4f1a029 5967
2b021c53 5968 MAGIC * sv_magicext(SV *const sv, SV *const obj, const int how, const MGVTBL *const vtbl, const char *const name, const I32 namlen)
a4f1a029
NIS
5969
5970=for hackers
5971Found in file sv.c
5972
954c1994 5973=item sv_mortalcopy
d8c40edc 5974X<sv_mortalcopy>
954c1994 5975
645c22ef 5976Creates a new SV which is a copy of the original SV (using C<sv_setsv>).
793edb8a
JH
5977The new SV is marked as mortal. It will be destroyed "soon", either by an
5978explicit call to FREETMPS, or by an implicit call at places such as
5979statement boundaries. See also C<sv_newmortal> and C<sv_2mortal>.
954c1994 5980
ac1e9476 5981 SV* sv_mortalcopy(SV *const oldsv)
954c1994 5982
497711e7
GS
5983=for hackers
5984Found in file sv.c
5985
954c1994 5986=item sv_newmortal
d8c40edc 5987X<sv_newmortal>
954c1994 5988
645c22ef 5989Creates a new null SV which is mortal. The reference count of the SV is
793edb8a
JH
5990set to 1. It will be destroyed "soon", either by an explicit call to
5991FREETMPS, or by an implicit call at places such as statement boundaries.
5992See also C<sv_mortalcopy> and C<sv_2mortal>.
954c1994
GS
5993
5994 SV* sv_newmortal()
5995
497711e7
GS
5996=for hackers
5997Found in file sv.c
5998
645c22ef 5999=item sv_newref
d8c40edc 6000X<sv_newref>
645c22ef
DM
6001
6002Increment an SV's reference count. Use the C<SvREFCNT_inc()> wrapper
6003instead.
6004
af828c01 6005 SV* sv_newref(SV *const sv)
645c22ef
DM
6006
6007=for hackers
6008Found in file sv.c
6009
645c22ef 6010=item sv_pos_b2u
d8c40edc 6011X<sv_pos_b2u>
645c22ef
DM
6012
6013Converts the value pointed to by offsetp from a count of bytes from the
1e54db1a 6014start of the string, to a count of the equivalent number of UTF-8 chars.
645c22ef
DM
6015Handles magic and type coercion.
6016
ac1e9476 6017 void sv_pos_b2u(SV *const sv, I32 *const offsetp)
645c22ef
DM
6018
6019=for hackers
6020Found in file sv.c
6021
6022=item sv_pos_u2b
d8c40edc 6023X<sv_pos_u2b>
645c22ef 6024
1e54db1a 6025Converts the value pointed to by offsetp from a count of UTF-8 chars from
645c22ef
DM
6026the start of the string, to a count of the equivalent number of bytes; if
6027lenp is non-zero, it does the same to lenp, but this time starting from
6028the offset, rather than from the start of the string. Handles magic and
6029type coercion.
6030
af828c01 6031 void sv_pos_u2b(SV *const sv, I32 *const offsetp, I32 *const lenp)
645c22ef
DM
6032
6033=for hackers
6034Found in file sv.c
6035
645c22ef 6036=item sv_pvbyten_force
d8c40edc 6037X<sv_pvbyten_force>
645c22ef 6038
9244d4ad 6039The backend for the C<SvPVbytex_force> macro. Always use the macro instead.
645c22ef 6040
12964ddd 6041 char* sv_pvbyten_force(SV *const sv, STRLEN *const lp)
645c22ef
DM
6042
6043=for hackers
6044Found in file sv.c
6045
c461cf8f 6046=item sv_pvn_force
d8c40edc 6047X<sv_pvn_force>
c461cf8f
JH
6048
6049Get a sensible string out of the SV somehow.
645c22ef
DM
6050A private implementation of the C<SvPV_force> macro for compilers which
6051can't cope with complex macro expressions. Always use the macro instead.
c461cf8f
JH
6052
6053 char* sv_pvn_force(SV* sv, STRLEN* lp)
6054
6055=for hackers
6056Found in file sv.c
6057
8d6d96c1 6058=item sv_pvn_force_flags
d8c40edc 6059X<sv_pvn_force_flags>
8d6d96c1
HS
6060
6061Get a sensible string out of the SV somehow.
6062If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<sv> if
6063appropriate, else not. C<sv_pvn_force> and C<sv_pvn_force_nomg> are
6064implemented in terms of this function.
645c22ef
DM
6065You normally want to use the various wrapper macros instead: see
6066C<SvPV_force> and C<SvPV_force_nomg>
8d6d96c1 6067
12964ddd 6068 char* sv_pvn_force_flags(SV *const sv, STRLEN *const lp, const I32 flags)
8d6d96c1
HS
6069
6070=for hackers
6071Found in file sv.c
6072
c461cf8f 6073=item sv_pvutf8n_force
d8c40edc 6074X<sv_pvutf8n_force>
c461cf8f 6075
9244d4ad 6076The backend for the C<SvPVutf8x_force> macro. Always use the macro instead.
c461cf8f 6077
12964ddd 6078 char* sv_pvutf8n_force(SV *const sv, STRLEN *const lp)
c461cf8f
JH
6079
6080=for hackers
6081Found in file sv.c
6082
6083=item sv_reftype
d8c40edc 6084X<sv_reftype>
c461cf8f
JH
6085
6086Returns a string describing what the SV is a reference to.
6087
12964ddd 6088 const char* sv_reftype(const SV *const sv, const int ob)
c461cf8f
JH
6089
6090=for hackers
6091Found in file sv.c
6092
6093=item sv_replace
d8c40edc 6094X<sv_replace>
c461cf8f
JH
6095
6096Make the first argument a copy of the second, then delete the original.
645c22ef
DM
6097The target SV physically takes over ownership of the body of the source SV
6098and inherits its flags; however, the target keeps any magic it owns,
6099and any magic in the source is discarded.
ff276b08 6100Note that this is a rather specialist SV copying operation; most of the
645c22ef 6101time you'll want to use C<sv_setsv> or one of its many macro front-ends.
c461cf8f 6102
af828c01 6103 void sv_replace(SV *const sv, SV *const nsv)
c461cf8f
JH
6104
6105=for hackers
6106Found in file sv.c
6107
451be7b1 6108=item sv_reset
d8c40edc 6109X<sv_reset>
451be7b1
DM
6110
6111Underlying implementation for the C<reset> Perl function.
6112Note that the perl-level function is vaguely deprecated.
6113
23f13727 6114 void sv_reset(const char* s, HV *const stash)
451be7b1
DM
6115
6116=for hackers
6117Found in file sv.c
6118
c461cf8f 6119=item sv_rvweaken
d8c40edc 6120X<sv_rvweaken>
c461cf8f 6121
645c22ef
DM
6122Weaken a reference: set the C<SvWEAKREF> flag on this RV; give the
6123referred-to SV C<PERL_MAGIC_backref> magic if it hasn't already; and
6124push a back-reference to this RV onto the array of backreferences
1e73acc8
AS
6125associated with that magic. If the RV is magical, set magic will be
6126called after the RV is cleared.
c461cf8f 6127
2b021c53 6128 SV* sv_rvweaken(SV *const sv)
c461cf8f
JH
6129
6130=for hackers
6131Found in file sv.c
6132
954c1994 6133=item sv_setiv
d8c40edc 6134X<sv_setiv>
954c1994 6135
645c22ef
DM
6136Copies an integer into the given SV, upgrading first if necessary.
6137Does not handle 'set' magic. See also C<sv_setiv_mg>.
954c1994 6138
aad570aa 6139 void sv_setiv(SV *const sv, const IV num)
954c1994 6140
497711e7
GS
6141=for hackers
6142Found in file sv.c
6143
954c1994 6144=item sv_setiv_mg
d8c40edc 6145X<sv_setiv_mg>
954c1994
GS
6146
6147Like C<sv_setiv>, but also handles 'set' magic.
6148
aad570aa 6149 void sv_setiv_mg(SV *const sv, const IV i)
954c1994 6150
497711e7
GS
6151=for hackers
6152Found in file sv.c
6153
954c1994 6154=item sv_setnv
d8c40edc 6155X<sv_setnv>
954c1994 6156
645c22ef
DM
6157Copies a double into the given SV, upgrading first if necessary.
6158Does not handle 'set' magic. See also C<sv_setnv_mg>.
954c1994 6159
aad570aa 6160 void sv_setnv(SV *const sv, const NV num)
954c1994 6161
497711e7
GS
6162=for hackers
6163Found in file sv.c
6164
954c1994 6165=item sv_setnv_mg
d8c40edc 6166X<sv_setnv_mg>
954c1994
GS
6167
6168Like C<sv_setnv>, but also handles 'set' magic.
6169
aad570aa 6170 void sv_setnv_mg(SV *const sv, const NV num)
954c1994 6171
497711e7
GS
6172=for hackers
6173Found in file sv.c
6174
954c1994 6175=item sv_setpv
d8c40edc 6176X<sv_setpv>
954c1994
GS
6177
6178Copies a string into an SV. The string must be null-terminated. Does not
6179handle 'set' magic. See C<sv_setpv_mg>.
6180
2e000ff2 6181 void sv_setpv(SV *const sv, const char *const ptr)
954c1994 6182
497711e7
GS
6183=for hackers
6184Found in file sv.c
6185
954c1994 6186=item sv_setpvf
d8c40edc 6187X<sv_setpvf>
954c1994 6188
bffc3d17
SH
6189Works like C<sv_catpvf> but copies the text into the SV instead of
6190appending it. Does not handle 'set' magic. See C<sv_setpvf_mg>.
954c1994 6191
89e38212 6192 void sv_setpvf(SV *const sv, const char *const pat, ...)
954c1994 6193
497711e7
GS
6194=for hackers
6195Found in file sv.c
6196
954c1994 6197=item sv_setpvf_mg
d8c40edc 6198X<sv_setpvf_mg>
954c1994
GS
6199
6200Like C<sv_setpvf>, but also handles 'set' magic.
6201
89e38212 6202 void sv_setpvf_mg(SV *const sv, const char *const pat, ...)
954c1994 6203
497711e7
GS
6204=for hackers
6205Found in file sv.c
6206
2307c6d0 6207=item sv_setpviv
d8c40edc 6208X<sv_setpviv>
2307c6d0
SB
6209
6210Copies an integer into the given SV, also updating its string value.
6211Does not handle 'set' magic. See C<sv_setpviv_mg>.
6212
89e38212 6213 void sv_setpviv(SV *const sv, const IV num)
2307c6d0
SB
6214
6215=for hackers
6216Found in file sv.c
6217
6218=item sv_setpviv_mg
d8c40edc 6219X<sv_setpviv_mg>
2307c6d0
SB
6220
6221Like C<sv_setpviv>, but also handles 'set' magic.
6222
89e38212 6223 void sv_setpviv_mg(SV *const sv, const IV iv)
2307c6d0
SB
6224
6225=for hackers
6226Found in file sv.c
6227
954c1994 6228=item sv_setpvn
d8c40edc 6229X<sv_setpvn>
954c1994
GS
6230
6231Copies a string into an SV. The C<len> parameter indicates the number of
9e09f5f2
MHM
6232bytes to be copied. If the C<ptr> argument is NULL the SV will become
6233undefined. Does not handle 'set' magic. See C<sv_setpvn_mg>.
954c1994 6234
2e000ff2 6235 void sv_setpvn(SV *const sv, const char *const ptr, const STRLEN len)
954c1994 6236
497711e7
GS
6237=for hackers
6238Found in file sv.c
6239
954c1994 6240=item sv_setpvn_mg
d8c40edc 6241X<sv_setpvn_mg>
954c1994
GS
6242
6243Like C<sv_setpvn>, but also handles 'set' magic.
6244
2e000ff2 6245 void sv_setpvn_mg(SV *const sv, const char *const ptr, const STRLEN len)
954c1994 6246
497711e7
GS
6247=for hackers
6248Found in file sv.c
6249
3fe05580
MHM
6250=item sv_setpvs
6251X<sv_setpvs>
6252
6253Like C<sv_setpvn>, but takes a literal string instead of a string/length pair.
6254
f8f4df2c 6255 void sv_setpvs(SV* sv, const char* s)
3fe05580
MHM
6256
6257=for hackers
6258Found in file handy.h
6259
954c1994 6260=item sv_setpv_mg
d8c40edc 6261X<sv_setpv_mg>
954c1994
GS
6262
6263Like C<sv_setpv>, but also handles 'set' magic.
6264
2e000ff2 6265 void sv_setpv_mg(SV *const sv, const char *const ptr)
954c1994 6266
497711e7
GS
6267=for hackers
6268Found in file sv.c
6269
954c1994 6270=item sv_setref_iv
d8c40edc 6271X<sv_setref_iv>
954c1994
GS
6272
6273Copies an integer into a new SV, optionally blessing the SV. The C<rv>
6274argument will be upgraded to an RV. That RV will be modified to point to
6275the new SV. The C<classname> argument indicates the package for the
bd61b366 6276blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV
d34c2299 6277will have a reference count of 1, and the RV will be returned.
954c1994 6278
12964ddd 6279 SV* sv_setref_iv(SV *const rv, const char *const classname, const IV iv)
954c1994 6280
497711e7
GS
6281=for hackers
6282Found in file sv.c
6283
954c1994 6284=item sv_setref_nv
d8c40edc 6285X<sv_setref_nv>
954c1994
GS
6286
6287Copies a double into a new SV, optionally blessing the SV. The C<rv>
6288argument will be upgraded to an RV. That RV will be modified to point to
6289the new SV. The C<classname> argument indicates the package for the
bd61b366 6290blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV
d34c2299 6291will have a reference count of 1, and the RV will be returned.
954c1994 6292
12964ddd 6293 SV* sv_setref_nv(SV *const rv, const char *const classname, const NV nv)
954c1994 6294
497711e7
GS
6295=for hackers
6296Found in file sv.c
6297
954c1994 6298=item sv_setref_pv
d8c40edc 6299X<sv_setref_pv>
954c1994
GS
6300
6301Copies a pointer into a new SV, optionally blessing the SV. The C<rv>
6302argument will be upgraded to an RV. That RV will be modified to point to
6303the new SV. If the C<pv> argument is NULL then C<PL_sv_undef> will be placed
6304into the SV. The C<classname> argument indicates the package for the
bd61b366 6305blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV
d34c2299 6306will have a reference count of 1, and the RV will be returned.
954c1994
GS
6307
6308Do not use with other Perl types such as HV, AV, SV, CV, because those
6309objects will become corrupted by the pointer copy process.
6310
6311Note that C<sv_setref_pvn> copies the string while this copies the pointer.
6312
12964ddd 6313 SV* sv_setref_pv(SV *const rv, const char *const classname, void *const pv)
954c1994 6314
497711e7
GS
6315=for hackers
6316Found in file sv.c
6317
954c1994 6318=item sv_setref_pvn
d8c40edc 6319X<sv_setref_pvn>
954c1994
GS
6320
6321Copies a string into a new SV, optionally blessing the SV. The length of the
6322string must be specified with C<n>. The C<rv> argument will be upgraded to
6323an RV. That RV will be modified to point to the new SV. The C<classname>
6324argument indicates the package for the blessing. Set C<classname> to
bd61b366 6325C<NULL> to avoid the blessing. The new SV will have a reference count
d34c2299 6326of 1, and the RV will be returned.
954c1994
GS
6327
6328Note that C<sv_setref_pv> copies the pointer while this copies the string.
6329
12964ddd 6330 SV* sv_setref_pvn(SV *const rv, const char *const classname, const char *const pv, const STRLEN n)
954c1994 6331
497711e7
GS
6332=for hackers
6333Found in file sv.c
6334
e1c57cef 6335=item sv_setref_uv
d8c40edc 6336X<sv_setref_uv>
e1c57cef
JH
6337
6338Copies an unsigned integer into a new SV, optionally blessing the SV. The C<rv>
6339argument will be upgraded to an RV. That RV will be modified to point to
6340the new SV. The C<classname> argument indicates the package for the
bd61b366 6341blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV
d34c2299 6342will have a reference count of 1, and the RV will be returned.
e1c57cef 6343
12964ddd 6344 SV* sv_setref_uv(SV *const rv, const char *const classname, const UV uv)
e1c57cef
JH
6345
6346=for hackers
6347Found in file sv.c
6348
954c1994 6349=item sv_setsv
d8c40edc 6350X<sv_setsv>
954c1994 6351
645c22ef
DM
6352Copies the contents of the source SV C<ssv> into the destination SV
6353C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
6354function if the source SV needs to be reused. Does not handle 'set' magic.
6355Loosely speaking, it performs a copy-by-value, obliterating any previous
6356content of the destination.
6357
6358You probably want to use one of the assortment of wrappers, such as
6359C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
6360C<SvSetMagicSV_nosteal>.
6361
4048f010 6362 void sv_setsv(SV *dstr, SV *sstr)
954c1994 6363
497711e7
GS
6364=for hackers
6365Found in file sv.c
6366
8d6d96c1 6367=item sv_setsv_flags
d8c40edc 6368X<sv_setsv_flags>
8d6d96c1 6369
645c22ef
DM
6370Copies the contents of the source SV C<ssv> into the destination SV
6371C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
6372function if the source SV needs to be reused. Does not handle 'set' magic.
6373Loosely speaking, it performs a copy-by-value, obliterating any previous
6374content of the destination.
6375If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on
2d8d5d5a
SH
6376C<ssv> if appropriate, else not. If the C<flags> parameter has the
6377C<NOSTEAL> bit set then the buffers of temps will not be stolen. <sv_setsv>
6378and C<sv_setsv_nomg> are implemented in terms of this function.
645c22ef
DM
6379
6380You probably want to use one of the assortment of wrappers, such as
6381C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
6382C<SvSetMagicSV_nosteal>.
6383
6384This is the primary function for copying scalars, and most other
6385copy-ish functions and macros use this underneath.
8d6d96c1 6386
7bc54cea 6387 void sv_setsv_flags(SV *dstr, SV *sstr, const I32 flags)
8d6d96c1
HS
6388
6389=for hackers
6390Found in file sv.c
6391
954c1994 6392=item sv_setsv_mg
d8c40edc 6393X<sv_setsv_mg>
954c1994
GS
6394
6395Like C<sv_setsv>, but also handles 'set' magic.
6396
7bc54cea 6397 void sv_setsv_mg(SV *const dstr, SV *const sstr)
954c1994 6398
497711e7
GS
6399=for hackers
6400Found in file sv.c
6401
954c1994 6402=item sv_setuv
d8c40edc 6403X<sv_setuv>
954c1994 6404
645c22ef
DM
6405Copies an unsigned integer into the given SV, upgrading first if necessary.
6406Does not handle 'set' magic. See also C<sv_setuv_mg>.
954c1994 6407
aad570aa 6408 void sv_setuv(SV *const sv, const UV num)
954c1994 6409
497711e7
GS
6410=for hackers
6411Found in file sv.c
6412
954c1994 6413=item sv_setuv_mg
d8c40edc 6414X<sv_setuv_mg>
954c1994
GS
6415
6416Like C<sv_setuv>, but also handles 'set' magic.
6417
aad570aa 6418 void sv_setuv_mg(SV *const sv, const UV u)
954c1994 6419
497711e7
GS
6420=for hackers
6421Found in file sv.c
6422
451be7b1 6423=item sv_tainted
d8c40edc 6424X<sv_tainted>
451be7b1
DM
6425
6426Test an SV for taintedness. Use C<SvTAINTED> instead.
89e38212 6427 bool sv_tainted(SV *const sv)
451be7b1
DM
6428
6429=for hackers
6430Found in file sv.c
6431
c461cf8f 6432=item sv_true
d8c40edc 6433X<sv_true>
c461cf8f
JH
6434
6435Returns true if the SV has a true value by Perl's rules.
645c22ef
DM
6436Use the C<SvTRUE> macro instead, which may call C<sv_true()> or may
6437instead use an in-line version.
c461cf8f 6438
23f13727 6439 I32 sv_true(SV *const sv)
c461cf8f
JH
6440
6441=for hackers
6442Found in file sv.c
6443
6444=item sv_unmagic
d8c40edc 6445X<sv_unmagic>
c461cf8f 6446
645c22ef 6447Removes all magic of type C<type> from an SV.
c461cf8f 6448
2b021c53 6449 int sv_unmagic(SV *const sv, const int type)
c461cf8f
JH
6450
6451=for hackers
6452Found in file sv.c
6453
840a7b70 6454=item sv_unref_flags
d8c40edc 6455X<sv_unref_flags>
840a7b70
IZ
6456
6457Unsets the RV status of the SV, and decrements the reference count of
6458whatever was being referenced by the RV. This can almost be thought of
6459as a reversal of C<newSVrv>. The C<cflags> argument can contain
6460C<SV_IMMEDIATE_UNREF> to force the reference count to be decremented
6461(otherwise the decrementing is conditional on the reference count being
6462different from one or the reference being a readonly SV).
ae154d6d 6463See C<SvROK_off>.
840a7b70 6464
89e38212 6465 void sv_unref_flags(SV *const ref, const U32 flags)
840a7b70
IZ
6466
6467=for hackers
6468Found in file sv.c
6469
451be7b1 6470=item sv_untaint
d8c40edc 6471X<sv_untaint>
451be7b1
DM
6472
6473Untaint an SV. Use C<SvTAINTED_off> instead.
89e38212 6474 void sv_untaint(SV *const sv)
451be7b1
DM
6475
6476=for hackers
6477Found in file sv.c
6478
954c1994 6479=item sv_upgrade
d8c40edc 6480X<sv_upgrade>
954c1994 6481
ff276b08 6482Upgrade an SV to a more complex form. Generally adds a new body type to the
645c22ef 6483SV, then copies across as much information as possible from the old body.
ff276b08 6484You generally want to use the C<SvUPGRADE> macro wrapper. See also C<svtype>.
954c1994 6485
aad570aa 6486 void sv_upgrade(SV *const sv, svtype new_type)
954c1994 6487
497711e7
GS
6488=for hackers
6489Found in file sv.c
6490
fed01289
SP
6491=item sv_usepvn_flags
6492X<sv_usepvn_flags>
954c1994 6493
794a0d33
JH
6494Tells an SV to use C<ptr> to find its string value. Normally the
6495string is stored inside the SV but sv_usepvn allows the SV to use an
6496outside string. The C<ptr> should point to memory that was allocated
fed01289
SP
6497by C<malloc>. The string length, C<len>, must be supplied. By default
6498this function will realloc (i.e. move) the memory pointed to by C<ptr>,
794a0d33
JH
6499so that pointer should not be freed or used by the programmer after
6500giving it to sv_usepvn, and neither should any pointers from "behind"
fed01289 6501that pointer (e.g. ptr + 1) be used.
954c1994 6502
fed01289
SP
6503If C<flags> & SV_SMAGIC is true, will call SvSETMAGIC. If C<flags> &
6504SV_HAS_TRAILING_NUL is true, then C<ptr[len]> must be NUL, and the realloc
cbf82dd0 6505will be skipped. (i.e. the buffer is actually at least 1 byte longer than
fed01289 6506C<len>, and already meets the requirements for storing in C<SvPVX>)
954c1994 6507
2e000ff2 6508 void sv_usepvn_flags(SV *const sv, char* ptr, const STRLEN len, const U32 flags)
954c1994 6509
497711e7
GS
6510=for hackers
6511Found in file sv.c
6512
2457d041 6513=item sv_utf8_decode
d8c40edc 6514X<sv_utf8_decode>
2457d041 6515
78ea37eb
TS
6516If the PV of the SV is an octet sequence in UTF-8
6517and contains a multiple-byte character, the C<SvUTF8> flag is turned on
6518so that it looks like a character. If the PV contains only single-byte
6519characters, the C<SvUTF8> flag stays being off.
6520Scans PV for validity and returns false if the PV is invalid UTF-8.
2457d041
JH
6521
6522NOTE: this function is experimental and may change or be
6523removed without notice.
6524
7bc54cea 6525 bool sv_utf8_decode(SV *const sv)
2457d041
JH
6526
6527=for hackers
6528Found in file sv.c
6529
c461cf8f 6530=item sv_utf8_downgrade
d8c40edc 6531X<sv_utf8_downgrade>
c461cf8f 6532
78ea37eb 6533Attempts to convert the PV of an SV from characters to bytes.
2bbc8d55
SP
6534If the PV contains a character that cannot fit
6535in a byte, this conversion will fail;
78ea37eb 6536in this case, either returns false or, if C<fail_ok> is not
c461cf8f
JH
6537true, croaks.
6538
9ede5bc8
DM
6539This is not as a general purpose Unicode to byte encoding interface:
6540use the Encode extension for that.
6541
c461cf8f
JH
6542NOTE: this function is experimental and may change or be
6543removed without notice.
6544
7bc54cea 6545 bool sv_utf8_downgrade(SV *const sv, const bool fail_ok)
c461cf8f
JH
6546
6547=for hackers
6548Found in file sv.c
6549
6550=item sv_utf8_encode
d8c40edc 6551X<sv_utf8_encode>
c461cf8f 6552
78ea37eb
TS
6553Converts the PV of an SV to UTF-8, but then turns the C<SvUTF8>
6554flag off so that it looks like octets again.
c461cf8f 6555
7bc54cea 6556 void sv_utf8_encode(SV *const sv)
c461cf8f
JH
6557
6558=for hackers
6559Found in file sv.c
6560
6561=item sv_utf8_upgrade
d8c40edc 6562X<sv_utf8_upgrade>
c461cf8f 6563
78ea37eb 6564Converts the PV of an SV to its UTF-8-encoded form.
645c22ef 6565Forces the SV to string form if it is not already.
2bbc8d55 6566Will C<mg_get> on C<sv> if appropriate.
2457d041 6567Always sets the SvUTF8 flag to avoid future validity checks even
2bbc8d55
SP
6568if the whole string is the same in UTF-8 as not.
6569Returns the number of bytes in the converted string
c461cf8f 6570
9ede5bc8
DM
6571This is not as a general purpose byte encoding to Unicode interface:
6572use the Encode extension for that.
6573
2457d041 6574 STRLEN sv_utf8_upgrade(SV *sv)
c461cf8f
JH
6575
6576=for hackers
6577Found in file sv.c
6578
8d6d96c1 6579=item sv_utf8_upgrade_flags
d8c40edc 6580X<sv_utf8_upgrade_flags>
8d6d96c1 6581
78ea37eb 6582Converts the PV of an SV to its UTF-8-encoded form.
645c22ef 6583Forces the SV to string form if it is not already.
8d6d96c1 6584Always sets the SvUTF8 flag to avoid future validity checks even
2bbc8d55
SP
6585if all the bytes are invariant in UTF-8. If C<flags> has C<SV_GMAGIC> bit set,
6586will C<mg_get> on C<sv> if appropriate, else not.
6587Returns the number of bytes in the converted string
6588C<sv_utf8_upgrade> and
8d6d96c1
HS
6589C<sv_utf8_upgrade_nomg> are implemented in terms of this function.
6590
9ede5bc8
DM
6591This is not as a general purpose byte encoding to Unicode interface:
6592use the Encode extension for that.
6593
7bc54cea 6594 STRLEN sv_utf8_upgrade_flags(SV *const sv, const I32 flags)
8d6d96c1
HS
6595
6596=for hackers
6597Found in file sv.c
6598
f08e0584
RGS
6599=item sv_utf8_upgrade_nomg
6600X<sv_utf8_upgrade_nomg>
6601
6602Like sv_utf8_upgrade, but doesn't do magic on C<sv>
6603
6604 STRLEN sv_utf8_upgrade_nomg(SV *sv)
6605
6606=for hackers
6607Found in file sv.c
6608
bffc3d17 6609=item sv_vcatpvf
d8c40edc 6610X<sv_vcatpvf>
bffc3d17
SH
6611
6612Processes its arguments like C<vsprintf> and appends the formatted output
6613to an SV. Does not handle 'set' magic. See C<sv_vcatpvf_mg>.
6614
6615Usually used via its frontend C<sv_catpvf>.
6616
66ceb532 6617 void sv_vcatpvf(SV *const sv, const char *const pat, va_list *const args)
bffc3d17
SH
6618
6619=for hackers
6620Found in file sv.c
6621
954c1994 6622=item sv_vcatpvfn
d8c40edc 6623X<sv_vcatpvfn>
954c1994
GS
6624
6625Processes its arguments like C<vsprintf> and appends the formatted output
6626to an SV. Uses an array of SVs if the C style variable argument list is
6627missing (NULL). When running with taint checks enabled, indicates via
6628C<maybe_tainted> if results are untrustworthy (often due to the use of
6629locales).
6630
bffc3d17 6631Usually used via one of its frontends C<sv_vcatpvf> and C<sv_vcatpvf_mg>.
645c22ef 6632
66ceb532 6633 void sv_vcatpvfn(SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const I32 svmax, bool *const maybe_tainted)
954c1994 6634
497711e7
GS
6635=for hackers
6636Found in file sv.c
6637
bffc3d17 6638=item sv_vcatpvf_mg
d8c40edc 6639X<sv_vcatpvf_mg>
bffc3d17
SH
6640
6641Like C<sv_vcatpvf>, but also handles 'set' magic.
6642
6643Usually used via its frontend C<sv_catpvf_mg>.
6644
66ceb532 6645 void sv_vcatpvf_mg(SV *const sv, const char *const pat, va_list *const args)
bffc3d17
SH
6646
6647=for hackers
6648Found in file sv.c
6649
6650=item sv_vsetpvf
d8c40edc 6651X<sv_vsetpvf>
bffc3d17
SH
6652
6653Works like C<sv_vcatpvf> but copies the text into the SV instead of
6654appending it. Does not handle 'set' magic. See C<sv_vsetpvf_mg>.
6655
6656Usually used via its frontend C<sv_setpvf>.
6657
89e38212 6658 void sv_vsetpvf(SV *const sv, const char *const pat, va_list *const args)
bffc3d17
SH
6659
6660=for hackers
6661Found in file sv.c
6662
954c1994 6663=item sv_vsetpvfn
d8c40edc 6664X<sv_vsetpvfn>
954c1994 6665
bffc3d17 6666Works like C<sv_vcatpvfn> but copies the text into the SV instead of
954c1994
GS
6667appending it.
6668
bffc3d17 6669Usually used via one of its frontends C<sv_vsetpvf> and C<sv_vsetpvf_mg>.
645c22ef 6670
66ceb532 6671 void sv_vsetpvfn(SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const I32 svmax, bool *const maybe_tainted)
954c1994 6672
497711e7 6673=for hackers
94bdecf9
JH
6674Found in file sv.c
6675
bffc3d17 6676=item sv_vsetpvf_mg
d8c40edc 6677X<sv_vsetpvf_mg>
bffc3d17
SH
6678
6679Like C<sv_vsetpvf>, but also handles 'set' magic.
6680
6681Usually used via its frontend C<sv_setpvf_mg>.
6682
89e38212 6683 void sv_vsetpvf_mg(SV *const sv, const char *const pat, va_list *const args)
bffc3d17
SH
6684
6685=for hackers
6686Found in file sv.c
6687
94bdecf9
JH
6688
6689=back
6690
6691=head1 Unicode Support
6692
6693=over 8
6694
6695=item bytes_from_utf8
d8c40edc 6696X<bytes_from_utf8>
94bdecf9 6697
2bbc8d55 6698Converts a string C<s> of length C<len> from UTF-8 into native byte encoding.
35a4481c 6699Unlike C<utf8_to_bytes> but like C<bytes_to_utf8>, returns a pointer to
94bdecf9
JH
6700the newly-created string, and updates C<len> to contain the new
6701length. Returns the original string if no conversion occurs, C<len>
6702is unchanged. Do nothing if C<is_utf8> points to 0. Sets C<is_utf8> to
2bbc8d55
SP
67030 if C<s> is converted or consisted entirely of characters that are invariant
6704in utf8 (i.e., US-ASCII on non-EBCDIC machines).
94bdecf9
JH
6705
6706NOTE: this function is experimental and may change or be
6707removed without notice.
6708
e1ec3a88 6709 U8* bytes_from_utf8(const U8 *s, STRLEN *len, bool *is_utf8)
94bdecf9
JH
6710
6711=for hackers
6712Found in file utf8.c
6713
6714=item bytes_to_utf8
d8c40edc 6715X<bytes_to_utf8>
94bdecf9 6716
2bbc8d55 6717Converts a string C<s> of length C<len> from the native encoding into UTF-8.
94bdecf9
JH
6718Returns a pointer to the newly-created string, and sets C<len> to
6719reflect the new length.
6720
2bbc8d55
SP
6721A NUL character will be written after the end of the string.
6722
6723If you want to convert to UTF-8 from encodings other than
6724the native (Latin1 or EBCDIC),
bd5cf849
HS
6725see sv_recode_to_utf8().
6726
94bdecf9
JH
6727NOTE: this function is experimental and may change or be
6728removed without notice.
6729
35a4481c 6730 U8* bytes_to_utf8(const U8 *s, STRLEN *len)
94bdecf9
JH
6731
6732=for hackers
6733Found in file utf8.c
6734
6735=item ibcmp_utf8
d8c40edc 6736X<ibcmp_utf8>
94bdecf9
JH
6737
6738Return true if the strings s1 and s2 differ case-insensitively, false
6739if not (if they are equal case-insensitively). If u1 is true, the
6740string s1 is assumed to be in UTF-8-encoded Unicode. If u2 is true,
6741the string s2 is assumed to be in UTF-8-encoded Unicode. If u1 or u2
6742are false, the respective string is assumed to be in native 8-bit
6743encoding.
6744
6745If the pe1 and pe2 are non-NULL, the scanning pointers will be copied
6746in there (they will point at the beginning of the I<next> character).
6747If the pointers behind pe1 or pe2 are non-NULL, they are the end
6748pointers beyond which scanning will not continue under any
fa11829f 6749circumstances. If the byte lengths l1 and l2 are non-zero, s1+l1 and
94bdecf9
JH
6750s2+l2 will be used as goal end pointers that will also stop the scan,
6751and which qualify towards defining a successful match: all the scans
6752that define an explicit length must reach their goal pointers for
6753a match to succeed).
6754
6755For case-insensitiveness, the "casefolding" of Unicode is used
6756instead of upper/lowercasing both the characters, see
6757http://www.unicode.org/unicode/reports/tr21/ (Case Mappings).
6758
4048f010 6759 I32 ibcmp_utf8(const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2)
94bdecf9
JH
6760
6761=for hackers
6762Found in file utf8.c
6763
6764=item is_utf8_char
d8c40edc 6765X<is_utf8_char>
94bdecf9
JH
6766
6767Tests if some arbitrary number of bytes begins in a valid UTF-8
2bbc8d55
SP
6768character. Note that an INVARIANT (i.e. ASCII on non-EBCDIC machines)
6769character is a valid UTF-8 character. The actual number of bytes in the UTF-8
6770character will be returned if it is valid, otherwise 0.
94bdecf9 6771
4048f010 6772 STRLEN is_utf8_char(const U8 *s)
94bdecf9
JH
6773
6774=for hackers
6775Found in file utf8.c
6776
6777=item is_utf8_string
d8c40edc 6778X<is_utf8_string>
94bdecf9 6779
bd5cf849 6780Returns true if first C<len> bytes of the given string form a valid
1e54db1a
JH
6781UTF-8 string, false otherwise. Note that 'a valid UTF-8 string' does
6782not mean 'a string that contains code points above 0x7F encoded in UTF-8'
6783because a valid ASCII string is a valid UTF-8 string.
94bdecf9 6784
768c67ee
JH
6785See also is_utf8_string_loclen() and is_utf8_string_loc().
6786
7fc63493 6787 bool is_utf8_string(const U8 *s, STRLEN len)
94bdecf9
JH
6788
6789=for hackers
6790Found in file utf8.c
497711e7 6791
72d6ef7d 6792=item is_utf8_string_loc
d8c40edc 6793X<is_utf8_string_loc>
72d6ef7d 6794
9244d4ad 6795Like is_utf8_string() but stores the location of the failure (in the
768c67ee
JH
6796case of "utf8ness failure") or the location s+len (in the case of
6797"utf8ness success") in the C<ep>.
6798
6799See also is_utf8_string_loclen() and is_utf8_string().
72d6ef7d 6800
7fc63493 6801 bool is_utf8_string_loc(const U8 *s, STRLEN len, const U8 **p)
72d6ef7d
JH
6802
6803=for hackers
6804Found in file utf8.c
6805
768c67ee 6806=item is_utf8_string_loclen
d8c40edc 6807X<is_utf8_string_loclen>
768c67ee 6808
9244d4ad 6809Like is_utf8_string() but stores the location of the failure (in the
768c67ee
JH
6810case of "utf8ness failure") or the location s+len (in the case of
6811"utf8ness success") in the C<ep>, and the number of UTF-8
6812encoded characters in the C<el>.
6813
6814See also is_utf8_string_loc() and is_utf8_string().
6815
6816 bool is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el)
6817
6818=for hackers
6819Found in file utf8.c
6820
94bdecf9 6821=item pv_uni_display
d8c40edc 6822X<pv_uni_display>
954c1994 6823
94bdecf9
JH
6824Build to the scalar dsv a displayable version of the string spv,
6825length len, the displayable version being at most pvlim bytes long
6826(if longer, the rest is truncated and "..." will be appended).
0a2ef054
JH
6827
6828The flags argument can have UNI_DISPLAY_ISPRINT set to display
a4f1a029 6829isPRINT()able characters as themselves, UNI_DISPLAY_BACKSLASH
0a2ef054
JH
6830to display the \\[nrfta\\] as the backslashed versions (like '\n')
6831(UNI_DISPLAY_BACKSLASH is preferred over UNI_DISPLAY_ISPRINT for \\).
6832UNI_DISPLAY_QQ (and its alias UNI_DISPLAY_REGEX) have both
6833UNI_DISPLAY_BACKSLASH and UNI_DISPLAY_ISPRINT turned on.
6834
94bdecf9 6835The pointer to the PV of the dsv is returned.
954c1994 6836
e1ec3a88 6837 char* pv_uni_display(SV *dsv, const U8 *spv, STRLEN len, STRLEN pvlim, UV flags)
954c1994 6838
497711e7 6839=for hackers
94bdecf9 6840Found in file utf8.c
497711e7 6841
220e2d4e 6842=item sv_cat_decode
d8c40edc 6843X<sv_cat_decode>
220e2d4e
IH
6844
6845The encoding is assumed to be an Encode object, the PV of the ssv is
6846assumed to be octets in that encoding and decoding the input starts
6847from the position which (PV + *offset) pointed to. The dsv will be
6848concatenated the decoded UTF-8 string from ssv. Decoding will terminate
6849when the string tstr appears in decoding output or the input ends on
6850the PV of the ssv. The value which the offset points will be modified
6851to the last input position on the ssv.
6852
6853Returns TRUE if the terminator was found, else returns FALSE.
6854
6855 bool sv_cat_decode(SV* dsv, SV *encoding, SV *ssv, int *offset, char* tstr, int tlen)
6856
6857=for hackers
6858Found in file sv.c
6859
94bdecf9 6860=item sv_recode_to_utf8
d8c40edc 6861X<sv_recode_to_utf8>
954c1994 6862
94bdecf9
JH
6863The encoding is assumed to be an Encode object, on entry the PV
6864of the sv is assumed to be octets in that encoding, and the sv
6865will be converted into Unicode (and UTF-8).
954c1994 6866
94bdecf9
JH
6867If the sv already is UTF-8 (or if it is not POK), or if the encoding
6868is not a reference, nothing is done to the sv. If the encoding is not
6869an C<Encode::XS> Encoding object, bad things will happen.
6870(See F<lib/encoding.pm> and L<Encode>).
6871
6872The PV of the sv is returned.
6873
6874 char* sv_recode_to_utf8(SV* sv, SV *encoding)
954c1994 6875
497711e7 6876=for hackers
94bdecf9 6877Found in file sv.c
497711e7 6878
94bdecf9 6879=item sv_uni_display
d8c40edc 6880X<sv_uni_display>
954c1994 6881
94bdecf9 6882Build to the scalar dsv a displayable version of the scalar sv,
0a2ef054 6883the displayable version being at most pvlim bytes long
94bdecf9 6884(if longer, the rest is truncated and "..." will be appended).
0a2ef054
JH
6885
6886The flags argument is as in pv_uni_display().
6887
94bdecf9 6888The pointer to the PV of the dsv is returned.
954c1994 6889
94bdecf9 6890 char* sv_uni_display(SV *dsv, SV *ssv, STRLEN pvlim, UV flags)
954c1994 6891
497711e7 6892=for hackers
94bdecf9 6893Found in file utf8.c
497711e7 6894
6b5c0936 6895=item to_utf8_case
d8c40edc 6896X<to_utf8_case>
6b5c0936
JH
6897
6898The "p" contains the pointer to the UTF-8 string encoding
6899the character that is being converted.
6900
6901The "ustrp" is a pointer to the character buffer to put the
6902conversion result to. The "lenp" is a pointer to the length
6903of the result.
6904
12b7c5c7 6905The "swashp" is a pointer to the swash to use.
6b5c0936 6906
12b7c5c7 6907Both the special and normal mappings are stored lib/unicore/To/Foo.pl,
979f2922 6908and loaded by SWASHNEW, using lib/utf8_heavy.pl. The special (usually,
12b7c5c7
JH
6909but not always, a multicharacter mapping), is tried first.
6910
6911The "special" is a string like "utf8::ToSpecLower", which means the
6912hash %utf8::ToSpecLower. The access to the hash is through
6913Perl_to_utf8_case().
6b5c0936 6914
12b7c5c7
JH
6915The "normal" is a string like "ToLower" which means the swash
6916%utf8::ToLower.
6b5c0936 6917
9a957fbc 6918 UV to_utf8_case(const U8 *p, U8* ustrp, STRLEN *lenp, SV **swashp, const char *normal, const char *special)
6b5c0936
JH
6919
6920=for hackers
6921Found in file utf8.c
6922
d3e79532 6923=item to_utf8_fold
d8c40edc 6924X<to_utf8_fold>
d3e79532
JH
6925
6926Convert the UTF-8 encoded character at p to its foldcase version and
6927store that in UTF-8 in ustrp and its length in bytes in lenp. Note
59887a99 6928that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the
d3e79532
JH
6929foldcase version may be longer than the original character (up to
6930three characters).
6931
6932The first character of the foldcased version is returned
6933(but note, as explained above, that there may be more.)
6934
7fc63493 6935 UV to_utf8_fold(const U8 *p, U8* ustrp, STRLEN *lenp)
d3e79532
JH
6936
6937=for hackers
6938Found in file utf8.c
6939
6940=item to_utf8_lower
d8c40edc 6941X<to_utf8_lower>
d3e79532
JH
6942
6943Convert the UTF-8 encoded character at p to its lowercase version and
6944store that in UTF-8 in ustrp and its length in bytes in lenp. Note
59887a99
MHM
6945that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the
6946lowercase version may be longer than the original character.
d3e79532
JH
6947
6948The first character of the lowercased version is returned
6949(but note, as explained above, that there may be more.)
6950
7fc63493 6951 UV to_utf8_lower(const U8 *p, U8* ustrp, STRLEN *lenp)
d3e79532
JH
6952
6953=for hackers
6954Found in file utf8.c
6955
6956=item to_utf8_title
d8c40edc 6957X<to_utf8_title>
d3e79532
JH
6958
6959Convert the UTF-8 encoded character at p to its titlecase version and
6960store that in UTF-8 in ustrp and its length in bytes in lenp. Note
59887a99
MHM
6961that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the
6962titlecase version may be longer than the original character.
d3e79532
JH
6963
6964The first character of the titlecased version is returned
6965(but note, as explained above, that there may be more.)
6966
7fc63493 6967 UV to_utf8_title(const U8 *p, U8* ustrp, STRLEN *lenp)
d3e79532
JH
6968
6969=for hackers
6970Found in file utf8.c
6971
6972=item to_utf8_upper
d8c40edc 6973X<to_utf8_upper>
d3e79532
JH
6974
6975Convert the UTF-8 encoded character at p to its uppercase version and
6976store that in UTF-8 in ustrp and its length in bytes in lenp. Note
59887a99
MHM
6977that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since
6978the uppercase version may be longer than the original character.
d3e79532
JH
6979
6980The first character of the uppercased version is returned
6981(but note, as explained above, that there may be more.)
6982
7fc63493 6983 UV to_utf8_upper(const U8 *p, U8* ustrp, STRLEN *lenp)
d3e79532
JH
6984
6985=for hackers
6986Found in file utf8.c
6987
cd299c6e
RGS
6988=item utf8n_to_uvchr
6989X<utf8n_to_uvchr>
6990
6991flags
6992
6993Returns the native character value of the first character in the string
6994C<s>
6995which is assumed to be in UTF-8 encoding; C<retlen> will be set to the
6996length, in bytes, of that character.
6997
6998Allows length and flags to be passed to low level routine.
6999
7000 UV utf8n_to_uvchr(const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
7001
7002=for hackers
7003Found in file utf8.c
7004
282f25c9 7005=item utf8n_to_uvuni
d8c40edc 7006X<utf8n_to_uvuni>
282f25c9
JH
7007
7008Bottom level UTF-8 decode routine.
38a44b82 7009Returns the Unicode code point value of the first character in the string C<s>
1e54db1a 7010which is assumed to be in UTF-8 encoding and no longer than C<curlen>;
282f25c9
JH
7011C<retlen> will be set to the length, in bytes, of that character.
7012
1e54db1a 7013If C<s> does not point to a well-formed UTF-8 character, the behaviour
282f25c9
JH
7014is dependent on the value of C<flags>: if it contains UTF8_CHECK_ONLY,
7015it is assumed that the caller will raise a warning, and this function
7016will silently just set C<retlen> to C<-1> and return zero. If the
7017C<flags> does not contain UTF8_CHECK_ONLY, warnings about
7018malformations will be given, C<retlen> will be set to the expected
7019length of the UTF-8 character in bytes, and zero will be returned.
7020
7021The C<flags> can also contain various flags to allow deviations from
7022the strict UTF-8 encoding (see F<utf8.h>).
7023
7024Most code should use utf8_to_uvchr() rather than call this directly.
7025
9a957fbc 7026 UV utf8n_to_uvuni(const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
282f25c9
JH
7027
7028=for hackers
7029Found in file utf8.c
7030
b06226ff 7031=item utf8_distance
d8c40edc 7032X<utf8_distance>
b06226ff 7033
1e54db1a 7034Returns the number of UTF-8 characters between the UTF-8 pointers C<a>
b06226ff
JH
7035and C<b>.
7036
7037WARNING: use only if you *know* that the pointers point inside the
7038same UTF-8 buffer.
7039
35a4481c 7040 IV utf8_distance(const U8 *a, const U8 *b)
b06226ff
JH
7041
7042=for hackers
7043Found in file utf8.c
7044
7045=item utf8_hop
d8c40edc 7046X<utf8_hop>
b06226ff 7047
8850bf83
JH
7048Return the UTF-8 pointer C<s> displaced by C<off> characters, either
7049forward or backward.
b06226ff
JH
7050
7051WARNING: do not use the following unless you *know* C<off> is within
8850bf83
JH
7052the UTF-8 data pointed to by C<s> *and* that on entry C<s> is aligned
7053on the first byte of character or just after the last byte of a character.
b06226ff 7054
4373e329 7055 U8* utf8_hop(const U8 *s, I32 off)
b06226ff
JH
7056
7057=for hackers
7058Found in file utf8.c
7059
7060=item utf8_length
d8c40edc 7061X<utf8_length>
b06226ff
JH
7062
7063Return the length of the UTF-8 char encoded string C<s> in characters.
7064Stops at C<e> (inclusive). If C<e E<lt> s> or if the scan would end
7065up past C<e>, croaks.
7066
35a4481c 7067 STRLEN utf8_length(const U8* s, const U8 *e)
b06226ff
JH
7068
7069=for hackers
7070Found in file utf8.c
7071
497711e7 7072=item utf8_to_bytes
d8c40edc 7073X<utf8_to_bytes>
497711e7 7074
2bbc8d55 7075Converts a string C<s> of length C<len> from UTF-8 into native byte encoding.
246fae53
MG
7076Unlike C<bytes_to_utf8>, this over-writes the original string, and
7077updates len to contain the new length.
67e989fb 7078Returns zero on failure, setting C<len> to -1.
497711e7 7079
95be277c
NC
7080If you need a copy of the string, see C<bytes_from_utf8>.
7081
eebe1485
SC
7082NOTE: this function is experimental and may change or be
7083removed without notice.
7084
7085 U8* utf8_to_bytes(U8 *s, STRLEN *len)
497711e7
GS
7086
7087=for hackers
7088Found in file utf8.c
7089
282f25c9 7090=item utf8_to_uvchr
d8c40edc 7091X<utf8_to_uvchr>
b6b716fe 7092
282f25c9 7093Returns the native character value of the first character in the string C<s>
1e54db1a 7094which is assumed to be in UTF-8 encoding; C<retlen> will be set to the
282f25c9 7095length, in bytes, of that character.
28d3d195 7096
1e54db1a 7097If C<s> does not point to a well-formed UTF-8 character, zero is
282f25c9 7098returned and retlen is set, if possible, to -1.
444155da 7099
9a957fbc 7100 UV utf8_to_uvchr(const U8 *s, STRLEN *retlen)
444155da
JH
7101
7102=for hackers
7103Found in file utf8.c
7104
282f25c9 7105=item utf8_to_uvuni
d8c40edc 7106X<utf8_to_uvuni>
444155da 7107
282f25c9 7108Returns the Unicode code point of the first character in the string C<s>
1e54db1a 7109which is assumed to be in UTF-8 encoding; C<retlen> will be set to the
1aa99e6b 7110length, in bytes, of that character.
444155da 7111
2bbc8d55 7112This function should only be used when the returned UV is considered
282f25c9
JH
7113an index into the Unicode semantic tables (e.g. swashes).
7114
1e54db1a 7115If C<s> does not point to a well-formed UTF-8 character, zero is
dcad2880 7116returned and retlen is set, if possible, to -1.
b6b716fe 7117
9a957fbc 7118 UV utf8_to_uvuni(const U8 *s, STRLEN *retlen)
282f25c9
JH
7119
7120=for hackers
7121Found in file utf8.c
7122
cd299c6e
RGS
7123=item uvchr_to_utf8
7124X<uvchr_to_utf8>
7125
7126Adds the UTF-8 representation of the Native codepoint C<uv> to the end
7127of the string C<d>; C<d> should be have at least C<UTF8_MAXBYTES+1> free
7128bytes available. The return value is the pointer to the byte after the
7129end of the new character. In other words,
7130
7131 d = uvchr_to_utf8(d, uv);
7132
7133is the recommended wide native character-aware way of saying
7134
7135 *(d++) = uv;
7136
7137 U8* uvchr_to_utf8(U8 *d, UV uv)
7138
7139=for hackers
7140Found in file utf8.c
7141
b851fbc1 7142=item uvuni_to_utf8_flags
d8c40edc 7143X<uvuni_to_utf8_flags>
eebe1485 7144
1e54db1a 7145Adds the UTF-8 representation of the Unicode codepoint C<uv> to the end
59887a99 7146of the string C<d>; C<d> should be have at least C<UTF8_MAXBYTES+1> free
eebe1485 7147bytes available. The return value is the pointer to the byte after the
282f25c9 7148end of the new character. In other words,
eebe1485 7149
b851fbc1
JH
7150 d = uvuni_to_utf8_flags(d, uv, flags);
7151
7152or, in most cases,
7153
282f25c9 7154 d = uvuni_to_utf8(d, uv);
eebe1485 7155
b851fbc1
JH
7156(which is equivalent to)
7157
7158 d = uvuni_to_utf8_flags(d, uv, 0);
7159
eebe1485
SC
7160is the recommended Unicode-aware way of saying
7161
7162 *(d++) = uv;
7163
b851fbc1 7164 U8* uvuni_to_utf8_flags(U8 *d, UV uv, UV flags)
b6b716fe
SC
7165
7166=for hackers
7167Found in file utf8.c
7168
497711e7 7169
94bdecf9 7170=back
954c1994 7171
94bdecf9 7172=head1 Variables created by C<xsubpp> and C<xsubpp> internal functions
954c1994 7173
94bdecf9 7174=over 8
954c1994 7175
94bdecf9 7176=item ax
d8c40edc 7177X<ax>
497711e7 7178
94bdecf9
JH
7179Variable which is setup by C<xsubpp> to indicate the stack base offset,
7180used by the C<ST>, C<XSprePUSH> and C<XSRETURN> macros. The C<dMARK> macro
7181must be called prior to setup the C<MARK> variable.
954c1994 7182
94bdecf9 7183 I32 ax
954c1994 7184
497711e7
GS
7185=for hackers
7186Found in file XSUB.h
7187
94bdecf9 7188=item CLASS
d8c40edc 7189X<CLASS>
954c1994 7190
94bdecf9
JH
7191Variable which is setup by C<xsubpp> to indicate the
7192class name for a C++ XS constructor. This is always a C<char*>. See C<THIS>.
954c1994 7193
94bdecf9 7194 char* CLASS
954c1994 7195
497711e7
GS
7196=for hackers
7197Found in file XSUB.h
7198
94bdecf9 7199=item dAX
d8c40edc 7200X<dAX>
954c1994 7201
94bdecf9
JH
7202Sets up the C<ax> variable.
7203This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
954c1994 7204
94bdecf9 7205 dAX;
954c1994 7206
497711e7
GS
7207=for hackers
7208Found in file XSUB.h
7209
557b887a 7210=item dAXMARK
d8c40edc 7211X<dAXMARK>
557b887a
SS
7212
7213Sets up the C<ax> variable and stack marker variable C<mark>.
7214This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
7215
7216 dAXMARK;
7217
7218=for hackers
7219Found in file XSUB.h
7220
94bdecf9 7221=item dITEMS
d8c40edc 7222X<dITEMS>
954c1994 7223
94bdecf9
JH
7224Sets up the C<items> variable.
7225This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
954c1994 7226
94bdecf9 7227 dITEMS;
954c1994 7228
497711e7
GS
7229=for hackers
7230Found in file XSUB.h
7231
88037a85 7232=item dUNDERBAR
d8c40edc 7233X<dUNDERBAR>
88037a85
RGS
7234
7235Sets up the C<padoff_du> variable for an XSUB that wishes to use
7236C<UNDERBAR>.
7237
7238 dUNDERBAR;
7239
7240=for hackers
7241Found in file XSUB.h
7242
94bdecf9 7243=item dXSARGS
d8c40edc 7244X<dXSARGS>
954c1994 7245
94bdecf9
JH
7246Sets up stack and mark pointers for an XSUB, calling dSP and dMARK.
7247Sets up the C<ax> and C<items> variables by calling C<dAX> and C<dITEMS>.
7248This is usually handled automatically by C<xsubpp>.
954c1994 7249
94bdecf9 7250 dXSARGS;
954c1994 7251
497711e7
GS
7252=for hackers
7253Found in file XSUB.h
7254
94bdecf9 7255=item dXSI32
d8c40edc 7256X<dXSI32>
954c1994 7257
94bdecf9
JH
7258Sets up the C<ix> variable for an XSUB which has aliases. This is usually
7259handled automatically by C<xsubpp>.
954c1994 7260
94bdecf9 7261 dXSI32;
954c1994 7262
497711e7
GS
7263=for hackers
7264Found in file XSUB.h
7265
94bdecf9 7266=item items
d8c40edc 7267X<items>
954c1994 7268
94bdecf9
JH
7269Variable which is setup by C<xsubpp> to indicate the number of
7270items on the stack. See L<perlxs/"Variable-length Parameter Lists">.
954c1994 7271
94bdecf9 7272 I32 items
954c1994 7273
497711e7
GS
7274=for hackers
7275Found in file XSUB.h
7276
94bdecf9 7277=item ix
d8c40edc 7278X<ix>
954c1994 7279
94bdecf9
JH
7280Variable which is setup by C<xsubpp> to indicate which of an
7281XSUB's aliases was used to invoke it. See L<perlxs/"The ALIAS: Keyword">.
954c1994 7282
94bdecf9 7283 I32 ix
954c1994 7284
497711e7
GS
7285=for hackers
7286Found in file XSUB.h
7287
94bdecf9 7288=item newXSproto
d8c40edc 7289X<newXSproto>
954c1994 7290
94bdecf9
JH
7291Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to
7292the subs.
954c1994 7293
497711e7
GS
7294=for hackers
7295Found in file XSUB.h
7296
94bdecf9 7297=item RETVAL
d8c40edc 7298X<RETVAL>
954c1994 7299
94bdecf9
JH
7300Variable which is setup by C<xsubpp> to hold the return value for an
7301XSUB. This is always the proper type for the XSUB. See
7302L<perlxs/"The RETVAL Variable">.
954c1994 7303
94bdecf9 7304 (whatever) RETVAL
954c1994 7305
497711e7
GS
7306=for hackers
7307Found in file XSUB.h
7308
94bdecf9 7309=item ST
d8c40edc 7310X<ST>
954c1994 7311
94bdecf9 7312Used to access elements on the XSUB's stack.
954c1994 7313
94bdecf9 7314 SV* ST(int ix)
954c1994 7315
497711e7
GS
7316=for hackers
7317Found in file XSUB.h
7318
94bdecf9 7319=item THIS
d8c40edc 7320X<THIS>
954c1994 7321
94bdecf9
JH
7322Variable which is setup by C<xsubpp> to designate the object in a C++
7323XSUB. This is always the proper type for the C++ object. See C<CLASS> and
7324L<perlxs/"Using XS With C++">.
954c1994 7325
94bdecf9 7326 (whatever) THIS
954c1994 7327
497711e7
GS
7328=for hackers
7329Found in file XSUB.h
7330
88037a85 7331=item UNDERBAR
d8c40edc 7332X<UNDERBAR>
88037a85
RGS
7333
7334The SV* corresponding to the $_ variable. Works even if there
7335is a lexical $_ in scope.
7336
7337=for hackers
7338Found in file XSUB.h
7339
94bdecf9 7340=item XS
d8c40edc 7341X<XS>
954c1994 7342
94bdecf9
JH
7343Macro to declare an XSUB and its C parameter list. This is handled by
7344C<xsubpp>.
954c1994 7345
497711e7
GS
7346=for hackers
7347Found in file XSUB.h
7348
954c1994 7349=item XS_VERSION
d8c40edc 7350X<XS_VERSION>
954c1994
GS
7351
7352The version identifier for an XS module. This is usually
7353handled automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>.
7354
497711e7
GS
7355=for hackers
7356Found in file XSUB.h
7357
954c1994 7358=item XS_VERSION_BOOTCHECK
d8c40edc 7359X<XS_VERSION_BOOTCHECK>
954c1994
GS
7360
7361Macro to verify that a PM module's $VERSION variable matches the XS
7362module's C<XS_VERSION> variable. This is usually handled automatically by
7363C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">.
7364
7365 XS_VERSION_BOOTCHECK;
7366
497711e7
GS
7367=for hackers
7368Found in file XSUB.h
7369
954c1994 7370
94bdecf9 7371=back
954c1994 7372
94bdecf9
JH
7373=head1 Warning and Dieing
7374
7375=over 8
7376
7377=item croak
d8c40edc 7378X<croak>
94bdecf9
JH
7379
7380This is the XSUB-writer's interface to Perl's C<die> function.
966353fd
MF
7381Normally call this function the same way you call the C C<printf>
7382function. Calling C<croak> returns control directly to Perl,
7383sidestepping the normal C order of execution. See C<warn>.
94bdecf9
JH
7384
7385If you want to throw an exception object, assign the object to
bd61b366 7386C<$@> and then pass C<NULL> to croak():
94bdecf9 7387
64ace3f8 7388 errsv = get_sv("@", GV_ADD);
94bdecf9 7389 sv_setsv(errsv, exception_object);
bd61b366 7390 croak(NULL);
94bdecf9
JH
7391
7392 void croak(const char* pat, ...)
954c1994 7393
497711e7 7394=for hackers
94bdecf9
JH
7395Found in file util.c
7396
7397=item warn
d8c40edc 7398X<warn>
94bdecf9 7399
966353fd
MF
7400This is the XSUB-writer's interface to Perl's C<warn> function. Call this
7401function the same way you call the C C<printf> function. See C<croak>.
94bdecf9
JH
7402
7403 void warn(const char* pat, ...)
7404
7405=for hackers
7406Found in file util.c
7407
497711e7 7408
954c1994
GS
7409=back
7410
7411=head1 AUTHORS
7412
7413Until May 1997, this document was maintained by Jeff Okamoto
7414<okamoto@corp.hp.com>. It is now maintained as part of Perl itself.
7415
7416With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
7417Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
7418Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
7419Stephen McCamant, and Gurusamy Sarathy.
7420
7421API Listing originally by Dean Roehrich <roehrich@cray.com>.
7422
7423Updated to be autogenerated from comments in the source by Benjamin Stuhl.
7424
7425=head1 SEE ALSO
7426
7427perlguts(1), perlxs(1), perlxstut(1), perlintern(1)
7428
e0492643
NC
7429=cut
7430
3f98fbb3 7431 ex: set ro: