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