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