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