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