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