This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: The coderef in @INC strikes back
[perl5.git] / pod / perlapi.pod
CommitLineData
954c1994
GS
1=head1 NAME
2
3perlapi - autogenerated documentation for the perl public API
4
5=head1 DESCRIPTION
6
1c846c1f
NIS
7This file contains the documentation of the perl public API generated by
8embed.pl, specifically a listing of functions, macros, flags, and variables
9that may be used by extension writers. The interfaces of any functions that
954c1994
GS
10are not listed here are subject to change without notice. For this reason,
11blindly using functions listed in proto.h is to be avoided when writing
12extensions.
13
14Note that all Perl API global variables must be referenced with the C<PL_>
15prefix. Some macros are provided for compatibility with the older,
16unadorned names, but this support may be disabled in a future release.
17
18The listing is alphabetical, case insensitive.
19
20=over 8
21
22=item AvFILL
23
24Same as C<av_len()>. Deprecated, use C<av_len()> instead.
25
26 int AvFILL(AV* av)
27
497711e7
GS
28=for hackers
29Found in file av.h
30
954c1994
GS
31=item av_clear
32
33Clears an array, making it empty. Does not free the memory used by the
34array itself.
35
36 void av_clear(AV* ar)
37
497711e7
GS
38=for hackers
39Found in file av.c
40
f3b76584
SC
41=item av_delete
42
43Deletes the element indexed by C<key> from the array. Returns the
44deleted element. C<flags> is currently ignored.
45
46 SV* av_delete(AV* ar, I32 key, I32 flags)
47
48=for hackers
49Found in file av.c
50
51=item av_exists
52
53Returns true if the element indexed by C<key> has been initialized.
54
55This relies on the fact that uninitialized array elements are set to
56C<&PL_sv_undef>.
57
58 bool av_exists(AV* ar, I32 key)
59
60=for hackers
61Found in file av.c
62
954c1994
GS
63=item av_extend
64
65Pre-extend an array. The C<key> is the index to which the array should be
66extended.
67
68 void av_extend(AV* ar, I32 key)
69
497711e7
GS
70=for hackers
71Found in file av.c
72
954c1994
GS
73=item av_fetch
74
75Returns the SV at the specified index in the array. The C<key> is the
76index. If C<lval> is set then the fetch will be part of a store. Check
77that the return value is non-null before dereferencing it to a C<SV*>.
78
96f1132b
GS
79See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for
80more information on how to use this function on tied arrays.
954c1994
GS
81
82 SV** av_fetch(AV* ar, I32 key, I32 lval)
83
497711e7
GS
84=for hackers
85Found in file av.c
86
f3b76584
SC
87=item av_fill
88
89Ensure than an array has a given number of elements, equivalent to
90Perl's C<$#array = $fill;>.
91
92 void av_fill(AV* ar, I32 fill)
93
94=for hackers
95Found in file av.c
96
954c1994
GS
97=item av_len
98
99Returns the highest index in the array. Returns -1 if the array is
100empty.
101
102 I32 av_len(AV* ar)
103
497711e7
GS
104=for hackers
105Found in file av.c
106
954c1994
GS
107=item av_make
108
109Creates a new AV and populates it with a list of SVs. The SVs are copied
110into the array, so they may be freed after the call to av_make. The new AV
111will have a reference count of 1.
112
113 AV* av_make(I32 size, SV** svp)
114
497711e7
GS
115=for hackers
116Found in file av.c
117
954c1994
GS
118=item av_pop
119
120Pops an SV off the end of the array. Returns C<&PL_sv_undef> if the array
121is empty.
122
123 SV* av_pop(AV* ar)
124
497711e7
GS
125=for hackers
126Found in file av.c
127
954c1994
GS
128=item av_push
129
130Pushes an SV onto the end of the array. The array will grow automatically
131to accommodate the addition.
132
133 void av_push(AV* ar, SV* val)
134
497711e7
GS
135=for hackers
136Found in file av.c
137
954c1994
GS
138=item av_shift
139
140Shifts an SV off the beginning of the array.
141
142 SV* av_shift(AV* ar)
143
497711e7
GS
144=for hackers
145Found in file av.c
146
954c1994
GS
147=item av_store
148
149Stores an SV in an array. The array index is specified as C<key>. The
150return value will be NULL if the operation failed or if the value did not
151need to be actually stored within the array (as in the case of tied
152arrays). Otherwise it can be dereferenced to get the original C<SV*>. Note
153that the caller is responsible for suitably incrementing the reference
154count of C<val> before the call, and decrementing it if the function
155returned NULL.
156
96f1132b 157See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for
954c1994
GS
158more information on how to use this function on tied arrays.
159
160 SV** av_store(AV* ar, I32 key, SV* val)
161
497711e7
GS
162=for hackers
163Found in file av.c
164
954c1994
GS
165=item av_undef
166
167Undefines the array. Frees the memory used by the array itself.
168
169 void av_undef(AV* ar)
170
497711e7
GS
171=for hackers
172Found in file av.c
173
954c1994
GS
174=item av_unshift
175
176Unshift the given number of C<undef> values onto the beginning of the
177array. The array will grow automatically to accommodate the addition. You
178must then use C<av_store> to assign values to these new elements.
179
180 void av_unshift(AV* ar, I32 num)
181
497711e7
GS
182=for hackers
183Found in file av.c
184
9f2ea798
DM
185=item ax
186
187Variable which is setup by C<xsubpp> to indicate the stack base offset,
188used by the C<ST>, C<XSprePUSH> and C<XSRETURN> macros. The C<dMARK> macro
189must be called prior to setup the C<MARK> variable.
190
191 I32 ax
192
193=for hackers
194Found in file XSUB.h
195
f9a63242
JH
196=item bytes_from_utf8
197
198Converts a string C<s> of length C<len> from UTF8 into byte encoding.
199Unlike <utf8_to_bytes> but like C<bytes_to_utf8>, returns a pointer to
ef9edfd0
JH
200the newly-created string, and updates C<len> to contain the new
201length. Returns the original string if no conversion occurs, C<len>
202is unchanged. Do nothing if C<is_utf8> points to 0. Sets C<is_utf8> to
2030 if C<s> is converted or contains all 7bit characters.
f9a63242
JH
204
205NOTE: this function is experimental and may change or be
206removed without notice.
207
208 U8* bytes_from_utf8(U8 *s, STRLEN *len, bool *is_utf8)
209
210=for hackers
211Found in file utf8.c
212
497711e7
GS
213=item bytes_to_utf8
214
215Converts a string C<s> of length C<len> from ASCII into UTF8 encoding.
6662521e
GS
216Returns a pointer to the newly-created string, and sets C<len> to
217reflect the new length.
497711e7 218
eebe1485
SC
219NOTE: this function is experimental and may change or be
220removed without notice.
221
222 U8* bytes_to_utf8(U8 *s, STRLEN *len)
497711e7
GS
223
224=for hackers
225Found in file utf8.c
226
954c1994
GS
227=item call_argv
228
229Performs a callback to the specified Perl sub. See L<perlcall>.
230
231NOTE: the perl_ form of this function is deprecated.
232
233 I32 call_argv(const char* sub_name, I32 flags, char** argv)
234
497711e7
GS
235=for hackers
236Found in file perl.c
237
954c1994
GS
238=item call_method
239
240Performs a callback to the specified Perl method. The blessed object must
241be on the stack. See L<perlcall>.
242
243NOTE: the perl_ form of this function is deprecated.
244
245 I32 call_method(const char* methname, I32 flags)
246
497711e7
GS
247=for hackers
248Found in file perl.c
249
954c1994
GS
250=item call_pv
251
252Performs a callback to the specified Perl sub. See L<perlcall>.
253
254NOTE: the perl_ form of this function is deprecated.
255
256 I32 call_pv(const char* sub_name, I32 flags)
257
497711e7
GS
258=for hackers
259Found in file perl.c
260
954c1994
GS
261=item call_sv
262
263Performs a callback to the Perl sub whose name is in the SV. See
264L<perlcall>.
265
266NOTE: the perl_ form of this function is deprecated.
267
268 I32 call_sv(SV* sv, I32 flags)
269
497711e7
GS
270=for hackers
271Found in file perl.c
272
954c1994
GS
273=item CLASS
274
275Variable which is setup by C<xsubpp> to indicate the
276class name for a C++ XS constructor. This is always a C<char*>. See C<THIS>.
277
278 char* CLASS
279
497711e7
GS
280=for hackers
281Found in file XSUB.h
282
954c1994
GS
283=item Copy
284
285The XSUB-writer's interface to the C C<memcpy> function. The C<src> is the
286source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is
287the type. May fail on overlapping copies. See also C<Move>.
288
289 void Copy(void* src, void* dest, int nitems, type)
290
497711e7
GS
291=for hackers
292Found in file handy.h
293
954c1994
GS
294=item croak
295
c9d5ac95
GS
296This is the XSUB-writer's interface to Perl's C<die> function.
297Normally use this function the same way you use the C C<printf>
298function. See C<warn>.
299
300If you want to throw an exception object, assign the object to
301C<$@> and then pass C<Nullch> to croak():
302
303 errsv = get_sv("@", TRUE);
304 sv_setsv(errsv, exception_object);
305 croak(Nullch);
954c1994
GS
306
307 void croak(const char* pat, ...)
308
497711e7
GS
309=for hackers
310Found in file util.c
311
954c1994
GS
312=item CvSTASH
313
314Returns the stash of the CV.
315
316 HV* CvSTASH(CV* cv)
317
497711e7
GS
318=for hackers
319Found in file cv.h
320
beab0874
JT
321=item cv_const_sv
322
323If C<cv> is a constant sub eligible for inlining. returns the constant
324value returned by the sub. Otherwise, returns NULL.
325
326Constant subs can be created with C<newCONSTSUB> or as described in
327L<perlsub/"Constant Functions">.
328
329 SV* cv_const_sv(CV* cv)
330
331=for hackers
fa519979 332Found in file op.c
beab0874 333
9f2ea798
DM
334=item dAX
335
336Sets up the C<ax> variable.
337This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
338
339 dAX;
340
341=for hackers
342Found in file XSUB.h
343
344=item dITEMS
345
346Sets up the C<items> variable.
347This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
348
349 dITEMS;
350
351=for hackers
352Found in file XSUB.h
353
954c1994
GS
354=item dMARK
355
356Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and
357C<dORIGMARK>.
358
359 dMARK;
360
497711e7
GS
361=for hackers
362Found in file pp.h
363
954c1994
GS
364=item dORIGMARK
365
366Saves the original stack mark for the XSUB. See C<ORIGMARK>.
367
368 dORIGMARK;
369
497711e7
GS
370=for hackers
371Found in file pp.h
372
954c1994
GS
373=item dSP
374
375Declares a local copy of perl's stack pointer for the XSUB, available via
376the C<SP> macro. See C<SP>.
377
378 dSP;
379
497711e7
GS
380=for hackers
381Found in file pp.h
382
954c1994
GS
383=item dXSARGS
384
9f2ea798
DM
385Sets up stack and mark pointers for an XSUB, calling dSP and dMARK.
386Sets up the C<ax> and C<items> variables by calling C<dAX> and C<dITEMS>.
387This is usually handled automatically by C<xsubpp>.
954c1994
GS
388
389 dXSARGS;
390
497711e7
GS
391=for hackers
392Found in file XSUB.h
393
954c1994
GS
394=item dXSI32
395
396Sets up the C<ix> variable for an XSUB which has aliases. This is usually
397handled automatically by C<xsubpp>.
398
399 dXSI32;
400
497711e7
GS
401=for hackers
402Found in file XSUB.h
403
954c1994
GS
404=item ENTER
405
406Opening bracket on a callback. See C<LEAVE> and L<perlcall>.
407
408 ENTER;
409
497711e7
GS
410=for hackers
411Found in file scope.h
412
954c1994
GS
413=item eval_pv
414
415Tells Perl to C<eval> the given string and return an SV* result.
416
417NOTE: the perl_ form of this function is deprecated.
418
419 SV* eval_pv(const char* p, I32 croak_on_error)
420
497711e7
GS
421=for hackers
422Found in file perl.c
423
954c1994
GS
424=item eval_sv
425
426Tells Perl to C<eval> the string in the SV.
427
428NOTE: the perl_ form of this function is deprecated.
429
430 I32 eval_sv(SV* sv, I32 flags)
431
497711e7
GS
432=for hackers
433Found in file perl.c
434
954c1994
GS
435=item EXTEND
436
437Used to extend the argument stack for an XSUB's return values. Once
4375e838 438used, guarantees that there is room for at least C<nitems> to be pushed
954c1994
GS
439onto the stack.
440
441 void EXTEND(SP, int nitems)
442
497711e7
GS
443=for hackers
444Found in file pp.h
445
954c1994
GS
446=item fbm_compile
447
448Analyses the string in order to make fast searches on it using fbm_instr()
449-- the Boyer-Moore algorithm.
450
451 void fbm_compile(SV* sv, U32 flags)
452
497711e7
GS
453=for hackers
454Found in file util.c
455
954c1994
GS
456=item fbm_instr
457
458Returns the location of the SV in the string delimited by C<str> and
459C<strend>. It returns C<Nullch> if the string can't be found. The C<sv>
460does not have to be fbm_compiled, but the search will not be as fast
461then.
462
463 char* fbm_instr(unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags)
464
497711e7
GS
465=for hackers
466Found in file util.c
467
954c1994
GS
468=item FREETMPS
469
470Closing bracket for temporaries on a callback. See C<SAVETMPS> and
471L<perlcall>.
472
473 FREETMPS;
474
497711e7
GS
475=for hackers
476Found in file scope.h
477
89423764
GS
478=item getcwd_sv
479
480Fill the sv with current working directory
481
482 int getcwd_sv(SV* sv)
483
484=for hackers
485Found in file util.c
486
954c1994
GS
487=item get_av
488
489Returns the AV of the specified Perl array. If C<create> is set and the
490Perl variable does not exist then it will be created. If C<create> is not
491set and the variable does not exist then NULL is returned.
492
493NOTE: the perl_ form of this function is deprecated.
494
495 AV* get_av(const char* name, I32 create)
496
497711e7
GS
497=for hackers
498Found in file perl.c
499
954c1994
GS
500=item get_cv
501
502Returns the CV of the specified Perl subroutine. If C<create> is set and
503the Perl subroutine does not exist then it will be declared (which has the
504same effect as saying C<sub name;>). If C<create> is not set and the
505subroutine does not exist then NULL is returned.
506
507NOTE: the perl_ form of this function is deprecated.
508
509 CV* get_cv(const char* name, I32 create)
510
497711e7
GS
511=for hackers
512Found in file perl.c
513
954c1994
GS
514=item get_hv
515
516Returns the HV of the specified Perl hash. If C<create> is set and the
517Perl variable does not exist then it will be created. If C<create> is not
518set and the variable does not exist then NULL is returned.
519
520NOTE: the perl_ form of this function is deprecated.
521
522 HV* get_hv(const char* name, I32 create)
523
497711e7
GS
524=for hackers
525Found in file perl.c
526
954c1994
GS
527=item get_sv
528
529Returns the SV of the specified Perl scalar. If C<create> is set and the
530Perl variable does not exist then it will be created. If C<create> is not
531set and the variable does not exist then NULL is returned.
532
533NOTE: the perl_ form of this function is deprecated.
534
535 SV* get_sv(const char* name, I32 create)
536
497711e7
GS
537=for hackers
538Found in file perl.c
539
954c1994
GS
540=item GIMME
541
542A backward-compatible version of C<GIMME_V> which can only return
543C<G_SCALAR> or C<G_ARRAY>; in a void context, it returns C<G_SCALAR>.
544Deprecated. Use C<GIMME_V> instead.
545
546 U32 GIMME
547
497711e7
GS
548=for hackers
549Found in file op.h
550
954c1994
GS
551=item GIMME_V
552
553The XSUB-writer's equivalent to Perl's C<wantarray>. Returns C<G_VOID>,
90fdbbb7 554C<G_SCALAR> or C<G_ARRAY> for void, scalar or list context,
954c1994
GS
555respectively.
556
557 U32 GIMME_V
558
497711e7
GS
559=for hackers
560Found in file op.h
561
dd5dc04f
JH
562=item grok_number
563
564Recognise (or not) a number. The type of the number is returned
565(0 if unrecognised), otherwise it is a bit-ORed combination of
566IS_NUMBER_IN_UV, IS_NUMBER_GREATER_THAN_UV_MAX, IS_NUMBER_NOT_INT,
793edb8a 567IS_NUMBER_NEG, IS_NUMBER_INFINITY, IS_NUMBER_NAN (defined in perl.h).
d42b51ea
JH
568
569If the value of the number can fit an in UV, it is returned in the *valuep
570IS_NUMBER_IN_UV will be set to indicate that *valuep is valid, IS_NUMBER_IN_UV
571will never be set unless *valuep is valid, but *valuep may have been assigned
572to during processing even though IS_NUMBER_IN_UV is not set on return.
573If valuep is NULL, IS_NUMBER_IN_UV will be set for the same cases as when
574valuep is non-NULL, but no actual assignment (or SEGV) will occur.
575
576IS_NUMBER_NOT_INT will be set with IS_NUMBER_IN_UV if trailing decimals were
577seen (in which case *valuep gives the true value truncated to an integer), and
578IS_NUMBER_NEG if the number is negative (in which case *valuep holds the
579absolute value). IS_NUMBER_IN_UV is not set if e notation was used or the
580number is larger than a UV.
dd5dc04f
JH
581
582 int grok_number(const char *pv, STRLEN len, UV *valuep)
583
584=for hackers
98994639 585Found in file numeric.c
dd5dc04f
JH
586
587=item grok_numeric_radix
588
589Scan and skip for a numeric decimal separator (radix).
590
591 bool grok_numeric_radix(const char **sp, const char *send)
592
593=for hackers
98994639 594Found in file numeric.c
dd5dc04f 595
954c1994
GS
596=item GvSV
597
598Return the SV from the GV.
599
600 SV* GvSV(GV* gv)
601
497711e7
GS
602=for hackers
603Found in file gv.h
604
954c1994
GS
605=item gv_fetchmeth
606
607Returns the glob with the given C<name> and a defined subroutine or
608C<NULL>. The glob lives in the given C<stash>, or in the stashes
a453c169 609accessible via @ISA and UNIVERSAL::.
954c1994
GS
610
611The argument C<level> should be either 0 or -1. If C<level==0>, as a
612side-effect creates a glob with the given C<name> in the given C<stash>
613which in the case of success contains an alias for the subroutine, and sets
1c846c1f 614up caching info for this glob. Similarly for all the searched stashes.
954c1994
GS
615
616This function grants C<"SUPER"> token as a postfix of the stash name. The
617GV returned from C<gv_fetchmeth> may be a method cache entry, which is not
4929bf7b 618visible to Perl code. So when calling C<call_sv>, you should not use
954c1994 619the GV directly; instead, you should use the method's CV, which can be
1c846c1f 620obtained from the GV with the C<GvCV> macro.
954c1994
GS
621
622 GV* gv_fetchmeth(HV* stash, const char* name, STRLEN len, I32 level)
623
497711e7
GS
624=for hackers
625Found in file gv.c
626
954c1994
GS
627=item gv_fetchmethod
628
6d0f518e 629See L<gv_fetchmethod_autoload>.
954c1994
GS
630
631 GV* gv_fetchmethod(HV* stash, const char* name)
632
497711e7
GS
633=for hackers
634Found in file gv.c
635
954c1994
GS
636=item gv_fetchmethod_autoload
637
638Returns the glob which contains the subroutine to call to invoke the method
639on the C<stash>. In fact in the presence of autoloading this may be the
640glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is
1c846c1f 641already setup.
954c1994
GS
642
643The third parameter of C<gv_fetchmethod_autoload> determines whether
644AUTOLOAD lookup is performed if the given method is not present: non-zero
1c846c1f 645means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.
954c1994 646Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload>
1c846c1f 647with a non-zero C<autoload> parameter.
954c1994
GS
648
649These functions grant C<"SUPER"> token as a prefix of the method name. Note
650that if you want to keep the returned glob for a long time, you need to
651check for it being "AUTOLOAD", since at the later time the call may load a
652different subroutine due to $AUTOLOAD changing its value. Use the glob
1c846c1f 653created via a side effect to do this.
954c1994
GS
654
655These functions have the same side-effects and as C<gv_fetchmeth> with
656C<level==0>. C<name> should be writable if contains C<':'> or C<'
657''>. The warning against passing the GV returned by C<gv_fetchmeth> to
1c846c1f 658C<call_sv> apply equally to these functions.
954c1994
GS
659
660 GV* gv_fetchmethod_autoload(HV* stash, const char* name, I32 autoload)
661
497711e7
GS
662=for hackers
663Found in file gv.c
664
954c1994
GS
665=item gv_stashpv
666
386d01d6
GS
667Returns a pointer to the stash for a specified package. C<name> should
668be a valid UTF-8 string. If C<create> is set then the package will be
669created if it does not already exist. If C<create> is not set and the
670package does not exist then NULL is returned.
954c1994
GS
671
672 HV* gv_stashpv(const char* name, I32 create)
673
497711e7
GS
674=for hackers
675Found in file gv.c
676
954c1994
GS
677=item gv_stashsv
678
386d01d6
GS
679Returns a pointer to the stash for a specified package, which must be a
680valid UTF-8 string. See C<gv_stashpv>.
954c1994
GS
681
682 HV* gv_stashsv(SV* sv, I32 create)
683
497711e7
GS
684=for hackers
685Found in file gv.c
686
954c1994
GS
687=item G_ARRAY
688
90fdbbb7 689Used to indicate list context. See C<GIMME_V>, C<GIMME> and
954c1994
GS
690L<perlcall>.
691
497711e7
GS
692=for hackers
693Found in file cop.h
694
954c1994
GS
695=item G_DISCARD
696
697Indicates that arguments returned from a callback should be discarded. See
698L<perlcall>.
699
497711e7
GS
700=for hackers
701Found in file cop.h
702
954c1994
GS
703=item G_EVAL
704
705Used to force a Perl C<eval> wrapper around a callback. See
706L<perlcall>.
707
497711e7
GS
708=for hackers
709Found in file cop.h
710
954c1994
GS
711=item G_NOARGS
712
713Indicates that no arguments are being sent to a callback. See
714L<perlcall>.
715
497711e7
GS
716=for hackers
717Found in file cop.h
718
954c1994
GS
719=item G_SCALAR
720
721Used to indicate scalar context. See C<GIMME_V>, C<GIMME>, and
722L<perlcall>.
723
497711e7
GS
724=for hackers
725Found in file cop.h
726
954c1994
GS
727=item G_VOID
728
729Used to indicate void context. See C<GIMME_V> and L<perlcall>.
730
497711e7
GS
731=for hackers
732Found in file cop.h
733
954c1994
GS
734=item HEf_SVKEY
735
736This flag, used in the length slot of hash entries and magic structures,
737specifies the structure contains a C<SV*> pointer where a C<char*> pointer
738is to be expected. (For information only--not to be used).
739
497711e7
GS
740=for hackers
741Found in file hv.h
742
954c1994
GS
743=item HeHASH
744
745Returns the computed hash stored in the hash entry.
746
747 U32 HeHASH(HE* he)
748
497711e7
GS
749=for hackers
750Found in file hv.h
751
954c1994
GS
752=item HeKEY
753
754Returns the actual pointer stored in the key slot of the hash entry. The
755pointer may be either C<char*> or C<SV*>, depending on the value of
756C<HeKLEN()>. Can be assigned to. The C<HePV()> or C<HeSVKEY()> macros are
757usually preferable for finding the value of a key.
758
759 void* HeKEY(HE* he)
760
497711e7
GS
761=for hackers
762Found in file hv.h
763
954c1994
GS
764=item HeKLEN
765
766If this is negative, and amounts to C<HEf_SVKEY>, it indicates the entry
767holds an C<SV*> key. Otherwise, holds the actual length of the key. Can
768be assigned to. The C<HePV()> macro is usually preferable for finding key
769lengths.
770
771 STRLEN HeKLEN(HE* he)
772
497711e7
GS
773=for hackers
774Found in file hv.h
775
954c1994
GS
776=item HePV
777
778Returns the key slot of the hash entry as a C<char*> value, doing any
779necessary dereferencing of possibly C<SV*> keys. The length of the string
780is placed in C<len> (this is a macro, so do I<not> use C<&len>). If you do
781not care about what the length of the key is, you may use the global
782variable C<PL_na>, though this is rather less efficient than using a local
783variable. Remember though, that hash keys in perl are free to contain
784embedded nulls, so using C<strlen()> or similar is not a good way to find
785the length of hash keys. This is very similar to the C<SvPV()> macro
786described elsewhere in this document.
787
788 char* HePV(HE* he, STRLEN len)
789
497711e7
GS
790=for hackers
791Found in file hv.h
792
954c1994
GS
793=item HeSVKEY
794
795Returns the key as an C<SV*>, or C<Nullsv> if the hash entry does not
796contain an C<SV*> key.
797
798 SV* HeSVKEY(HE* he)
799
497711e7
GS
800=for hackers
801Found in file hv.h
802
954c1994
GS
803=item HeSVKEY_force
804
805Returns the key as an C<SV*>. Will create and return a temporary mortal
806C<SV*> if the hash entry contains only a C<char*> key.
807
808 SV* HeSVKEY_force(HE* he)
809
497711e7
GS
810=for hackers
811Found in file hv.h
812
954c1994
GS
813=item HeSVKEY_set
814
815Sets the key to a given C<SV*>, taking care to set the appropriate flags to
816indicate the presence of an C<SV*> key, and returns the same
817C<SV*>.
818
819 SV* HeSVKEY_set(HE* he, SV* sv)
820
497711e7
GS
821=for hackers
822Found in file hv.h
823
954c1994
GS
824=item HeVAL
825
826Returns the value slot (type C<SV*>) stored in the hash entry.
827
828 SV* HeVAL(HE* he)
829
497711e7
GS
830=for hackers
831Found in file hv.h
832
954c1994
GS
833=item HvNAME
834
835Returns the package name of a stash. See C<SvSTASH>, C<CvSTASH>.
836
837 char* HvNAME(HV* stash)
838
497711e7
GS
839=for hackers
840Found in file hv.h
841
954c1994
GS
842=item hv_clear
843
844Clears a hash, making it empty.
845
846 void hv_clear(HV* tb)
847
497711e7
GS
848=for hackers
849Found in file hv.c
850
954c1994
GS
851=item hv_delete
852
853Deletes a key/value pair in the hash. The value SV is removed from the
1c846c1f 854hash and returned to the caller. The C<klen> is the length of the key.
954c1994
GS
855The C<flags> value will normally be zero; if set to G_DISCARD then NULL
856will be returned.
857
da58a35d 858 SV* hv_delete(HV* tb, const char* key, I32 klen, I32 flags)
954c1994 859
497711e7
GS
860=for hackers
861Found in file hv.c
862
954c1994
GS
863=item hv_delete_ent
864
865Deletes a key/value pair in the hash. The value SV is removed from the
866hash and returned to the caller. The C<flags> value will normally be zero;
867if set to G_DISCARD then NULL will be returned. C<hash> can be a valid
868precomputed hash value, or 0 to ask for it to be computed.
869
870 SV* hv_delete_ent(HV* tb, SV* key, I32 flags, U32 hash)
871
497711e7
GS
872=for hackers
873Found in file hv.c
874
954c1994
GS
875=item hv_exists
876
877Returns a boolean indicating whether the specified hash key exists. The
878C<klen> is the length of the key.
879
da58a35d 880 bool hv_exists(HV* tb, const char* key, I32 klen)
954c1994 881
497711e7
GS
882=for hackers
883Found in file hv.c
884
954c1994
GS
885=item hv_exists_ent
886
887Returns a boolean indicating whether the specified hash key exists. C<hash>
888can be a valid precomputed hash value, or 0 to ask for it to be
889computed.
890
891 bool hv_exists_ent(HV* tb, SV* key, U32 hash)
892
497711e7
GS
893=for hackers
894Found in file hv.c
895
954c1994
GS
896=item hv_fetch
897
898Returns the SV which corresponds to the specified key in the hash. The
899C<klen> is the length of the key. If C<lval> is set then the fetch will be
900part of a store. Check that the return value is non-null before
1c846c1f 901dereferencing it to a C<SV*>.
954c1994 902
96f1132b 903See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994
GS
904information on how to use this function on tied hashes.
905
da58a35d 906 SV** hv_fetch(HV* tb, const char* key, I32 klen, I32 lval)
954c1994 907
497711e7
GS
908=for hackers
909Found in file hv.c
910
954c1994
GS
911=item hv_fetch_ent
912
913Returns the hash entry which corresponds to the specified key in the hash.
914C<hash> must be a valid precomputed hash number for the given C<key>, or 0
915if you want the function to compute it. IF C<lval> is set then the fetch
916will be part of a store. Make sure the return value is non-null before
917accessing it. The return value when C<tb> is a tied hash is a pointer to a
918static location, so be sure to make a copy of the structure if you need to
1c846c1f 919store it somewhere.
954c1994 920
96f1132b 921See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994
GS
922information on how to use this function on tied hashes.
923
924 HE* hv_fetch_ent(HV* tb, SV* key, I32 lval, U32 hash)
925
497711e7
GS
926=for hackers
927Found in file hv.c
928
954c1994
GS
929=item hv_iterinit
930
931Prepares a starting point to traverse a hash table. Returns the number of
932keys in the hash (i.e. the same as C<HvKEYS(tb)>). The return value is
1c846c1f 933currently only meaningful for hashes without tie magic.
954c1994
GS
934
935NOTE: Before version 5.004_65, C<hv_iterinit> used to return the number of
936hash buckets that happen to be in use. If you still need that esoteric
937value, you can get it through the macro C<HvFILL(tb)>.
938
939 I32 hv_iterinit(HV* tb)
940
497711e7
GS
941=for hackers
942Found in file hv.c
943
954c1994
GS
944=item hv_iterkey
945
946Returns the key from the current position of the hash iterator. See
947C<hv_iterinit>.
948
949 char* hv_iterkey(HE* entry, I32* retlen)
950
497711e7
GS
951=for hackers
952Found in file hv.c
953
954c1994
GS
954=item hv_iterkeysv
955
956Returns the key as an C<SV*> from the current position of the hash
957iterator. The return value will always be a mortal copy of the key. Also
958see C<hv_iterinit>.
959
960 SV* hv_iterkeysv(HE* entry)
961
497711e7
GS
962=for hackers
963Found in file hv.c
964
954c1994
GS
965=item hv_iternext
966
967Returns entries from a hash iterator. See C<hv_iterinit>.
968
969 HE* hv_iternext(HV* tb)
970
497711e7
GS
971=for hackers
972Found in file hv.c
973
954c1994
GS
974=item hv_iternextsv
975
976Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one
977operation.
978
979 SV* hv_iternextsv(HV* hv, char** key, I32* retlen)
980
497711e7
GS
981=for hackers
982Found in file hv.c
983
954c1994
GS
984=item hv_iterval
985
986Returns the value from the current position of the hash iterator. See
987C<hv_iterkey>.
988
989 SV* hv_iterval(HV* tb, HE* entry)
990
497711e7
GS
991=for hackers
992Found in file hv.c
993
954c1994
GS
994=item hv_magic
995
996Adds magic to a hash. See C<sv_magic>.
997
998 void hv_magic(HV* hv, GV* gv, int how)
999
497711e7
GS
1000=for hackers
1001Found in file hv.c
1002
954c1994
GS
1003=item hv_store
1004
1005Stores an SV in a hash. The hash key is specified as C<key> and C<klen> is
1006the length of the key. The C<hash> parameter is the precomputed hash
1007value; if it is zero then Perl will compute it. The return value will be
1008NULL if the operation failed or if the value did not need to be actually
1009stored within the hash (as in the case of tied hashes). Otherwise it can
1010be dereferenced to get the original C<SV*>. Note that the caller is
1011responsible for suitably incrementing the reference count of C<val> before
1c846c1f 1012the call, and decrementing it if the function returned NULL.
954c1994 1013
96f1132b 1014See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994
GS
1015information on how to use this function on tied hashes.
1016
da58a35d 1017 SV** hv_store(HV* tb, const char* key, I32 klen, SV* val, U32 hash)
954c1994 1018
497711e7
GS
1019=for hackers
1020Found in file hv.c
1021
954c1994
GS
1022=item hv_store_ent
1023
1024Stores C<val> in a hash. The hash key is specified as C<key>. The C<hash>
1025parameter is the precomputed hash value; if it is zero then Perl will
1026compute it. The return value is the new hash entry so created. It will be
1027NULL if the operation failed or if the value did not need to be actually
1028stored within the hash (as in the case of tied hashes). Otherwise the
f22d8e4b 1029contents of the return value can be accessed using the C<He?> macros
954c1994
GS
1030described here. Note that the caller is responsible for suitably
1031incrementing the reference count of C<val> before the call, and
1c846c1f 1032decrementing it if the function returned NULL.
954c1994 1033
96f1132b 1034See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994
GS
1035information on how to use this function on tied hashes.
1036
1037 HE* hv_store_ent(HV* tb, SV* key, SV* val, U32 hash)
1038
497711e7
GS
1039=for hackers
1040Found in file hv.c
1041
954c1994
GS
1042=item hv_undef
1043
1044Undefines the hash.
1045
1046 void hv_undef(HV* tb)
1047
497711e7
GS
1048=for hackers
1049Found in file hv.c
1050
954c1994
GS
1051=item isALNUM
1052
4375e838 1053Returns a boolean indicating whether the C C<char> is an ASCII alphanumeric
f1cbbd6e 1054character (including underscore) or digit.
954c1994
GS
1055
1056 bool isALNUM(char ch)
1057
497711e7
GS
1058=for hackers
1059Found in file handy.h
1060
954c1994
GS
1061=item isALPHA
1062
4375e838 1063Returns a boolean indicating whether the C C<char> is an ASCII alphabetic
954c1994
GS
1064character.
1065
1066 bool isALPHA(char ch)
1067
497711e7
GS
1068=for hackers
1069Found in file handy.h
1070
954c1994
GS
1071=item isDIGIT
1072
4375e838 1073Returns a boolean indicating whether the C C<char> is an ASCII
954c1994
GS
1074digit.
1075
1076 bool isDIGIT(char ch)
1077
497711e7
GS
1078=for hackers
1079Found in file handy.h
1080
954c1994
GS
1081=item isLOWER
1082
1083Returns a boolean indicating whether the C C<char> is a lowercase
1084character.
1085
1086 bool isLOWER(char ch)
1087
497711e7
GS
1088=for hackers
1089Found in file handy.h
1090
954c1994
GS
1091=item isSPACE
1092
1093Returns a boolean indicating whether the C C<char> is whitespace.
1094
1095 bool isSPACE(char ch)
1096
497711e7
GS
1097=for hackers
1098Found in file handy.h
1099
954c1994
GS
1100=item isUPPER
1101
1102Returns a boolean indicating whether the C C<char> is an uppercase
1103character.
1104
1105 bool isUPPER(char ch)
1106
497711e7
GS
1107=for hackers
1108Found in file handy.h
1109
eebe1485
SC
1110=item is_utf8_char
1111
5da9da9e 1112Tests if some arbitrary number of bytes begins in a valid UTF-8
4d4e713d 1113character. Note that an INVARIANT (i.e. ASCII) character is a valid UTF-8 character.
5da9da9e
JH
1114The actual number of bytes in the UTF-8 character will be returned if
1115it is valid, otherwise 0.
282f25c9 1116
eebe1485
SC
1117 STRLEN is_utf8_char(U8 *p)
1118
1119=for hackers
1120Found in file utf8.c
1121
1122=item is_utf8_string
1123
5da9da9e
JH
1124Returns true if first C<len> bytes of the given string form a valid UTF8
1125string, false otherwise. Note that 'a valid UTF8 string' does not mean
1126'a string that contains UTF8' because a valid ASCII string is a valid
1127UTF8 string.
eebe1485
SC
1128
1129 bool is_utf8_string(U8 *s, STRLEN len)
1130
1131=for hackers
1132Found in file utf8.c
1133
954c1994
GS
1134=item items
1135
1136Variable which is setup by C<xsubpp> to indicate the number of
1137items on the stack. See L<perlxs/"Variable-length Parameter Lists">.
1138
1139 I32 items
1140
497711e7
GS
1141=for hackers
1142Found in file XSUB.h
1143
954c1994
GS
1144=item ix
1145
1146Variable which is setup by C<xsubpp> to indicate which of an
1147XSUB's aliases was used to invoke it. See L<perlxs/"The ALIAS: Keyword">.
1148
1149 I32 ix
1150
497711e7
GS
1151=for hackers
1152Found in file XSUB.h
1153
954c1994
GS
1154=item LEAVE
1155
1156Closing bracket on a callback. See C<ENTER> and L<perlcall>.
1157
1158 LEAVE;
1159
497711e7
GS
1160=for hackers
1161Found in file scope.h
1162
7d3fb230
BS
1163=item load_module
1164
1165Loads the module whose name is pointed to by the string part of name.
1166Note that the actual module name, not its filename, should be given.
1167Eg, "Foo::Bar" instead of "Foo/Bar.pm". flags can be any of
1168PERL_LOADMOD_DENY, PERL_LOADMOD_NOIMPORT, or PERL_LOADMOD_IMPORT_OPS
1169(or 0 for no flags). ver, if specified, provides version semantics
1170similar to C<use Foo::Bar VERSION>. The optional trailing SV*
1171arguments can be used to specify arguments to the module's import()
1172method, similar to C<use Foo::Bar VERSION LIST>.
1173
1174 void load_module(U32 flags, SV* name, SV* ver, ...)
1175
1176=for hackers
1177Found in file op.c
1178
954c1994
GS
1179=item looks_like_number
1180
645c22ef
DM
1181Test if the content of an SV looks like a number (or is a number).
1182C<Inf> and C<Infinity> are treated as numbers (so will not issue a
1183non-numeric warning), even if your atof() doesn't grok them.
954c1994
GS
1184
1185 I32 looks_like_number(SV* sv)
1186
497711e7
GS
1187=for hackers
1188Found in file sv.c
1189
954c1994
GS
1190=item MARK
1191
1192Stack marker variable for the XSUB. See C<dMARK>.
1193
497711e7
GS
1194=for hackers
1195Found in file pp.h
1196
954c1994
GS
1197=item mg_clear
1198
1199Clear something magical that the SV represents. See C<sv_magic>.
1200
1201 int mg_clear(SV* sv)
1202
497711e7
GS
1203=for hackers
1204Found in file mg.c
1205
954c1994
GS
1206=item mg_copy
1207
1208Copies the magic from one SV to another. See C<sv_magic>.
1209
1210 int mg_copy(SV* sv, SV* nsv, const char* key, I32 klen)
1211
497711e7
GS
1212=for hackers
1213Found in file mg.c
1214
954c1994
GS
1215=item mg_find
1216
1217Finds the magic pointer for type matching the SV. See C<sv_magic>.
1218
1219 MAGIC* mg_find(SV* sv, int type)
1220
497711e7
GS
1221=for hackers
1222Found in file mg.c
1223
954c1994
GS
1224=item mg_free
1225
1226Free any magic storage used by the SV. See C<sv_magic>.
1227
1228 int mg_free(SV* sv)
1229
497711e7
GS
1230=for hackers
1231Found in file mg.c
1232
954c1994
GS
1233=item mg_get
1234
1235Do magic after a value is retrieved from the SV. See C<sv_magic>.
1236
1237 int mg_get(SV* sv)
1238
497711e7
GS
1239=for hackers
1240Found in file mg.c
1241
954c1994
GS
1242=item mg_length
1243
1244Report on the SV's length. See C<sv_magic>.
1245
1246 U32 mg_length(SV* sv)
1247
497711e7
GS
1248=for hackers
1249Found in file mg.c
1250
954c1994
GS
1251=item mg_magical
1252
1253Turns on the magical status of an SV. See C<sv_magic>.
1254
1255 void mg_magical(SV* sv)
1256
497711e7
GS
1257=for hackers
1258Found in file mg.c
1259
954c1994
GS
1260=item mg_set
1261
1262Do magic after a value is assigned to the SV. See C<sv_magic>.
1263
1264 int mg_set(SV* sv)
1265
497711e7
GS
1266=for hackers
1267Found in file mg.c
1268
954c1994
GS
1269=item Move
1270
1271The XSUB-writer's interface to the C C<memmove> function. The C<src> is the
1272source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is
1273the type. Can do overlapping moves. See also C<Copy>.
1274
1275 void Move(void* src, void* dest, int nitems, type)
1276
497711e7
GS
1277=for hackers
1278Found in file handy.h
1279
954c1994
GS
1280=item New
1281
1282The XSUB-writer's interface to the C C<malloc> function.
1283
1284 void New(int id, void* ptr, int nitems, type)
1285
497711e7
GS
1286=for hackers
1287Found in file handy.h
1288
954c1994
GS
1289=item newAV
1290
1291Creates a new AV. The reference count is set to 1.
1292
1293 AV* newAV()
1294
497711e7
GS
1295=for hackers
1296Found in file av.c
1297
954c1994
GS
1298=item Newc
1299
1300The XSUB-writer's interface to the C C<malloc> function, with
1301cast.
1302
1303 void Newc(int id, void* ptr, int nitems, type, cast)
1304
497711e7
GS
1305=for hackers
1306Found in file handy.h
1307
954c1994
GS
1308=item newCONSTSUB
1309
1310Creates a constant sub equivalent to Perl C<sub FOO () { 123 }> which is
1311eligible for inlining at compile-time.
1312
beab0874 1313 CV* newCONSTSUB(HV* stash, char* name, SV* sv)
954c1994 1314
497711e7 1315=for hackers
fa519979 1316Found in file op.c
497711e7 1317
954c1994
GS
1318=item newHV
1319
1320Creates a new HV. The reference count is set to 1.
1321
1322 HV* newHV()
1323
497711e7
GS
1324=for hackers
1325Found in file hv.c
1326
954c1994
GS
1327=item newRV_inc
1328
1329Creates an RV wrapper for an SV. The reference count for the original SV is
1330incremented.
1331
1332 SV* newRV_inc(SV* sv)
1333
497711e7
GS
1334=for hackers
1335Found in file sv.h
1336
954c1994
GS
1337=item newRV_noinc
1338
1339Creates an RV wrapper for an SV. The reference count for the original
1340SV is B<not> incremented.
1341
1342 SV* newRV_noinc(SV *sv)
1343
497711e7
GS
1344=for hackers
1345Found in file sv.c
1346
cd1ee231
JH
1347=item newSV
1348
1349Create a new null SV, or if len > 0, create a new empty SVt_PV type SV
1350with an initial PV allocation of len+1. Normally accessed via the C<NEWSV>
1351macro.
1352
1353 SV* newSV(STRLEN len)
1354
1355=for hackers
1356Found in file sv.c
1357
954c1994
GS
1358=item NEWSV
1359
1360Creates a new SV. A non-zero C<len> parameter indicates the number of
1361bytes of preallocated string space the SV should have. An extra byte for a
1362tailing NUL is also reserved. (SvPOK is not set for the SV even if string
444155da 1363space is allocated.) The reference count for the new SV is set to 1.
954c1994
GS
1364C<id> is an integer id between 0 and 1299 (used to identify leaks).
1365
1366 SV* NEWSV(int id, STRLEN len)
1367
497711e7
GS
1368=for hackers
1369Found in file handy.h
1370
954c1994
GS
1371=item newSViv
1372
1373Creates a new SV and copies an integer into it. The reference count for the
1374SV is set to 1.
1375
1376 SV* newSViv(IV i)
1377
497711e7
GS
1378=for hackers
1379Found in file sv.c
1380
954c1994
GS
1381=item newSVnv
1382
1383Creates a new SV and copies a floating point value into it.
1384The reference count for the SV is set to 1.
1385
1386 SV* newSVnv(NV n)
1387
497711e7
GS
1388=for hackers
1389Found in file sv.c
1390
954c1994
GS
1391=item newSVpv
1392
1393Creates a new SV and copies a string into it. The reference count for the
1394SV is set to 1. If C<len> is zero, Perl will compute the length using
1395strlen(). For efficiency, consider using C<newSVpvn> instead.
1396
1397 SV* newSVpv(const char* s, STRLEN len)
1398
497711e7
GS
1399=for hackers
1400Found in file sv.c
1401
954c1994
GS
1402=item newSVpvf
1403
645c22ef 1404Creates a new SV and initializes it with the string formatted like
954c1994
GS
1405C<sprintf>.
1406
1407 SV* newSVpvf(const char* pat, ...)
1408
497711e7
GS
1409=for hackers
1410Found in file sv.c
1411
954c1994
GS
1412=item newSVpvn
1413
1414Creates a new SV and copies a string into it. The reference count for the
1c846c1f 1415SV is set to 1. Note that if C<len> is zero, Perl will create a zero length
954c1994
GS
1416string. You are responsible for ensuring that the source string is at least
1417C<len> bytes long.
1418
1419 SV* newSVpvn(const char* s, STRLEN len)
1420
497711e7
GS
1421=for hackers
1422Found in file sv.c
1423
1c846c1f
NIS
1424=item newSVpvn_share
1425
645c22ef
DM
1426Creates a new SV with its SvPVX pointing to a shared string in the string
1427table. If the string does not already exist in the table, it is created
1428first. Turns on READONLY and FAKE. The string's hash is stored in the UV
1429slot of the SV; if the C<hash> parameter is non-zero, that value is used;
1430otherwise the hash is computed. The idea here is that as the string table
1431is used for shared hash keys these strings will have SvPVX == HeKEY and
1432hash lookup will avoid string compare.
1c846c1f 1433
ae154d6d 1434 SV* newSVpvn_share(const char* s, I32 len, U32 hash)
1c846c1f
NIS
1435
1436=for hackers
1437Found in file sv.c
1438
954c1994
GS
1439=item newSVrv
1440
1441Creates a new SV for the RV, C<rv>, to point to. If C<rv> is not an RV then
1442it will be upgraded to one. If C<classname> is non-null then the new SV will
1443be blessed in the specified package. The new SV is returned and its
1444reference count is 1.
1445
1446 SV* newSVrv(SV* rv, const char* classname)
1447
497711e7
GS
1448=for hackers
1449Found in file sv.c
1450
954c1994
GS
1451=item newSVsv
1452
1453Creates a new SV which is an exact duplicate of the original SV.
645c22ef 1454(Uses C<sv_setsv>).
954c1994
GS
1455
1456 SV* newSVsv(SV* old)
1457
497711e7
GS
1458=for hackers
1459Found in file sv.c
1460
1a3327fb
JH
1461=item newSVuv
1462
1463Creates a new SV and copies an unsigned integer into it.
1464The reference count for the SV is set to 1.
1465
1466 SV* newSVuv(UV u)
1467
497711e7
GS
1468=for hackers
1469Found in file sv.c
1470
954c1994
GS
1471=item newXS
1472
1473Used by C<xsubpp> to hook up XSUBs as Perl subs.
1474
497711e7 1475=for hackers
fa519979 1476Found in file op.c
497711e7 1477
954c1994
GS
1478=item newXSproto
1479
1480Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to
1481the subs.
1482
497711e7
GS
1483=for hackers
1484Found in file XSUB.h
1485
954c1994
GS
1486=item Newz
1487
1488The XSUB-writer's interface to the C C<malloc> function. The allocated
1489memory is zeroed with C<memzero>.
1490
1491 void Newz(int id, void* ptr, int nitems, type)
1492
497711e7
GS
1493=for hackers
1494Found in file handy.h
1495
954c1994
GS
1496=item Nullav
1497
1498Null AV pointer.
1499
497711e7
GS
1500=for hackers
1501Found in file av.h
1502
954c1994
GS
1503=item Nullch
1504
1505Null character pointer.
1506
497711e7
GS
1507=for hackers
1508Found in file handy.h
1509
954c1994
GS
1510=item Nullcv
1511
1512Null CV pointer.
1513
497711e7
GS
1514=for hackers
1515Found in file cv.h
1516
954c1994
GS
1517=item Nullhv
1518
1519Null HV pointer.
1520
497711e7
GS
1521=for hackers
1522Found in file hv.h
1523
954c1994
GS
1524=item Nullsv
1525
1526Null SV pointer.
1527
497711e7
GS
1528=for hackers
1529Found in file handy.h
1530
954c1994
GS
1531=item ORIGMARK
1532
1533The original stack mark for the XSUB. See C<dORIGMARK>.
1534
497711e7
GS
1535=for hackers
1536Found in file pp.h
1537
954c1994
GS
1538=item perl_alloc
1539
1540Allocates a new Perl interpreter. See L<perlembed>.
1541
1542 PerlInterpreter* perl_alloc()
1543
497711e7
GS
1544=for hackers
1545Found in file perl.c
1546
645c22ef
DM
1547=item perl_clone
1548
1549Create and return a new interpreter by cloning the current one.
1550
1551 PerlInterpreter* perl_clone(PerlInterpreter* interp, UV flags)
1552
1553=for hackers
1554Found in file sv.c
1555
954c1994
GS
1556=item perl_construct
1557
1558Initializes a new Perl interpreter. See L<perlembed>.
1559
1560 void perl_construct(PerlInterpreter* interp)
1561
497711e7
GS
1562=for hackers
1563Found in file perl.c
1564
954c1994
GS
1565=item perl_destruct
1566
1567Shuts down a Perl interpreter. See L<perlembed>.
1568
d9f424b2 1569 int perl_destruct(PerlInterpreter* interp)
954c1994 1570
497711e7
GS
1571=for hackers
1572Found in file perl.c
1573
954c1994
GS
1574=item perl_free
1575
1576Releases a Perl interpreter. See L<perlembed>.
1577
1578 void perl_free(PerlInterpreter* interp)
1579
497711e7
GS
1580=for hackers
1581Found in file perl.c
1582
954c1994
GS
1583=item perl_parse
1584
1585Tells a Perl interpreter to parse a Perl script. See L<perlembed>.
1586
1587 int perl_parse(PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env)
1588
497711e7
GS
1589=for hackers
1590Found in file perl.c
1591
954c1994
GS
1592=item perl_run
1593
1594Tells a Perl interpreter to run. See L<perlembed>.
1595
1596 int perl_run(PerlInterpreter* interp)
1597
497711e7
GS
1598=for hackers
1599Found in file perl.c
1600
954c1994
GS
1601=item PL_modglobal
1602
ae154d6d 1603C<PL_modglobal> is a general purpose, interpreter global HV for use by
954c1994 1604extensions that need to keep information on a per-interpreter basis.
ae154d6d
JH
1605In a pinch, it can also be used as a symbol table for extensions
1606to share data among each other. It is a good idea to use keys
954c1994
GS
1607prefixed by the package name of the extension that owns the data.
1608
1609 HV* PL_modglobal
1610
497711e7
GS
1611=for hackers
1612Found in file intrpvar.h
1613
954c1994
GS
1614=item PL_na
1615
1616A convenience variable which is typically used with C<SvPV> when one
1617doesn't care about the length of the string. It is usually more efficient
1618to either declare a local variable and use that instead or to use the
1619C<SvPV_nolen> macro.
1620
1621 STRLEN PL_na
1622
497711e7
GS
1623=for hackers
1624Found in file thrdvar.h
1625
954c1994
GS
1626=item PL_sv_no
1627
1628This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
1629C<&PL_sv_no>.
1630
1631 SV PL_sv_no
1632
497711e7
GS
1633=for hackers
1634Found in file intrpvar.h
1635
954c1994
GS
1636=item PL_sv_undef
1637
1638This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
1639
1640 SV PL_sv_undef
1641
497711e7
GS
1642=for hackers
1643Found in file intrpvar.h
1644
954c1994
GS
1645=item PL_sv_yes
1646
1647This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
1648C<&PL_sv_yes>.
1649
1650 SV PL_sv_yes
1651
497711e7
GS
1652=for hackers
1653Found in file intrpvar.h
1654
954c1994
GS
1655=item POPi
1656
1657Pops an integer off the stack.
1658
1659 IV POPi
1660
497711e7
GS
1661=for hackers
1662Found in file pp.h
1663
954c1994
GS
1664=item POPl
1665
1666Pops a long off the stack.
1667
1668 long POPl
1669
497711e7
GS
1670=for hackers
1671Found in file pp.h
1672
954c1994
GS
1673=item POPn
1674
1675Pops a double off the stack.
1676
1677 NV POPn
1678
497711e7
GS
1679=for hackers
1680Found in file pp.h
1681
954c1994
GS
1682=item POPp
1683
fa519979
JH
1684Pops a string off the stack. Deprecated. New code should provide
1685a STRLEN n_a and use POPpx.
954c1994
GS
1686
1687 char* POPp
1688
497711e7
GS
1689=for hackers
1690Found in file pp.h
1691
fa519979
JH
1692=item POPpbytex
1693
1694Pops a string off the stack which must consist of bytes i.e. characters < 256.
1695Requires a variable STRLEN n_a in scope.
1696
1697 char* POPpbytex
1698
1699=for hackers
1700Found in file pp.h
1701
1702=item POPpx
1703
1704Pops a string off the stack.
1705Requires a variable STRLEN n_a in scope.
1706
1707 char* POPpx
1708
1709=for hackers
1710Found in file pp.h
1711
954c1994
GS
1712=item POPs
1713
1714Pops an SV off the stack.
1715
1716 SV* POPs
1717
497711e7
GS
1718=for hackers
1719Found in file pp.h
1720
954c1994
GS
1721=item PUSHi
1722
1723Push an integer onto the stack. The stack must have room for this element.
1724Handles 'set' magic. See C<XPUSHi>.
1725
1726 void PUSHi(IV iv)
1727
497711e7
GS
1728=for hackers
1729Found in file pp.h
1730
954c1994
GS
1731=item PUSHMARK
1732
1733Opening bracket for arguments on a callback. See C<PUTBACK> and
1734L<perlcall>.
1735
1736 PUSHMARK;
1737
497711e7
GS
1738=for hackers
1739Found in file pp.h
1740
954c1994
GS
1741=item PUSHn
1742
1743Push a double onto the stack. The stack must have room for this element.
1744Handles 'set' magic. See C<XPUSHn>.
1745
1746 void PUSHn(NV nv)
1747
497711e7
GS
1748=for hackers
1749Found in file pp.h
1750
954c1994
GS
1751=item PUSHp
1752
1753Push a string onto the stack. The stack must have room for this element.
1754The C<len> indicates the length of the string. Handles 'set' magic. See
1755C<XPUSHp>.
1756
1757 void PUSHp(char* str, STRLEN len)
1758
497711e7
GS
1759=for hackers
1760Found in file pp.h
1761
954c1994
GS
1762=item PUSHs
1763
1c846c1f 1764Push an SV onto the stack. The stack must have room for this element.
954c1994
GS
1765Does not handle 'set' magic. See C<XPUSHs>.
1766
1767 void PUSHs(SV* sv)
1768
497711e7
GS
1769=for hackers
1770Found in file pp.h
1771
954c1994
GS
1772=item PUSHu
1773
1774Push an unsigned integer onto the stack. The stack must have room for this
1775element. See C<XPUSHu>.
1776
1777 void PUSHu(UV uv)
1778
497711e7
GS
1779=for hackers
1780Found in file pp.h
1781
954c1994
GS
1782=item PUTBACK
1783
1784Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>.
1785See C<PUSHMARK> and L<perlcall> for other uses.
1786
1787 PUTBACK;
1788
497711e7
GS
1789=for hackers
1790Found in file pp.h
1791
954c1994
GS
1792=item Renew
1793
1794The XSUB-writer's interface to the C C<realloc> function.
1795
1796 void Renew(void* ptr, int nitems, type)
1797
497711e7
GS
1798=for hackers
1799Found in file handy.h
1800
954c1994
GS
1801=item Renewc
1802
1803The XSUB-writer's interface to the C C<realloc> function, with
1804cast.
1805
1806 void Renewc(void* ptr, int nitems, type, cast)
1807
497711e7
GS
1808=for hackers
1809Found in file handy.h
1810
954c1994
GS
1811=item require_pv
1812
7d3fb230
BS
1813Tells Perl to C<require> the file named by the string argument. It is
1814analogous to the Perl code C<eval "require '$file'">. It's even
1815implemented that way; consider using Perl_load_module instead.
954c1994
GS
1816
1817NOTE: the perl_ form of this function is deprecated.
1818
1819 void require_pv(const char* pv)
1820
497711e7
GS
1821=for hackers
1822Found in file perl.c
1823
954c1994
GS
1824=item RETVAL
1825
1826Variable which is setup by C<xsubpp> to hold the return value for an
1827XSUB. This is always the proper type for the XSUB. See
1828L<perlxs/"The RETVAL Variable">.
1829
1830 (whatever) RETVAL
1831
497711e7
GS
1832=for hackers
1833Found in file XSUB.h
1834
954c1994
GS
1835=item Safefree
1836
1837The XSUB-writer's interface to the C C<free> function.
1838
49b8b560 1839 void Safefree(void* ptr)
954c1994 1840
497711e7
GS
1841=for hackers
1842Found in file handy.h
1843
954c1994
GS
1844=item savepv
1845
1846Copy a string to a safe spot. This does not use an SV.
1847
1848 char* savepv(const char* sv)
1849
497711e7
GS
1850=for hackers
1851Found in file util.c
1852
954c1994
GS
1853=item savepvn
1854
1855Copy a string to a safe spot. The C<len> indicates number of bytes to
1856copy. This does not use an SV.
1857
1858 char* savepvn(const char* sv, I32 len)
1859
497711e7
GS
1860=for hackers
1861Found in file util.c
1862
954c1994
GS
1863=item SAVETMPS
1864
1865Opening bracket for temporaries on a callback. See C<FREETMPS> and
1866L<perlcall>.
1867
1868 SAVETMPS;
1869
497711e7
GS
1870=for hackers
1871Found in file scope.h
1872
cd1ee231
JH
1873=item sharedsv_find
1874
1875Tries to find if a given SV has a shared backend, either by
1876looking at magic, or by checking if it is tied again threads::shared.
1877
1878 shared_sv* sharedsv_find(SV* sv)
1879
1880=for hackers
1881Found in file sharedsv.c
1882
1883=item sharedsv_init
1884
1885Saves a space for keeping SVs wider than an interpreter,
1886currently only stores a pointer to the first interpreter.
1887
1888 void sharedsv_init()
1889
1890=for hackers
1891Found in file sharedsv.c
1892
1893=item sharedsv_lock
1894
1895Recursive locks on a sharedsv.
1896Locks are dynamicly scoped at the level of the first lock.
1897 void sharedsv_lock(shared_sv* ssv)
1898
1899=for hackers
1900Found in file sharedsv.c
1901
1902=item sharedsv_new
1903
1904Allocates a new shared sv struct, you must yourself create the SV/AV/HV.
1905 shared_sv* sharedsv_new()
1906
1907=for hackers
1908Found in file sharedsv.c
1909
1910=item sharedsv_thrcnt_dec
1911
1912Decrements the threadcount of a shared sv. When a threads frontend is freed
1913this function should be called.
1914
1915 void sharedsv_thrcnt_dec(shared_sv* ssv)
1916
1917=for hackers
1918Found in file sharedsv.c
1919
1920=item sharedsv_thrcnt_inc
1921
1922Increments the threadcount of a sharedsv.
1923 void sharedsv_thrcnt_inc(shared_sv* ssv)
1924
1925=for hackers
1926Found in file sharedsv.c
1927
1928=item sharedsv_unlock
1929
1930Recursively unlocks a shared sv.
1931
1932 void sharedsv_unlock(shared_sv* ssv)
1933
1934=for hackers
1935Found in file sharedsv.c
1936
954c1994
GS
1937=item SP
1938
1939Stack pointer. This is usually handled by C<xsubpp>. See C<dSP> and
1940C<SPAGAIN>.
1941
497711e7
GS
1942=for hackers
1943Found in file pp.h
1944
954c1994
GS
1945=item SPAGAIN
1946
1947Refetch the stack pointer. Used after a callback. See L<perlcall>.
1948
1949 SPAGAIN;
1950
497711e7
GS
1951=for hackers
1952Found in file pp.h
1953
954c1994
GS
1954=item ST
1955
1956Used to access elements on the XSUB's stack.
1957
1958 SV* ST(int ix)
1959
497711e7
GS
1960=for hackers
1961Found in file XSUB.h
1962
954c1994
GS
1963=item strEQ
1964
1965Test two strings to see if they are equal. Returns true or false.
1966
1967 bool strEQ(char* s1, char* s2)
1968
497711e7
GS
1969=for hackers
1970Found in file handy.h
1971
954c1994
GS
1972=item strGE
1973
1974Test two strings to see if the first, C<s1>, is greater than or equal to
1975the second, C<s2>. Returns true or false.
1976
1977 bool strGE(char* s1, char* s2)
1978
497711e7
GS
1979=for hackers
1980Found in file handy.h
1981
954c1994
GS
1982=item strGT
1983
1984Test two strings to see if the first, C<s1>, is greater than the second,
1985C<s2>. Returns true or false.
1986
1987 bool strGT(char* s1, char* s2)
1988
497711e7
GS
1989=for hackers
1990Found in file handy.h
1991
954c1994
GS
1992=item strLE
1993
1994Test two strings to see if the first, C<s1>, is less than or equal to the
1995second, C<s2>. Returns true or false.
1996
1997 bool strLE(char* s1, char* s2)
1998
497711e7
GS
1999=for hackers
2000Found in file handy.h
2001
954c1994
GS
2002=item strLT
2003
2004Test two strings to see if the first, C<s1>, is less than the second,
2005C<s2>. Returns true or false.
2006
2007 bool strLT(char* s1, char* s2)
2008
497711e7
GS
2009=for hackers
2010Found in file handy.h
2011
954c1994
GS
2012=item strNE
2013
2014Test two strings to see if they are different. Returns true or
2015false.
2016
2017 bool strNE(char* s1, char* s2)
2018
497711e7
GS
2019=for hackers
2020Found in file handy.h
2021
954c1994
GS
2022=item strnEQ
2023
2024Test two strings to see if they are equal. The C<len> parameter indicates
2025the number of bytes to compare. Returns true or false. (A wrapper for
2026C<strncmp>).
2027
2028 bool strnEQ(char* s1, char* s2, STRLEN len)
2029
497711e7
GS
2030=for hackers
2031Found in file handy.h
2032
954c1994
GS
2033=item strnNE
2034
2035Test two strings to see if they are different. The C<len> parameter
2036indicates the number of bytes to compare. Returns true or false. (A
2037wrapper for C<strncmp>).
2038
2039 bool strnNE(char* s1, char* s2, STRLEN len)
2040
497711e7
GS
2041=for hackers
2042Found in file handy.h
2043
954c1994
GS
2044=item StructCopy
2045
4375e838 2046This is an architecture-independent macro to copy one structure to another.
954c1994
GS
2047
2048 void StructCopy(type src, type dest, type)
2049
497711e7
GS
2050=for hackers
2051Found in file handy.h
2052
954c1994
GS
2053=item SvCUR
2054
2055Returns the length of the string which is in the SV. See C<SvLEN>.
2056
2057 STRLEN SvCUR(SV* sv)
2058
497711e7
GS
2059=for hackers
2060Found in file sv.h
2061
954c1994
GS
2062=item SvCUR_set
2063
2064Set the length of the string which is in the SV. See C<SvCUR>.
2065
2066 void SvCUR_set(SV* sv, STRLEN len)
2067
497711e7
GS
2068=for hackers
2069Found in file sv.h
2070
954c1994
GS
2071=item SvEND
2072
2073Returns a pointer to the last character in the string which is in the SV.
2074See C<SvCUR>. Access the character as *(SvEND(sv)).
2075
2076 char* SvEND(SV* sv)
2077
497711e7
GS
2078=for hackers
2079Found in file sv.h
2080
954c1994
GS
2081=item SvGETMAGIC
2082
2083Invokes C<mg_get> on an SV if it has 'get' magic. This macro evaluates its
2084argument more than once.
2085
2086 void SvGETMAGIC(SV* sv)
2087
497711e7
GS
2088=for hackers
2089Found in file sv.h
2090
954c1994
GS
2091=item SvGROW
2092
2093Expands the character buffer in the SV so that it has room for the
2094indicated number of bytes (remember to reserve space for an extra trailing
2095NUL character). Calls C<sv_grow> to perform the expansion if necessary.
2096Returns a pointer to the character buffer.
2097
679ac26e 2098 char * SvGROW(SV* sv, STRLEN len)
954c1994 2099
497711e7
GS
2100=for hackers
2101Found in file sv.h
2102
954c1994
GS
2103=item SvIOK
2104
2105Returns a boolean indicating whether the SV contains an integer.
2106
2107 bool SvIOK(SV* sv)
2108
497711e7
GS
2109=for hackers
2110Found in file sv.h
2111
954c1994
GS
2112=item SvIOKp
2113
2114Returns a boolean indicating whether the SV contains an integer. Checks
2115the B<private> setting. Use C<SvIOK>.
2116
2117 bool SvIOKp(SV* sv)
2118
497711e7
GS
2119=for hackers
2120Found in file sv.h
2121
e331fc52
JH
2122=item SvIOK_notUV
2123
2124Returns a boolean indicating whether the SV contains an signed integer.
2125
2126 void SvIOK_notUV(SV* sv)
2127
2128=for hackers
2129Found in file sv.h
2130
954c1994
GS
2131=item SvIOK_off
2132
2133Unsets the IV status of an SV.
2134
2135 void SvIOK_off(SV* sv)
2136
497711e7
GS
2137=for hackers
2138Found in file sv.h
2139
954c1994
GS
2140=item SvIOK_on
2141
2142Tells an SV that it is an integer.
2143
2144 void SvIOK_on(SV* sv)
2145
497711e7
GS
2146=for hackers
2147Found in file sv.h
2148
954c1994
GS
2149=item SvIOK_only
2150
2151Tells an SV that it is an integer and disables all other OK bits.
2152
2153 void SvIOK_only(SV* sv)
2154
497711e7
GS
2155=for hackers
2156Found in file sv.h
2157
e331fc52
JH
2158=item SvIOK_only_UV
2159
2160Tells and SV that it is an unsigned integer and disables all other OK bits.
2161
2162 void SvIOK_only_UV(SV* sv)
2163
2164=for hackers
2165Found in file sv.h
2166
2167=item SvIOK_UV
2168
2169Returns a boolean indicating whether the SV contains an unsigned integer.
2170
2171 void SvIOK_UV(SV* sv)
2172
2173=for hackers
2174Found in file sv.h
2175
954c1994
GS
2176=item SvIV
2177
645c22ef
DM
2178Coerces the given SV to an integer and returns it. See C<SvIVx> for a
2179version which guarantees to evaluate sv only once.
954c1994
GS
2180
2181 IV SvIV(SV* sv)
2182
497711e7
GS
2183=for hackers
2184Found in file sv.h
2185
e5dd39fc 2186=item SvIVx
954c1994 2187
e5dd39fc
AB
2188Coerces the given SV to an integer and returns it. Guarantees to evaluate
2189sv only once. Use the more efficent C<SvIV> otherwise.
954c1994 2190
e5dd39fc 2191 IV SvIVx(SV* sv)
954c1994 2192
497711e7
GS
2193=for hackers
2194Found in file sv.h
2195
e5dd39fc 2196=item SvIVX
645c22ef 2197
e5dd39fc
AB
2198Returns the raw value in the SV's IV slot, without checks or conversions.
2199Only use when you are sure SvIOK is true. See also C<SvIV()>.
645c22ef 2200
e5dd39fc 2201 IV SvIVX(SV* sv)
645c22ef
DM
2202
2203=for hackers
2204Found in file sv.h
2205
954c1994
GS
2206=item SvLEN
2207
91e74348
JH
2208Returns the size of the string buffer in the SV, not including any part
2209attributable to C<SvOOK>. See C<SvCUR>.
954c1994
GS
2210
2211 STRLEN SvLEN(SV* sv)
2212
497711e7
GS
2213=for hackers
2214Found in file sv.h
2215
954c1994
GS
2216=item SvNIOK
2217
2218Returns a boolean indicating whether the SV contains a number, integer or
2219double.
2220
2221 bool SvNIOK(SV* sv)
2222
497711e7
GS
2223=for hackers
2224Found in file sv.h
2225
954c1994
GS
2226=item SvNIOKp
2227
2228Returns a boolean indicating whether the SV contains a number, integer or
2229double. Checks the B<private> setting. Use C<SvNIOK>.
2230
2231 bool SvNIOKp(SV* sv)
2232
497711e7
GS
2233=for hackers
2234Found in file sv.h
2235
954c1994
GS
2236=item SvNIOK_off
2237
2238Unsets the NV/IV status of an SV.
2239
2240 void SvNIOK_off(SV* sv)
2241
497711e7
GS
2242=for hackers
2243Found in file sv.h
2244
954c1994
GS
2245=item SvNOK
2246
2247Returns a boolean indicating whether the SV contains a double.
2248
2249 bool SvNOK(SV* sv)
2250
497711e7
GS
2251=for hackers
2252Found in file sv.h
2253
954c1994
GS
2254=item SvNOKp
2255
2256Returns a boolean indicating whether the SV contains a double. Checks the
2257B<private> setting. Use C<SvNOK>.
2258
2259 bool SvNOKp(SV* sv)
2260
497711e7
GS
2261=for hackers
2262Found in file sv.h
2263
954c1994
GS
2264=item SvNOK_off
2265
2266Unsets the NV status of an SV.
2267
2268 void SvNOK_off(SV* sv)
2269
497711e7
GS
2270=for hackers
2271Found in file sv.h
2272
954c1994
GS
2273=item SvNOK_on
2274
2275Tells an SV that it is a double.
2276
2277 void SvNOK_on(SV* sv)
2278
497711e7
GS
2279=for hackers
2280Found in file sv.h
2281
954c1994
GS
2282=item SvNOK_only
2283
2284Tells an SV that it is a double and disables all other OK bits.
2285
2286 void SvNOK_only(SV* sv)
2287
497711e7
GS
2288=for hackers
2289Found in file sv.h
2290
954c1994
GS
2291=item SvNV
2292
645c22ef
DM
2293Coerce the given SV to a double and return it. See C<SvNVx> for a version
2294which guarantees to evaluate sv only once.
954c1994
GS
2295
2296 NV SvNV(SV* sv)
2297
497711e7
GS
2298=for hackers
2299Found in file sv.h
2300
8eceec63 2301=item SvNVx
645c22ef 2302
8eceec63
SC
2303Coerces the given SV to a double and returns it. Guarantees to evaluate
2304sv only once. Use the more efficent C<SvNV> otherwise.
645c22ef 2305
8eceec63 2306 NV SvNVx(SV* sv)
645c22ef
DM
2307
2308=for hackers
2309Found in file sv.h
2310
8eceec63 2311=item SvNVX
954c1994 2312
8eceec63
SC
2313Returns the raw value in the SV's NV slot, without checks or conversions.
2314Only use when you are sure SvNOK is true. See also C<SvNV()>.
954c1994 2315
8eceec63 2316 NV SvNVX(SV* sv)
954c1994 2317
497711e7
GS
2318=for hackers
2319Found in file sv.h
2320
954c1994
GS
2321=item SvOK
2322
2323Returns a boolean indicating whether the value is an SV.
2324
2325 bool SvOK(SV* sv)
2326
497711e7
GS
2327=for hackers
2328Found in file sv.h
2329
954c1994
GS
2330=item SvOOK
2331
2332Returns a boolean indicating whether the SvIVX is a valid offset value for
2333the SvPVX. This hack is used internally to speed up removal of characters
2334from the beginning of a SvPV. When SvOOK is true, then the start of the
2335allocated string buffer is really (SvPVX - SvIVX).
2336
2337 bool SvOOK(SV* sv)
2338
497711e7
GS
2339=for hackers
2340Found in file sv.h
2341
954c1994
GS
2342=item SvPOK
2343
2344Returns a boolean indicating whether the SV contains a character
2345string.
2346
2347 bool SvPOK(SV* sv)
2348
497711e7
GS
2349=for hackers
2350Found in file sv.h
2351
954c1994
GS
2352=item SvPOKp
2353
2354Returns a boolean indicating whether the SV contains a character string.
2355Checks the B<private> setting. Use C<SvPOK>.
2356
2357 bool SvPOKp(SV* sv)
2358
497711e7
GS
2359=for hackers
2360Found in file sv.h
2361
954c1994
GS
2362=item SvPOK_off
2363
2364Unsets the PV status of an SV.
2365
2366 void SvPOK_off(SV* sv)
2367
497711e7
GS
2368=for hackers
2369Found in file sv.h
2370
954c1994
GS
2371=item SvPOK_on
2372
2373Tells an SV that it is a string.
2374
2375 void SvPOK_on(SV* sv)
2376
497711e7
GS
2377=for hackers
2378Found in file sv.h
2379
954c1994
GS
2380=item SvPOK_only
2381
2382Tells an SV that it is a string and disables all other OK bits.
d5ce4a7c 2383Will also turn off the UTF8 status.
954c1994
GS
2384
2385 void SvPOK_only(SV* sv)
2386
497711e7
GS
2387=for hackers
2388Found in file sv.h
2389
914184e1
JH
2390=item SvPOK_only_UTF8
2391
d5ce4a7c
GA
2392Tells an SV that it is a string and disables all other OK bits,
2393and leaves the UTF8 status as it was.
f1a1024e 2394
914184e1
JH
2395 void SvPOK_only_UTF8(SV* sv)
2396
2397=for hackers
2398Found in file sv.h
2399
954c1994
GS
2400=item SvPV
2401
2402Returns a pointer to the string in the SV, or a stringified form of the SV
645c22ef
DM
2403if the SV does not contain a string. Handles 'get' magic. See also
2404C<SvPVx> for a version which guarantees to evaluate sv only once.
954c1994
GS
2405
2406 char* SvPV(SV* sv, STRLEN len)
2407
497711e7
GS
2408=for hackers
2409Found in file sv.h
2410
645c22ef
DM
2411=item SvPVbyte
2412
2413Like C<SvPV>, but converts sv to byte representation first if necessary.
2414
2415 char* SvPVbyte(SV* sv, STRLEN len)
2416
2417=for hackers
2418Found in file sv.h
2419
2420=item SvPVbytex
2421
2422Like C<SvPV>, but converts sv to byte representation first if necessary.
2423Guarantees to evalute sv only once; use the more efficient C<SvPVbyte>
2424otherwise.
2425
2426
2427 char* SvPVbytex(SV* sv, STRLEN len)
2428
2429=for hackers
2430Found in file sv.h
2431
2432=item SvPVbytex_force
2433
2434Like C<SvPV_force>, but converts sv to byte representation first if necessary.
2435Guarantees to evalute sv only once; use the more efficient C<SvPVbyte_force>
2436otherwise.
2437
2438 char* SvPVbytex_force(SV* sv, STRLEN len)
2439
2440=for hackers
2441Found in file sv.h
2442
2443=item SvPVbyte_force
2444
2445Like C<SvPV_force>, but converts sv to byte representation first if necessary.
2446
2447 char* SvPVbyte_force(SV* sv, STRLEN len)
2448
2449=for hackers
2450Found in file sv.h
2451
2452=item SvPVbyte_nolen
2453
2454Like C<SvPV_nolen>, but converts sv to byte representation first if necessary.
2455
2456 char* SvPVbyte_nolen(SV* sv, STRLEN len)
2457
2458=for hackers
2459Found in file sv.h
2460
2461=item SvPVutf8
2462
2463Like C<SvPV>, but converts sv to uft8 first if necessary.
2464
2465 char* SvPVutf8(SV* sv, STRLEN len)
2466
2467=for hackers
2468Found in file sv.h
2469
2470=item SvPVutf8x
2471
2472Like C<SvPV>, but converts sv to uft8 first if necessary.
2473Guarantees to evalute sv only once; use the more efficient C<SvPVutf8>
2474otherwise.
2475
2476 char* SvPVutf8x(SV* sv, STRLEN len)
2477
2478=for hackers
2479Found in file sv.h
2480
2481=item SvPVutf8x_force
2482
2483Like C<SvPV_force>, but converts sv to uft8 first if necessary.
2484Guarantees to evalute sv only once; use the more efficient C<SvPVutf8_force>
2485otherwise.
2486
2487 char* SvPVutf8x_force(SV* sv, STRLEN len)
2488
2489=for hackers
2490Found in file sv.h
2491
2492=item SvPVutf8_force
2493
2494Like C<SvPV_force>, but converts sv to uft8 first if necessary.
2495
2496 char* SvPVutf8_force(SV* sv, STRLEN len)
2497
2498=for hackers
2499Found in file sv.h
2500
2501=item SvPVutf8_nolen
2502
2503Like C<SvPV_nolen>, but converts sv to uft8 first if necessary.
2504
2505 char* SvPVutf8_nolen(SV* sv, STRLEN len)
2506
2507=for hackers
2508Found in file sv.h
2509
e5dd39fc 2510=item SvPVx
645c22ef 2511
e5dd39fc 2512A version of C<SvPV> which guarantees to evaluate sv only once.
645c22ef 2513
e5dd39fc 2514 char* SvPVx(SV* sv, STRLEN len)
645c22ef
DM
2515
2516=for hackers
2517Found in file sv.h
2518
e5dd39fc 2519=item SvPVX
954c1994 2520
e5dd39fc
AB
2521Returns a pointer to the physical string in the SV. The SV must contain a
2522string.
954c1994 2523
e5dd39fc 2524 char* SvPVX(SV* sv)
954c1994 2525
497711e7
GS
2526=for hackers
2527Found in file sv.h
2528
954c1994
GS
2529=item SvPV_force
2530
2531Like <SvPV> but will force the SV into becoming a string (SvPOK). You want
2532force if you are going to update the SvPVX directly.
2533
2534 char* SvPV_force(SV* sv, STRLEN len)
2535
497711e7
GS
2536=for hackers
2537Found in file sv.h
2538
645c22ef
DM
2539=item SvPV_force_nomg
2540
2541Like <SvPV> but will force the SV into becoming a string (SvPOK). You want
2542force if you are going to update the SvPVX directly. Doesn't process magic.
2543
2544 char* SvPV_force_nomg(SV* sv, STRLEN len)
2545
2546=for hackers
2547Found in file sv.h
2548
954c1994
GS
2549=item SvPV_nolen
2550
2551Returns a pointer to the string in the SV, or a stringified form of the SV
2552if the SV does not contain a string. Handles 'get' magic.
2553
2554 char* SvPV_nolen(SV* sv)
2555
497711e7
GS
2556=for hackers
2557Found in file sv.h
2558
954c1994
GS
2559=item SvREFCNT
2560
2561Returns the value of the object's reference count.
2562
2563 U32 SvREFCNT(SV* sv)
2564
497711e7
GS
2565=for hackers
2566Found in file sv.h
2567
954c1994
GS
2568=item SvREFCNT_dec
2569
2570Decrements the reference count of the given SV.
2571
2572 void SvREFCNT_dec(SV* sv)
2573
497711e7
GS
2574=for hackers
2575Found in file sv.h
2576
954c1994
GS
2577=item SvREFCNT_inc
2578
2579Increments the reference count of the given SV.
2580
2581 SV* SvREFCNT_inc(SV* sv)
2582
497711e7
GS
2583=for hackers
2584Found in file sv.h
2585
954c1994
GS
2586=item SvROK
2587
2588Tests if the SV is an RV.
2589
2590 bool SvROK(SV* sv)
2591
497711e7
GS
2592=for hackers
2593Found in file sv.h
2594
954c1994
GS
2595=item SvROK_off
2596
2597Unsets the RV status of an SV.
2598
2599 void SvROK_off(SV* sv)
2600
497711e7
GS
2601=for hackers
2602Found in file sv.h
2603
954c1994
GS
2604=item SvROK_on
2605
2606Tells an SV that it is an RV.
2607
2608 void SvROK_on(SV* sv)
2609
497711e7
GS
2610=for hackers
2611Found in file sv.h
2612
954c1994
GS
2613=item SvRV
2614
2615Dereferences an RV to return the SV.
2616
2617 SV* SvRV(SV* sv)
2618
497711e7
GS
2619=for hackers
2620Found in file sv.h
2621
954c1994
GS
2622=item SvSETMAGIC
2623
2624Invokes C<mg_set> on an SV if it has 'set' magic. This macro evaluates its
2625argument more than once.
2626
2627 void SvSETMAGIC(SV* sv)
2628
497711e7
GS
2629=for hackers
2630Found in file sv.h
2631
645c22ef
DM
2632=item SvSetMagicSV
2633
2634Like C<SvSetSV>, but does any set magic required afterwards.
2635
2636 void SvSetMagicSV(SV* dsb, SV* ssv)
2637
2638=for hackers
2639Found in file sv.h
2640
2641=item SvSetMagicSV_nosteal
2642
2643Like C<SvSetMagicSV>, but does any set magic required afterwards.
2644
2645 void SvSetMagicSV_nosteal(SV* dsv, SV* ssv)
2646
2647=for hackers
2648Found in file sv.h
2649
954c1994
GS
2650=item SvSetSV
2651
2652Calls C<sv_setsv> if dsv is not the same as ssv. May evaluate arguments
2653more than once.
2654
2655 void SvSetSV(SV* dsb, SV* ssv)
2656
497711e7
GS
2657=for hackers
2658Found in file sv.h
2659
954c1994
GS
2660=item SvSetSV_nosteal
2661
2662Calls a non-destructive version of C<sv_setsv> if dsv is not the same as
2663ssv. May evaluate arguments more than once.
2664
2665 void SvSetSV_nosteal(SV* dsv, SV* ssv)
2666
497711e7
GS
2667=for hackers
2668Found in file sv.h
2669
954c1994
GS
2670=item SvSTASH
2671
2672Returns the stash of the SV.
2673
2674 HV* SvSTASH(SV* sv)
2675
497711e7
GS
2676=for hackers
2677Found in file sv.h
2678
954c1994
GS
2679=item SvTAINT
2680
2681Taints an SV if tainting is enabled
2682
2683 void SvTAINT(SV* sv)
2684
497711e7
GS
2685=for hackers
2686Found in file sv.h
2687
954c1994
GS
2688=item SvTAINTED
2689
2690Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if
2691not.
2692
2693 bool SvTAINTED(SV* sv)
2694
497711e7
GS
2695=for hackers
2696Found in file sv.h
2697
954c1994
GS
2698=item SvTAINTED_off
2699
2700Untaints an SV. Be I<very> careful with this routine, as it short-circuits
2701some of Perl's fundamental security features. XS module authors should not
2702use this function unless they fully understand all the implications of
2703unconditionally untainting the value. Untainting should be done in the
2704standard perl fashion, via a carefully crafted regexp, rather than directly
2705untainting variables.
2706
2707 void SvTAINTED_off(SV* sv)
2708
497711e7
GS
2709=for hackers
2710Found in file sv.h
2711
954c1994
GS
2712=item SvTAINTED_on
2713
2714Marks an SV as tainted.
2715
2716 void SvTAINTED_on(SV* sv)
2717
497711e7
GS
2718=for hackers
2719Found in file sv.h
2720
954c1994
GS
2721=item SvTRUE
2722
2723Returns a boolean indicating whether Perl would evaluate the SV as true or
2724false, defined or undefined. Does not handle 'get' magic.
2725
2726 bool SvTRUE(SV* sv)
2727
497711e7
GS
2728=for hackers
2729Found in file sv.h
2730
cd1ee231 2731=item svtype
e5dd39fc 2732
cd1ee231
JH
2733An enum of flags for Perl types. These are found in the file B<sv.h>
2734in the C<svtype> enum. Test these flags with the C<SvTYPE> macro.
34f7a5fe 2735
497711e7
GS
2736=for hackers
2737Found in file sv.h
2738
cd1ee231 2739=item SvTYPE
1fcf4c12 2740
cd1ee231
JH
2741Returns the type of the SV. See C<svtype>.
2742
2743 svtype SvTYPE(SV* sv)
954c1994 2744
497711e7
GS
2745=for hackers
2746Found in file sv.h
2747
954c1994
GS
2748=item SVt_IV
2749
2750Integer type flag for scalars. See C<svtype>.
2751
497711e7
GS
2752=for hackers
2753Found in file sv.h
2754
954c1994
GS
2755=item SVt_NV
2756
2757Double type flag for scalars. See C<svtype>.
2758
497711e7
GS
2759=for hackers
2760Found in file sv.h
2761
954c1994
GS
2762=item SVt_PV
2763
2764Pointer type flag for scalars. See C<svtype>.
2765
497711e7
GS
2766=for hackers
2767Found in file sv.h
2768
954c1994
GS
2769=item SVt_PVAV
2770
2771Type flag for arrays. See C<svtype>.
2772
497711e7
GS
2773=for hackers
2774Found in file sv.h
2775
954c1994
GS
2776=item SVt_PVCV
2777
2778Type flag for code refs. See C<svtype>.
2779
497711e7
GS
2780=for hackers
2781Found in file sv.h
2782
954c1994
GS
2783=item SVt_PVHV
2784
2785Type flag for hashes. See C<svtype>.
2786
497711e7
GS
2787=for hackers
2788Found in file sv.h
2789
954c1994
GS
2790=item SVt_PVMG
2791
2792Type flag for blessed scalars. See C<svtype>.
2793
497711e7
GS
2794=for hackers
2795Found in file sv.h
2796
a8586c98
JH
2797=item SvUOK
2798
2799Returns a boolean indicating whether the SV contains an unsigned integer.
2800
2801 void SvUOK(SV* sv)
2802
2803=for hackers
2804Found in file sv.h
2805
954c1994
GS
2806=item SvUPGRADE
2807
2808Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to
2809perform the upgrade if necessary. See C<svtype>.
2810
2811 void SvUPGRADE(SV* sv, svtype type)
2812
497711e7
GS
2813=for hackers
2814Found in file sv.h
2815
914184e1
JH
2816=item SvUTF8
2817
2818Returns a boolean indicating whether the SV contains UTF-8 encoded data.
2819
2820 void SvUTF8(SV* sv)
2821
2822=for hackers
2823Found in file sv.h
2824
2825=item SvUTF8_off
2826
2827Unsets the UTF8 status of an SV.
2828
2829 void SvUTF8_off(SV *sv)
2830
2831=for hackers
2832Found in file sv.h
2833
2834=item SvUTF8_on
2835
d5ce4a7c
GA
2836Turn on the UTF8 status of an SV (the data is not changed, just the flag).
2837Do not use frivolously.
914184e1
JH
2838
2839 void SvUTF8_on(SV *sv)
2840
2841=for hackers
2842Found in file sv.h
2843
954c1994
GS
2844=item SvUV
2845
645c22ef
DM
2846Coerces the given SV to an unsigned integer and returns it. See C<SvUVx>
2847for a version which guarantees to evaluate sv only once.
954c1994
GS
2848
2849 UV SvUV(SV* sv)
2850
497711e7
GS
2851=for hackers
2852Found in file sv.h
2853
89423764 2854=item SvUVX
954c1994 2855
89423764
GS
2856Returns the raw value in the SV's UV slot, without checks or conversions.
2857Only use when you are sure SvIOK is true. See also C<SvUV()>.
954c1994 2858
89423764 2859 UV SvUVX(SV* sv)
954c1994 2860
497711e7
GS
2861=for hackers
2862Found in file sv.h
2863
89423764 2864=item SvUVx
645c22ef 2865
89423764
GS
2866Coerces the given SV to an unsigned integer and returns it. Guarantees to
2867evaluate sv only once. Use the more efficent C<SvUV> otherwise.
645c22ef 2868
89423764 2869 UV SvUVx(SV* sv)
645c22ef
DM
2870
2871=for hackers
2872Found in file sv.h
2873
2874=item sv_2bool
2875
2876This function is only called on magical items, and is only used by
2877sv_true() or its macro equivalent.
2878
2879 bool sv_2bool(SV* sv)
2880
2881=for hackers
2882Found in file sv.c
2883
2884=item sv_2cv
2885
2886Using various gambits, try to get a CV from an SV; in addition, try if
2887possible to set C<*st> and C<*gvp> to the stash and GV associated with it.
2888
2889 CV* sv_2cv(SV* sv, HV** st, GV** gvp, I32 lref)
2890
2891=for hackers
2892Found in file sv.c
2893
2894=item sv_2io
2895
2896Using various gambits, try to get an IO from an SV: the IO slot if its a
2897GV; or the recursive result if we're an RV; or the IO slot of the symbol
2898named after the PV if we're a string.
2899
2900 IO* sv_2io(SV* sv)
2901
2902=for hackers
2903Found in file sv.c
2904
2905=item sv_2iv
2906
2907Return the integer value of an SV, doing any necessary string conversion,
2908magic etc. Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros.
2909
2910 IV sv_2iv(SV* sv)
2911
2912=for hackers
2913Found in file sv.c
2914
954c1994
GS
2915=item sv_2mortal
2916
793edb8a
JH
2917Marks an existing SV as mortal. The SV will be destroyed "soon", either
2918by an explicit call to FREETMPS, or by an implicit call at places such as
2919statement boundaries. See also C<sv_newmortal> and C<sv_mortalcopy>.
954c1994
GS
2920
2921 SV* sv_2mortal(SV* sv)
2922
497711e7
GS
2923=for hackers
2924Found in file sv.c
2925
645c22ef
DM
2926=item sv_2nv
2927
2928Return the num value of an SV, doing any necessary string or integer
2929conversion, magic etc. Normally used via the C<SvNV(sv)> and C<SvNVx(sv)>
2930macros.
2931
2932 NV sv_2nv(SV* sv)
2933
2934=for hackers
2935Found in file sv.c
2936
451be7b1
DM
2937=item sv_2pvbyte
2938
2939Return a pointer to the byte-encoded representation of the SV, and set *lp
2940to its length. May cause the SV to be downgraded from UTF8 as a
2941side-effect.
2942
2943Usually accessed via the C<SvPVbyte> macro.
2944
2945 char* sv_2pvbyte(SV* sv, STRLEN* lp)
2946
2947=for hackers
2948Found in file sv.c
2949
645c22ef
DM
2950=item sv_2pvbyte_nolen
2951
2952Return a pointer to the byte-encoded representation of the SV.
2953May cause the SV to be downgraded from UTF8 as a side-effect.
2954
2955Usually accessed via the C<SvPVbyte_nolen> macro.
2956
2957 char* sv_2pvbyte_nolen(SV* sv)
2958
2959=for hackers
2960Found in file sv.c
2961
451be7b1
DM
2962=item sv_2pvutf8
2963
2964Return a pointer to the UTF8-encoded representation of the SV, and set *lp
2965to its length. May cause the SV to be upgraded to UTF8 as a side-effect.
2966
2967Usually accessed via the C<SvPVutf8> macro.
2968
2969 char* sv_2pvutf8(SV* sv, STRLEN* lp)
2970
2971=for hackers
2972Found in file sv.c
2973
645c22ef
DM
2974=item sv_2pvutf8_nolen
2975
2976Return a pointer to the UTF8-encoded representation of the SV.
2977May cause the SV to be upgraded to UTF8 as a side-effect.
2978
2979Usually accessed via the C<SvPVutf8_nolen> macro.
2980
2981 char* sv_2pvutf8_nolen(SV* sv)
2982
2983=for hackers
2984Found in file sv.c
2985
2986=item sv_2pv_flags
2987
ff276b08 2988Returns a pointer to the string value of an SV, and sets *lp to its length.
645c22ef
DM
2989If flags includes SV_GMAGIC, does an mg_get() first. Coerces sv to a string
2990if necessary.
2991Normally invoked via the C<SvPV_flags> macro. C<sv_2pv()> and C<sv_2pv_nomg>
2992usually end up here too.
2993
2994 char* sv_2pv_flags(SV* sv, STRLEN* lp, I32 flags)
2995
2996=for hackers
2997Found in file sv.c
2998
2999=item sv_2pv_nolen
3000
3001Like C<sv_2pv()>, but doesn't return the length too. You should usually
3002use the macro wrapper C<SvPV_nolen(sv)> instead.
3003 char* sv_2pv_nolen(SV* sv)
3004
3005=for hackers
3006Found in file sv.c
3007
3008=item sv_2uv
3009
3010Return the unsigned integer value of an SV, doing any necessary string
3011conversion, magic etc. Normally used via the C<SvUV(sv)> and C<SvUVx(sv)>
3012macros.
3013
3014 UV sv_2uv(SV* sv)
3015
3016=for hackers
3017Found in file sv.c
3018
3019=item sv_backoff
3020
3021Remove any string offset. You should normally use the C<SvOOK_off> macro
3022wrapper instead.
3023
3024 int sv_backoff(SV* sv)
3025
3026=for hackers
3027Found in file sv.c
3028
954c1994
GS
3029=item sv_bless
3030
3031Blesses an SV into a specified package. The SV must be an RV. The package
3032must be designated by its stash (see C<gv_stashpv()>). The reference count
3033of the SV is unaffected.
3034
3035 SV* sv_bless(SV* sv, HV* stash)
3036
497711e7
GS
3037=for hackers
3038Found in file sv.c
3039
954c1994
GS
3040=item sv_catpv
3041
3042Concatenates the string onto the end of the string which is in the SV.
d5ce4a7c
GA
3043If the SV has the UTF8 status set, then the bytes appended should be
3044valid UTF8. Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>.
954c1994
GS
3045
3046 void sv_catpv(SV* sv, const char* ptr)
3047
497711e7
GS
3048=for hackers
3049Found in file sv.c
3050
954c1994
GS
3051=item sv_catpvf
3052
d5ce4a7c
GA
3053Processes its arguments like C<sprintf> and appends the formatted
3054output to an SV. If the appended data contains "wide" characters
3055(including, but not limited to, SVs with a UTF-8 PV formatted with %s,
3056and characters >255 formatted with %c), the original SV might get
3057upgraded to UTF-8. Handles 'get' magic, but not 'set' magic.
3058C<SvSETMAGIC()> must typically be called after calling this function
3059to handle 'set' magic.
954c1994
GS
3060
3061 void sv_catpvf(SV* sv, const char* pat, ...)
3062
497711e7
GS
3063=for hackers
3064Found in file sv.c
3065
954c1994
GS
3066=item sv_catpvf_mg
3067
3068Like C<sv_catpvf>, but also handles 'set' magic.
3069
3070 void sv_catpvf_mg(SV *sv, const char* pat, ...)
3071
497711e7
GS
3072=for hackers
3073Found in file sv.c
3074
954c1994
GS
3075=item sv_catpvn
3076
3077Concatenates the string onto the end of the string which is in the SV. The
d5ce4a7c
GA
3078C<len> indicates number of bytes to copy. If the SV has the UTF8
3079status set, then the bytes appended should be valid UTF8.
3080Handles 'get' magic, but not 'set' magic. See C<sv_catpvn_mg>.
954c1994
GS
3081
3082 void sv_catpvn(SV* sv, const char* ptr, STRLEN len)
3083
497711e7
GS
3084=for hackers
3085Found in file sv.c
3086
8d6d96c1
HS
3087=item sv_catpvn_flags
3088
3089Concatenates the string onto the end of the string which is in the SV. The
3090C<len> indicates number of bytes to copy. If the SV has the UTF8
3091status set, then the bytes appended should be valid UTF8.
3092If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<dsv> if
3093appropriate, else not. C<sv_catpvn> and C<sv_catpvn_nomg> are implemented
3094in terms of this function.
3095
3096 void sv_catpvn_flags(SV* sv, const char* ptr, STRLEN len, I32 flags)
3097
3098=for hackers
3099Found in file sv.c
3100
954c1994
GS
3101=item sv_catpvn_mg
3102
3103Like C<sv_catpvn>, but also handles 'set' magic.
3104
3105 void sv_catpvn_mg(SV *sv, const char *ptr, STRLEN len)
3106
497711e7
GS
3107=for hackers
3108Found in file sv.c
3109
954c1994
GS
3110=item sv_catpv_mg
3111
3112Like C<sv_catpv>, but also handles 'set' magic.
3113
3114 void sv_catpv_mg(SV *sv, const char *ptr)
3115
497711e7
GS
3116=for hackers
3117Found in file sv.c
3118
954c1994
GS
3119=item sv_catsv
3120
1aa99e6b
IH
3121Concatenates the string from SV C<ssv> onto the end of the string in
3122SV C<dsv>. Modifies C<dsv> but not C<ssv>. Handles 'get' magic, but
3123not 'set' magic. See C<sv_catsv_mg>.
954c1994
GS
3124
3125 void sv_catsv(SV* dsv, SV* ssv)
3126
497711e7
GS
3127=for hackers
3128Found in file sv.c
3129
8d6d96c1
HS
3130=item sv_catsv_flags
3131
3132Concatenates the string from SV C<ssv> onto the end of the string in
3133SV C<dsv>. Modifies C<dsv> but not C<ssv>. If C<flags> has C<SV_GMAGIC>
3134bit set, will C<mg_get> on the SVs if appropriate, else not. C<sv_catsv>
3135and C<sv_catsv_nomg> are implemented in terms of this function.
3136
3137 void sv_catsv_flags(SV* dsv, SV* ssv, I32 flags)
3138
3139=for hackers
3140Found in file sv.c
3141
954c1994
GS
3142=item sv_catsv_mg
3143
3144Like C<sv_catsv>, but also handles 'set' magic.
3145
3146 void sv_catsv_mg(SV *dstr, SV *sstr)
3147
497711e7
GS
3148=for hackers
3149Found in file sv.c
3150
954c1994
GS
3151=item sv_chop
3152
1c846c1f 3153Efficient removal of characters from the beginning of the string buffer.
954c1994
GS
3154SvPOK(sv) must be true and the C<ptr> must be a pointer to somewhere inside
3155the string buffer. The C<ptr> becomes the first character of the adjusted
645c22ef 3156string. Uses the "OOK hack".
954c1994
GS
3157
3158 void sv_chop(SV* sv, char* ptr)
3159
497711e7
GS
3160=for hackers
3161Found in file sv.c
3162
c461cf8f
JH
3163=item sv_clear
3164
645c22ef
DM
3165Clear an SV: call any destructors, free up any memory used by the body,
3166and free the body itself. The SV's head is I<not> freed, although
3167its type is set to all 1's so that it won't inadvertently be assumed
3168to be live during global destruction etc.
3169This function should only be called when REFCNT is zero. Most of the time
3170you'll want to call C<sv_free()> (or its macro wrapper C<SvREFCNT_dec>)
3171instead.
c461cf8f
JH
3172
3173 void sv_clear(SV* sv)
3174
3175=for hackers
3176Found in file sv.c
3177
954c1994
GS
3178=item sv_cmp
3179
3180Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the
3181string in C<sv1> is less than, equal to, or greater than the string in
645c22ef
DM
3182C<sv2>. Is UTF-8 and 'use bytes' aware, handles get magic, and will
3183coerce its args to strings if necessary. See also C<sv_cmp_locale>.
954c1994
GS
3184
3185 I32 sv_cmp(SV* sv1, SV* sv2)
3186
497711e7
GS
3187=for hackers
3188Found in file sv.c
3189
c461cf8f
JH
3190=item sv_cmp_locale
3191
645c22ef
DM
3192Compares the strings in two SVs in a locale-aware manner. Is UTF-8 and
3193'use bytes' aware, handles get magic, and will coerce its args to strings
3194if necessary. See also C<sv_cmp_locale>. See also C<sv_cmp>.
c461cf8f
JH
3195
3196 I32 sv_cmp_locale(SV* sv1, SV* sv2)
3197
3198=for hackers
3199Found in file sv.c
3200
645c22ef
DM
3201=item sv_collxfrm
3202
3203Add Collate Transform magic to an SV if it doesn't already have it.
3204
3205Any scalar variable may carry PERL_MAGIC_collxfrm magic that contains the
3206scalar data of the variable, but transformed to such a format that a normal
3207memory comparison can be used to compare the data according to the locale
3208settings.
3209
3210 char* sv_collxfrm(SV* sv, STRLEN* nxp)
3211
3212=for hackers
3213Found in file sv.c
3214
954c1994
GS
3215=item sv_dec
3216
645c22ef
DM
3217Auto-decrement of the value in the SV, doing string to numeric conversion
3218if necessary. Handles 'get' magic.
954c1994
GS
3219
3220 void sv_dec(SV* sv)
3221
497711e7
GS
3222=for hackers
3223Found in file sv.c
3224
954c1994
GS
3225=item sv_derived_from
3226
3227Returns a boolean indicating whether the SV is derived from the specified
3228class. This is the function that implements C<UNIVERSAL::isa>. It works
3229for class names as well as for objects.
3230
3231 bool sv_derived_from(SV* sv, const char* name)
3232
497711e7
GS
3233=for hackers
3234Found in file universal.c
3235
954c1994
GS
3236=item sv_eq
3237
3238Returns a boolean indicating whether the strings in the two SVs are
645c22ef
DM
3239identical. Is UTF-8 and 'use bytes' aware, handles get magic, and will
3240coerce its args to strings if necessary.
954c1994
GS
3241
3242 I32 sv_eq(SV* sv1, SV* sv2)
3243
497711e7
GS
3244=for hackers
3245Found in file sv.c
3246
645c22ef
DM
3247=item sv_force_normal
3248
3249Undo various types of fakery on an SV: if the PV is a shared string, make
3250a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
3251an xpvmg. See also C<sv_force_normal_flags>.
3252
3253 void sv_force_normal(SV *sv)
3254
3255=for hackers
3256Found in file sv.c
3257
3258=item sv_force_normal_flags
3259
3260Undo various types of fakery on an SV: if the PV is a shared string, make
3261a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
3262an xpvmg. The C<flags> parameter gets passed to C<sv_unref_flags()>
3263when unrefing. C<sv_force_normal> calls this function with flags set to 0.
3264
3265 void sv_force_normal_flags(SV *sv, U32 flags)
3266
3267=for hackers
3268Found in file sv.c
3269
c461cf8f
JH
3270=item sv_free
3271
645c22ef
DM
3272Decrement an SV's reference count, and if it drops to zero, call
3273C<sv_clear> to invoke destructors and free up any memory used by
3274the body; finally, deallocate the SV's head itself.
3275Normally called via a wrapper macro C<SvREFCNT_dec>.
c461cf8f
JH
3276
3277 void sv_free(SV* sv)
3278
3279=for hackers
3280Found in file sv.c
3281
3282=item sv_gets
3283
3284Get a line from the filehandle and store it into the SV, optionally
3285appending to the currently-stored string.
3286
3287 char* sv_gets(SV* sv, PerlIO* fp, I32 append)
3288
3289=for hackers
3290Found in file sv.c
3291
954c1994
GS
3292=item sv_grow
3293
645c22ef
DM
3294Expands the character buffer in the SV. If necessary, uses C<sv_unref> and
3295upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer.
3296Use the C<SvGROW> wrapper instead.
954c1994
GS
3297
3298 char* sv_grow(SV* sv, STRLEN newlen)
3299
497711e7
GS
3300=for hackers
3301Found in file sv.c
3302
954c1994
GS
3303=item sv_inc
3304
645c22ef
DM
3305Auto-increment of the value in the SV, doing string to numeric conversion
3306if necessary. Handles 'get' magic.
954c1994
GS
3307
3308 void sv_inc(SV* sv)
3309
497711e7
GS
3310=for hackers
3311Found in file sv.c
3312
954c1994
GS
3313=item sv_insert
3314
3315Inserts a string at the specified offset/length within the SV. Similar to
3316the Perl substr() function.
3317
3318 void sv_insert(SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen)
3319
497711e7
GS
3320=for hackers
3321Found in file sv.c
3322
954c1994
GS
3323=item sv_isa
3324
3325Returns a boolean indicating whether the SV is blessed into the specified
3326class. This does not check for subtypes; use C<sv_derived_from> to verify
3327an inheritance relationship.
3328
3329 int sv_isa(SV* sv, const char* name)
3330
497711e7
GS
3331=for hackers
3332Found in file sv.c
3333
954c1994
GS
3334=item sv_isobject
3335
3336Returns a boolean indicating whether the SV is an RV pointing to a blessed
3337object. If the SV is not an RV, or if the object is not blessed, then this
3338will return false.
3339
3340 int sv_isobject(SV* sv)
3341
497711e7
GS
3342=for hackers
3343Found in file sv.c
3344
645c22ef
DM
3345=item sv_iv
3346
3347A private implementation of the C<SvIVx> macro for compilers which can't
3348cope with complex macro expressions. Always use the macro instead.
3349
3350 IV sv_iv(SV* sv)
3351
3352=for hackers
3353Found in file sv.c
3354
954c1994
GS
3355=item sv_len
3356
645c22ef
DM
3357Returns the length of the string in the SV. Handles magic and type
3358coercion. See also C<SvCUR>, which gives raw access to the xpv_cur slot.
954c1994
GS
3359
3360 STRLEN sv_len(SV* sv)
3361
497711e7
GS
3362=for hackers
3363Found in file sv.c
3364
c461cf8f
JH
3365=item sv_len_utf8
3366
3367Returns the number of characters in the string in an SV, counting wide
645c22ef 3368UTF8 bytes as a single character. Handles magic and type coercion.
c461cf8f
JH
3369
3370 STRLEN sv_len_utf8(SV* sv)
3371
3372=for hackers
3373Found in file sv.c
3374
954c1994
GS
3375=item sv_magic
3376
645c22ef
DM
3377Adds magic to an SV. First upgrades C<sv> to type C<SVt_PVMG> if necessary,
3378then adds a new magic item of type C<how> to the head of the magic list.
3379
3380C<name> is assumed to contain an C<SV*> if C<(name && namelen == HEf_SVKEY)>
954c1994
GS
3381
3382 void sv_magic(SV* sv, SV* obj, int how, const char* name, I32 namlen)
3383
497711e7
GS
3384=for hackers
3385Found in file sv.c
3386
954c1994
GS
3387=item sv_mortalcopy
3388
645c22ef 3389Creates a new SV which is a copy of the original SV (using C<sv_setsv>).
793edb8a
JH
3390The new SV is marked as mortal. It will be destroyed "soon", either by an
3391explicit call to FREETMPS, or by an implicit call at places such as
3392statement boundaries. See also C<sv_newmortal> and C<sv_2mortal>.
954c1994
GS
3393
3394 SV* sv_mortalcopy(SV* oldsv)
3395
497711e7
GS
3396=for hackers
3397Found in file sv.c
3398
954c1994
GS
3399=item sv_newmortal
3400
645c22ef 3401Creates a new null SV which is mortal. The reference count of the SV is
793edb8a
JH
3402set to 1. It will be destroyed "soon", either by an explicit call to
3403FREETMPS, or by an implicit call at places such as statement boundaries.
3404See also C<sv_mortalcopy> and C<sv_2mortal>.
954c1994
GS
3405
3406 SV* sv_newmortal()
3407
497711e7
GS
3408=for hackers
3409Found in file sv.c
3410
645c22ef
DM
3411=item sv_newref
3412
3413Increment an SV's reference count. Use the C<SvREFCNT_inc()> wrapper
3414instead.
3415
3416 SV* sv_newref(SV* sv)
3417
3418=for hackers
3419Found in file sv.c
3420
3421=item sv_nv
3422
3423A private implementation of the C<SvNVx> macro for compilers which can't
3424cope with complex macro expressions. Always use the macro instead.
3425
3426 NV sv_nv(SV* sv)
3427
3428=for hackers
3429Found in file sv.c
3430
3431=item sv_pos_b2u
3432
3433Converts the value pointed to by offsetp from a count of bytes from the
3434start of the string, to a count of the equivalent number of UTF8 chars.
3435Handles magic and type coercion.
3436
3437 void sv_pos_b2u(SV* sv, I32* offsetp)
3438
3439=for hackers
3440Found in file sv.c
3441
3442=item sv_pos_u2b
3443
3444Converts the value pointed to by offsetp from a count of UTF8 chars from
3445the start of the string, to a count of the equivalent number of bytes; if
3446lenp is non-zero, it does the same to lenp, but this time starting from
3447the offset, rather than from the start of the string. Handles magic and
3448type coercion.
3449
3450 void sv_pos_u2b(SV* sv, I32* offsetp, I32* lenp)
3451
3452=for hackers
3453Found in file sv.c
3454
451be7b1
DM
3455=item sv_pv
3456
3457A private implementation of the C<SvPV_nolen> macro for compilers which can't
3458cope with complex macro expressions. Always use the macro instead.
3459
3460 char* sv_pv(SV *sv)
3461
3462=for hackers
3463Found in file sv.c
3464
645c22ef
DM
3465=item sv_pvbyte
3466
3467A private implementation of the C<SvPVbyte_nolen> macro for compilers
3468which can't cope with complex macro expressions. Always use the macro
3469instead.
3470
3471 char* sv_pvbyte(SV *sv)
3472
3473=for hackers
3474Found in file sv.c
3475
3476=item sv_pvbyten
3477
3478A private implementation of the C<SvPVbyte> macro for compilers
3479which can't cope with complex macro expressions. Always use the macro
3480instead.
3481
3482 char* sv_pvbyten(SV *sv, STRLEN *len)
3483
3484=for hackers
3485Found in file sv.c
3486
3487=item sv_pvbyten_force
3488
3489A private implementation of the C<SvPVbytex_force> macro for compilers
3490which can't cope with complex macro expressions. Always use the macro
3491instead.
3492
3493 char* sv_pvbyten_force(SV* sv, STRLEN* lp)
3494
3495=for hackers
3496Found in file sv.c
3497
451be7b1
DM
3498=item sv_pvn
3499
3500A private implementation of the C<SvPV> macro for compilers which can't
3501cope with complex macro expressions. Always use the macro instead.
3502
3503 char* sv_pvn(SV *sv, STRLEN *len)
3504
3505=for hackers
3506Found in file sv.c
3507
c461cf8f
JH
3508=item sv_pvn_force
3509
3510Get a sensible string out of the SV somehow.
645c22ef
DM
3511A private implementation of the C<SvPV_force> macro for compilers which
3512can't cope with complex macro expressions. Always use the macro instead.
c461cf8f
JH
3513
3514 char* sv_pvn_force(SV* sv, STRLEN* lp)
3515
3516=for hackers
3517Found in file sv.c
3518
8d6d96c1
HS
3519=item sv_pvn_force_flags
3520
3521Get a sensible string out of the SV somehow.
3522If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<sv> if
3523appropriate, else not. C<sv_pvn_force> and C<sv_pvn_force_nomg> are
3524implemented in terms of this function.
645c22ef
DM
3525You normally want to use the various wrapper macros instead: see
3526C<SvPV_force> and C<SvPV_force_nomg>
8d6d96c1
HS
3527
3528 char* sv_pvn_force_flags(SV* sv, STRLEN* lp, I32 flags)
3529
3530=for hackers
3531Found in file sv.c
3532
645c22ef
DM
3533=item sv_pvutf8
3534
3535A private implementation of the C<SvPVutf8_nolen> macro for compilers
3536which can't cope with complex macro expressions. Always use the macro
3537instead.
3538
3539 char* sv_pvutf8(SV *sv)
3540
3541=for hackers
3542Found in file sv.c
3543
3544=item sv_pvutf8n
3545
3546A private implementation of the C<SvPVutf8> macro for compilers
3547which can't cope with complex macro expressions. Always use the macro
3548instead.
3549
3550 char* sv_pvutf8n(SV *sv, STRLEN *len)
3551
3552=for hackers
3553Found in file sv.c
3554
c461cf8f
JH
3555=item sv_pvutf8n_force
3556
645c22ef
DM
3557A private implementation of the C<SvPVutf8_force> macro for compilers
3558which can't cope with complex macro expressions. Always use the macro
3559instead.
c461cf8f
JH
3560
3561 char* sv_pvutf8n_force(SV* sv, STRLEN* lp)
3562
3563=for hackers
3564Found in file sv.c
3565
3566=item sv_reftype
3567
3568Returns a string describing what the SV is a reference to.
3569
3570 char* sv_reftype(SV* sv, int ob)
3571
3572=for hackers
3573Found in file sv.c
3574
3575=item sv_replace
3576
3577Make the first argument a copy of the second, then delete the original.
645c22ef
DM
3578The target SV physically takes over ownership of the body of the source SV
3579and inherits its flags; however, the target keeps any magic it owns,
3580and any magic in the source is discarded.
ff276b08 3581Note that this is a rather specialist SV copying operation; most of the
645c22ef 3582time you'll want to use C<sv_setsv> or one of its many macro front-ends.
c461cf8f
JH
3583
3584 void sv_replace(SV* sv, SV* nsv)
3585
3586=for hackers
3587Found in file sv.c
3588
645c22ef
DM
3589=item sv_report_used
3590
3591Dump the contents of all SVs not yet freed. (Debugging aid).
3592
3593 void sv_report_used()
3594
3595=for hackers
3596Found in file sv.c
3597
451be7b1
DM
3598=item sv_reset
3599
3600Underlying implementation for the C<reset> Perl function.
3601Note that the perl-level function is vaguely deprecated.
3602
3603 void sv_reset(char* s, HV* stash)
3604
3605=for hackers
3606Found in file sv.c
3607
c461cf8f
JH
3608=item sv_rvweaken
3609
645c22ef
DM
3610Weaken a reference: set the C<SvWEAKREF> flag on this RV; give the
3611referred-to SV C<PERL_MAGIC_backref> magic if it hasn't already; and
3612push a back-reference to this RV onto the array of backreferences
3613associated with that magic.
c461cf8f
JH
3614
3615 SV* sv_rvweaken(SV *sv)
3616
3617=for hackers
3618Found in file sv.c
3619
954c1994
GS
3620=item sv_setiv
3621
645c22ef
DM
3622Copies an integer into the given SV, upgrading first if necessary.
3623Does not handle 'set' magic. See also C<sv_setiv_mg>.
954c1994
GS
3624
3625 void sv_setiv(SV* sv, IV num)
3626
497711e7
GS
3627=for hackers
3628Found in file sv.c
3629
954c1994
GS
3630=item sv_setiv_mg
3631
3632Like C<sv_setiv>, but also handles 'set' magic.
3633
3634 void sv_setiv_mg(SV *sv, IV i)
3635
497711e7
GS
3636=for hackers
3637Found in file sv.c
3638
954c1994
GS
3639=item sv_setnv
3640
645c22ef
DM
3641Copies a double into the given SV, upgrading first if necessary.
3642Does not handle 'set' magic. See also C<sv_setnv_mg>.
954c1994
GS
3643
3644 void sv_setnv(SV* sv, NV num)
3645
497711e7
GS
3646=for hackers
3647Found in file sv.c
3648
954c1994
GS
3649=item sv_setnv_mg
3650
3651Like C<sv_setnv>, but also handles 'set' magic.
3652
3653 void sv_setnv_mg(SV *sv, NV num)
3654
497711e7
GS
3655=for hackers
3656Found in file sv.c
3657
954c1994
GS
3658=item sv_setpv
3659
3660Copies a string into an SV. The string must be null-terminated. Does not
3661handle 'set' magic. See C<sv_setpv_mg>.
3662
3663 void sv_setpv(SV* sv, const char* ptr)
3664
497711e7
GS
3665=for hackers
3666Found in file sv.c
3667
954c1994
GS
3668=item sv_setpvf
3669
3670Processes its arguments like C<sprintf> and sets an SV to the formatted
3671output. Does not handle 'set' magic. See C<sv_setpvf_mg>.
3672
3673 void sv_setpvf(SV* sv, const char* pat, ...)
3674
497711e7
GS
3675=for hackers
3676Found in file sv.c
3677
954c1994
GS
3678=item sv_setpvf_mg
3679
3680Like C<sv_setpvf>, but also handles 'set' magic.
3681
3682 void sv_setpvf_mg(SV *sv, const char* pat, ...)
3683
497711e7
GS
3684=for hackers
3685Found in file sv.c
3686
954c1994
GS
3687=item sv_setpviv
3688
3689Copies an integer into the given SV, also updating its string value.
3690Does not handle 'set' magic. See C<sv_setpviv_mg>.
3691
3692 void sv_setpviv(SV* sv, IV num)
3693
497711e7
GS
3694=for hackers
3695Found in file sv.c
3696
954c1994
GS
3697=item sv_setpviv_mg
3698
3699Like C<sv_setpviv>, but also handles 'set' magic.
3700
3701 void sv_setpviv_mg(SV *sv, IV iv)
3702
497711e7
GS
3703=for hackers
3704Found in file sv.c
3705
954c1994
GS
3706=item sv_setpvn
3707
3708Copies a string into an SV. The C<len> parameter indicates the number of
3709bytes to be copied. Does not handle 'set' magic. See C<sv_setpvn_mg>.
3710
3711 void sv_setpvn(SV* sv, const char* ptr, STRLEN len)
3712
497711e7
GS
3713=for hackers
3714Found in file sv.c
3715
954c1994
GS
3716=item sv_setpvn_mg
3717
3718Like C<sv_setpvn>, but also handles 'set' magic.
3719
3720 void sv_setpvn_mg(SV *sv, const char *ptr, STRLEN len)
3721
497711e7
GS
3722=for hackers
3723Found in file sv.c
3724
954c1994
GS
3725=item sv_setpv_mg
3726
3727Like C<sv_setpv>, but also handles 'set' magic.
3728
3729 void sv_setpv_mg(SV *sv, const char *ptr)
3730
497711e7
GS
3731=for hackers
3732Found in file sv.c
3733
954c1994
GS
3734=item sv_setref_iv
3735
3736Copies an integer into a new SV, optionally blessing the SV. The C<rv>
3737argument will be upgraded to an RV. That RV will be modified to point to
3738the new SV. The C<classname> argument indicates the package for the
3739blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
3740will be returned and will have a reference count of 1.
3741
3742 SV* sv_setref_iv(SV* rv, const char* classname, IV iv)
3743
497711e7
GS
3744=for hackers
3745Found in file sv.c
3746
954c1994
GS
3747=item sv_setref_nv
3748
3749Copies a double into a new SV, optionally blessing the SV. The C<rv>
3750argument will be upgraded to an RV. That RV will be modified to point to
3751the new SV. The C<classname> argument indicates the package for the
3752blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
3753will be returned and will have a reference count of 1.
3754
3755 SV* sv_setref_nv(SV* rv, const char* classname, NV nv)
3756
497711e7
GS
3757=for hackers
3758Found in file sv.c
3759
954c1994
GS
3760=item sv_setref_pv
3761
3762Copies a pointer into a new SV, optionally blessing the SV. The C<rv>
3763argument will be upgraded to an RV. That RV will be modified to point to
3764the new SV. If the C<pv> argument is NULL then C<PL_sv_undef> will be placed
3765into the SV. The C<classname> argument indicates the package for the
3766blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
3767will be returned and will have a reference count of 1.
3768
3769Do not use with other Perl types such as HV, AV, SV, CV, because those
3770objects will become corrupted by the pointer copy process.
3771
3772Note that C<sv_setref_pvn> copies the string while this copies the pointer.
3773
3774 SV* sv_setref_pv(SV* rv, const char* classname, void* pv)
3775
497711e7
GS
3776=for hackers
3777Found in file sv.c
3778
954c1994
GS
3779=item sv_setref_pvn
3780
3781Copies a string into a new SV, optionally blessing the SV. The length of the
3782string must be specified with C<n>. The C<rv> argument will be upgraded to
3783an RV. That RV will be modified to point to the new SV. The C<classname>
3784argument indicates the package for the blessing. Set C<classname> to
3785C<Nullch> to avoid the blessing. The new SV will be returned and will have
3786a reference count of 1.
3787
3788Note that C<sv_setref_pv> copies the pointer while this copies the string.
3789
3790 SV* sv_setref_pvn(SV* rv, const char* classname, char* pv, STRLEN n)
3791
497711e7
GS
3792=for hackers
3793Found in file sv.c
3794
e1c57cef
JH
3795=item sv_setref_uv
3796
3797Copies an unsigned integer into a new SV, optionally blessing the SV. The C<rv>
3798argument will be upgraded to an RV. That RV will be modified to point to
3799the new SV. The C<classname> argument indicates the package for the
3800blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
3801will be returned and will have a reference count of 1.
3802
3803 SV* sv_setref_uv(SV* rv, const char* classname, UV uv)
3804
3805=for hackers
3806Found in file sv.c
3807
954c1994
GS
3808=item sv_setsv
3809
645c22ef
DM
3810Copies the contents of the source SV C<ssv> into the destination SV
3811C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3812function if the source SV needs to be reused. Does not handle 'set' magic.
3813Loosely speaking, it performs a copy-by-value, obliterating any previous
3814content of the destination.
3815
3816You probably want to use one of the assortment of wrappers, such as
3817C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3818C<SvSetMagicSV_nosteal>.
3819
954c1994
GS
3820
3821 void sv_setsv(SV* dsv, SV* ssv)
3822
497711e7
GS
3823=for hackers
3824Found in file sv.c
3825
8d6d96c1
HS
3826=item sv_setsv_flags
3827
645c22ef
DM
3828Copies the contents of the source SV C<ssv> into the destination SV
3829C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
3830function if the source SV needs to be reused. Does not handle 'set' magic.
3831Loosely speaking, it performs a copy-by-value, obliterating any previous
3832content of the destination.
3833If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on
3834C<ssv> if appropriate, else not. C<sv_setsv> and C<sv_setsv_nomg> are
3835implemented in terms of this function.
3836
3837You probably want to use one of the assortment of wrappers, such as
3838C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
3839C<SvSetMagicSV_nosteal>.
3840
3841This is the primary function for copying scalars, and most other
3842copy-ish functions and macros use this underneath.
8d6d96c1
HS
3843
3844 void sv_setsv_flags(SV* dsv, SV* ssv, I32 flags)
3845
3846=for hackers
3847Found in file sv.c
3848
954c1994
GS
3849=item sv_setsv_mg
3850
3851Like C<sv_setsv>, but also handles 'set' magic.
3852
3853 void sv_setsv_mg(SV *dstr, SV *sstr)
3854
497711e7
GS
3855=for hackers
3856Found in file sv.c
3857
954c1994
GS
3858=item sv_setuv
3859
645c22ef
DM
3860Copies an unsigned integer into the given SV, upgrading first if necessary.
3861Does not handle 'set' magic. See also C<sv_setuv_mg>.
954c1994
GS
3862
3863 void sv_setuv(SV* sv, UV num)
3864
497711e7
GS
3865=for hackers
3866Found in file sv.c
3867
954c1994
GS
3868=item sv_setuv_mg
3869
3870Like C<sv_setuv>, but also handles 'set' magic.
3871
3872 void sv_setuv_mg(SV *sv, UV u)
3873
497711e7
GS
3874=for hackers
3875Found in file sv.c
3876
645c22ef
DM
3877=item sv_taint
3878
3879Taint an SV. Use C<SvTAINTED_on> instead.
3880 void sv_taint(SV* sv)
3881
3882=for hackers
3883Found in file sv.c
3884
451be7b1
DM
3885=item sv_tainted
3886
3887Test an SV for taintedness. Use C<SvTAINTED> instead.
3888 bool sv_tainted(SV* sv)
3889
3890=for hackers
3891Found in file sv.c
3892
c461cf8f
JH
3893=item sv_true
3894
3895Returns true if the SV has a true value by Perl's rules.
645c22ef
DM
3896Use the C<SvTRUE> macro instead, which may call C<sv_true()> or may
3897instead use an in-line version.
c461cf8f
JH
3898
3899 I32 sv_true(SV *sv)
3900
3901=for hackers
3902Found in file sv.c
3903
3904=item sv_unmagic
3905
645c22ef 3906Removes all magic of type C<type> from an SV.
c461cf8f
JH
3907
3908 int sv_unmagic(SV* sv, int type)
3909
3910=for hackers
3911Found in file sv.c
3912
954c1994
GS
3913=item sv_unref
3914
3915Unsets the RV status of the SV, and decrements the reference count of
3916whatever was being referenced by the RV. This can almost be thought of
b06226ff 3917as a reversal of C<newSVrv>. This is C<sv_unref_flags> with the C<flag>
ae154d6d 3918being zero. See C<SvROK_off>.
954c1994
GS
3919
3920 void sv_unref(SV* sv)
3921
497711e7
GS
3922=for hackers
3923Found in file sv.c
3924
840a7b70
IZ
3925=item sv_unref_flags
3926
3927Unsets the RV status of the SV, and decrements the reference count of
3928whatever was being referenced by the RV. This can almost be thought of
3929as a reversal of C<newSVrv>. The C<cflags> argument can contain
3930C<SV_IMMEDIATE_UNREF> to force the reference count to be decremented
3931(otherwise the decrementing is conditional on the reference count being
3932different from one or the reference being a readonly SV).
ae154d6d 3933See C<SvROK_off>.
840a7b70
IZ
3934
3935 void sv_unref_flags(SV* sv, U32 flags)
3936
3937=for hackers
3938Found in file sv.c
3939
451be7b1
DM
3940=item sv_untaint
3941
3942Untaint an SV. Use C<SvTAINTED_off> instead.
3943 void sv_untaint(SV* sv)
3944
3945=for hackers
3946Found in file sv.c
3947
954c1994
GS
3948=item sv_upgrade
3949
ff276b08 3950Upgrade an SV to a more complex form. Generally adds a new body type to the
645c22ef 3951SV, then copies across as much information as possible from the old body.
ff276b08 3952You generally want to use the C<SvUPGRADE> macro wrapper. See also C<svtype>.
954c1994
GS
3953
3954 bool sv_upgrade(SV* sv, U32 mt)
3955
497711e7
GS
3956=for hackers
3957Found in file sv.c
3958
954c1994
GS
3959=item sv_usepvn
3960
3961Tells an SV to use C<ptr> to find its string value. Normally the string is
1c846c1f 3962stored inside the SV but sv_usepvn allows the SV to use an outside string.
954c1994
GS
3963The C<ptr> should point to memory that was allocated by C<malloc>. The
3964string length, C<len>, must be supplied. This function will realloc the
3965memory pointed to by C<ptr>, so that pointer should not be freed or used by
3966the programmer after giving it to sv_usepvn. Does not handle 'set' magic.
3967See C<sv_usepvn_mg>.
3968
3969 void sv_usepvn(SV* sv, char* ptr, STRLEN len)
3970
497711e7
GS
3971=for hackers
3972Found in file sv.c
3973
954c1994
GS
3974=item sv_usepvn_mg
3975
3976Like C<sv_usepvn>, but also handles 'set' magic.
3977
3978 void sv_usepvn_mg(SV *sv, char *ptr, STRLEN len)
3979
497711e7
GS
3980=for hackers
3981Found in file sv.c
3982
2457d041
JH
3983=item sv_utf8_decode
3984
3985Convert the octets in the PV from UTF-8 to chars. Scan for validity and then
645c22ef 3986turn off SvUTF8 if needed so that we see characters. Used as a building block
2457d041
JH
3987for decode_utf8 in Encode.xs
3988
3989NOTE: this function is experimental and may change or be
3990removed without notice.
3991
3992 bool sv_utf8_decode(SV *sv)
3993
3994=for hackers
3995Found in file sv.c
3996
c461cf8f
JH
3997=item sv_utf8_downgrade
3998
3999Attempt to convert the PV of an SV from UTF8-encoded to byte encoding.
4000This may not be possible if the PV contains non-byte encoding characters;
4001if this is the case, either returns false or, if C<fail_ok> is not
4002true, croaks.
4003
4004NOTE: this function is experimental and may change or be
4005removed without notice.
4006
4007 bool sv_utf8_downgrade(SV *sv, bool fail_ok)
4008
4009=for hackers
4010Found in file sv.c
4011
4012=item sv_utf8_encode
4013
4014Convert the PV of an SV to UTF8-encoded, but then turn off the C<SvUTF8>
2457d041
JH
4015flag so that it looks like octets again. Used as a building block
4016for encode_utf8 in Encode.xs
c461cf8f
JH
4017
4018 void sv_utf8_encode(SV *sv)
4019
4020=for hackers
4021Found in file sv.c
4022
4023=item sv_utf8_upgrade
4024
4025Convert the PV of an SV to its UTF8-encoded form.
645c22ef 4026Forces the SV to string form if it is not already.
2457d041
JH
4027Always sets the SvUTF8 flag to avoid future validity checks even
4028if all the bytes have hibit clear.
c461cf8f 4029
2457d041 4030 STRLEN sv_utf8_upgrade(SV *sv)
c461cf8f
JH
4031
4032=for hackers
4033Found in file sv.c
4034
8d6d96c1
HS
4035=item sv_utf8_upgrade_flags
4036
4037Convert the PV of an SV to its UTF8-encoded form.
645c22ef 4038Forces the SV to string form if it is not already.
8d6d96c1
HS
4039Always sets the SvUTF8 flag to avoid future validity checks even
4040if all the bytes have hibit clear. If C<flags> has C<SV_GMAGIC> bit set,
4041will C<mg_get> on C<sv> if appropriate, else not. C<sv_utf8_upgrade> and
4042C<sv_utf8_upgrade_nomg> are implemented in terms of this function.
4043
4044 STRLEN sv_utf8_upgrade_flags(SV *sv, I32 flags)
4045
4046=for hackers
4047Found in file sv.c
4048
645c22ef
DM
4049=item sv_uv
4050
4051A private implementation of the C<SvUVx> macro for compilers which can't
4052cope with complex macro expressions. Always use the macro instead.
4053
4054 UV sv_uv(SV* sv)
4055
4056=for hackers
4057Found in file sv.c
4058
954c1994
GS
4059=item sv_vcatpvfn
4060
4061Processes its arguments like C<vsprintf> and appends the formatted output
4062to an SV. Uses an array of SVs if the C style variable argument list is
4063missing (NULL). When running with taint checks enabled, indicates via
4064C<maybe_tainted> if results are untrustworthy (often due to the use of
4065locales).
4066
645c22ef
DM
4067Usually used via one of its frontends C<sv_catpvf> and C<sv_catpvf_mg>.
4068
954c1994
GS
4069 void sv_vcatpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
4070
497711e7
GS
4071=for hackers
4072Found in file sv.c
4073
954c1994
GS
4074=item sv_vsetpvfn
4075
4076Works like C<vcatpvfn> but copies the text into the SV instead of
4077appending it.
4078
645c22ef
DM
4079Usually used via one of its frontends C<sv_setpvf> and C<sv_setpvf_mg>.
4080
954c1994
GS
4081 void sv_vsetpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
4082
497711e7
GS
4083=for hackers
4084Found in file sv.c
4085
954c1994
GS
4086=item THIS
4087
4088Variable which is setup by C<xsubpp> to designate the object in a C++
4089XSUB. This is always the proper type for the C++ object. See C<CLASS> and
4090L<perlxs/"Using XS With C++">.
4091
4092 (whatever) THIS
4093
497711e7
GS
4094=for hackers
4095Found in file XSUB.h
4096
954c1994
GS
4097=item toLOWER
4098
4099Converts the specified character to lowercase.
4100
4101 char toLOWER(char ch)
4102
497711e7
GS
4103=for hackers
4104Found in file handy.h
4105
954c1994
GS
4106=item toUPPER
4107
4108Converts the specified character to uppercase.
4109
4110 char toUPPER(char ch)
4111
497711e7
GS
4112=for hackers
4113Found in file handy.h
4114
282f25c9
JH
4115=item utf8n_to_uvchr
4116
4117Returns the native character value of the first character in the string C<s>
4118which is assumed to be in UTF8 encoding; C<retlen> will be set to the
4119length, in bytes, of that character.
4120
4121Allows length and flags to be passed to low level routine.
4122
4123 UV utf8n_to_uvchr(U8 *s, STRLEN curlen, STRLEN* retlen, U32 flags)
4124
4125=for hackers
4126Found in file utf8.c
4127
4128=item utf8n_to_uvuni
4129
4130Bottom level UTF-8 decode routine.
4131Returns the unicode code point value of the first character in the string C<s>
4132which is assumed to be in UTF8 encoding and no longer than C<curlen>;
4133C<retlen> will be set to the length, in bytes, of that character.
4134
4135If C<s> does not point to a well-formed UTF8 character, the behaviour
4136is dependent on the value of C<flags>: if it contains UTF8_CHECK_ONLY,
4137it is assumed that the caller will raise a warning, and this function
4138will silently just set C<retlen> to C<-1> and return zero. If the
4139C<flags> does not contain UTF8_CHECK_ONLY, warnings about
4140malformations will be given, C<retlen> will be set to the expected
4141length of the UTF-8 character in bytes, and zero will be returned.
4142
4143The C<flags> can also contain various flags to allow deviations from
4144the strict UTF-8 encoding (see F<utf8.h>).
4145
4146Most code should use utf8_to_uvchr() rather than call this directly.
4147
4148 UV utf8n_to_uvuni(U8 *s, STRLEN curlen, STRLEN* retlen, U32 flags)
4149
4150=for hackers
4151Found in file utf8.c
4152
b06226ff
JH
4153=item utf8_distance
4154
4155Returns the number of UTF8 characters between the UTF-8 pointers C<a>
4156and C<b>.
4157
4158WARNING: use only if you *know* that the pointers point inside the
4159same UTF-8 buffer.
4160
4161 IV utf8_distance(U8 *a, U8 *b)
4162
4163=for hackers
4164Found in file utf8.c
4165
4166=item utf8_hop
4167
8850bf83
JH
4168Return the UTF-8 pointer C<s> displaced by C<off> characters, either
4169forward or backward.
b06226ff
JH
4170
4171WARNING: do not use the following unless you *know* C<off> is within
8850bf83
JH
4172the UTF-8 data pointed to by C<s> *and* that on entry C<s> is aligned
4173on the first byte of character or just after the last byte of a character.
b06226ff
JH
4174
4175 U8* utf8_hop(U8 *s, I32 off)
4176
4177=for hackers
4178Found in file utf8.c
4179
4180=item utf8_length
4181
4182Return the length of the UTF-8 char encoded string C<s> in characters.
4183Stops at C<e> (inclusive). If C<e E<lt> s> or if the scan would end
4184up past C<e>, croaks.
4185
4186 STRLEN utf8_length(U8* s, U8 *e)
4187
4188=for hackers
4189Found in file utf8.c
4190
497711e7
GS
4191=item utf8_to_bytes
4192
246fae53
MG
4193Converts a string C<s> of length C<len> from UTF8 into byte encoding.
4194Unlike C<bytes_to_utf8>, this over-writes the original string, and
4195updates len to contain the new length.
67e989fb 4196Returns zero on failure, setting C<len> to -1.
497711e7 4197
eebe1485
SC
4198NOTE: this function is experimental and may change or be
4199removed without notice.
4200
4201 U8* utf8_to_bytes(U8 *s, STRLEN *len)
497711e7
GS
4202
4203=for hackers
4204Found in file utf8.c
4205
282f25c9 4206=item utf8_to_uvchr
b6b716fe 4207
282f25c9
JH
4208Returns the native character value of the first character in the string C<s>
4209which is assumed to be in UTF8 encoding; C<retlen> will be set to the
4210length, in bytes, of that character.
28d3d195 4211
282f25c9
JH
4212If C<s> does not point to a well-formed UTF8 character, zero is
4213returned and retlen is set, if possible, to -1.
444155da 4214
282f25c9 4215 UV utf8_to_uvchr(U8 *s, STRLEN* retlen)
444155da
JH
4216
4217=for hackers
4218Found in file utf8.c
4219
282f25c9 4220=item utf8_to_uvuni
444155da 4221
282f25c9 4222Returns the Unicode code point of the first character in the string C<s>
dcad2880 4223which is assumed to be in UTF8 encoding; C<retlen> will be set to the
1aa99e6b 4224length, in bytes, of that character.
444155da 4225
282f25c9
JH
4226This function should only be used when returned UV is considered
4227an index into the Unicode semantic tables (e.g. swashes).
4228
dcad2880
JH
4229If C<s> does not point to a well-formed UTF8 character, zero is
4230returned and retlen is set, if possible, to -1.
b6b716fe 4231
282f25c9
JH
4232 UV utf8_to_uvuni(U8 *s, STRLEN* retlen)
4233
4234=for hackers
4235Found in file utf8.c
4236
4237=item uvchr_to_utf8
4238
4239Adds the UTF8 representation of the Native codepoint C<uv> to the end
4240of the string C<d>; C<d> should be have at least C<UTF8_MAXLEN+1> free
4241bytes available. The return value is the pointer to the byte after the
4242end of the new character. In other words,
4243
4244 d = uvchr_to_utf8(d, uv);
4245
4246is the recommended wide native character-aware way of saying
4247
4248 *(d++) = uv;
4249
4250 U8* uvchr_to_utf8(U8 *d, UV uv)
eebe1485
SC
4251
4252=for hackers
4253Found in file utf8.c
4254
282f25c9 4255=item uvuni_to_utf8
eebe1485
SC
4256
4257Adds the UTF8 representation of the Unicode codepoint C<uv> to the end
4258of the string C<d>; C<d> should be have at least C<UTF8_MAXLEN+1> free
4259bytes available. The return value is the pointer to the byte after the
282f25c9 4260end of the new character. In other words,
eebe1485 4261
282f25c9 4262 d = uvuni_to_utf8(d, uv);
eebe1485
SC
4263
4264is the recommended Unicode-aware way of saying
4265
4266 *(d++) = uv;
4267
282f25c9 4268 U8* uvuni_to_utf8(U8 *d, UV uv)
b6b716fe
SC
4269
4270=for hackers
4271Found in file utf8.c
4272
954c1994
GS
4273=item warn
4274
4275This is the XSUB-writer's interface to Perl's C<warn> function. Use this
4276function the same way you use the C C<printf> function. See
4277C<croak>.
4278
4279 void warn(const char* pat, ...)
4280
497711e7
GS
4281=for hackers
4282Found in file util.c
4283
954c1994
GS
4284=item XPUSHi
4285
4286Push an integer onto the stack, extending the stack if necessary. Handles
4287'set' magic. See C<PUSHi>.
4288
4289 void XPUSHi(IV iv)
4290
497711e7
GS
4291=for hackers
4292Found in file pp.h
4293
954c1994
GS
4294=item XPUSHn
4295
4296Push a double onto the stack, extending the stack if necessary. Handles
4297'set' magic. See C<PUSHn>.
4298
4299 void XPUSHn(NV nv)
4300
497711e7
GS
4301=for hackers
4302Found in file pp.h
4303
954c1994
GS
4304=item XPUSHp
4305
4306Push a string onto the stack, extending the stack if necessary. The C<len>
4307indicates the length of the string. Handles 'set' magic. See
4308C<PUSHp>.
4309
4310 void XPUSHp(char* str, STRLEN len)
4311
497711e7
GS
4312=for hackers
4313Found in file pp.h
4314
954c1994
GS
4315=item XPUSHs
4316
4317Push an SV onto the stack, extending the stack if necessary. Does not
4318handle 'set' magic. See C<PUSHs>.
4319
4320 void XPUSHs(SV* sv)
4321
497711e7
GS
4322=for hackers
4323Found in file pp.h
4324
954c1994
GS
4325=item XPUSHu
4326
1c846c1f 4327Push an unsigned integer onto the stack, extending the stack if necessary.
954c1994
GS
4328See C<PUSHu>.
4329
4330 void XPUSHu(UV uv)
4331
497711e7
GS
4332=for hackers
4333Found in file pp.h
4334
954c1994
GS
4335=item XS
4336
4337Macro to declare an XSUB and its C parameter list. This is handled by
4338C<xsubpp>.
4339
497711e7
GS
4340=for hackers
4341Found in file XSUB.h
4342
954c1994
GS
4343=item XSRETURN
4344
4345Return from XSUB, indicating number of items on the stack. This is usually
4346handled by C<xsubpp>.
4347
4348 void XSRETURN(int nitems)
4349
497711e7
GS
4350=for hackers
4351Found in file XSUB.h
4352
954c1994
GS
4353=item XSRETURN_EMPTY
4354
4355Return an empty list from an XSUB immediately.
4356
4357 XSRETURN_EMPTY;
4358
497711e7
GS
4359=for hackers
4360Found in file XSUB.h
4361
954c1994
GS
4362=item XSRETURN_IV
4363
4364Return an integer from an XSUB immediately. Uses C<XST_mIV>.
4365
4366 void XSRETURN_IV(IV iv)
4367
497711e7
GS
4368=for hackers
4369Found in file XSUB.h
4370
954c1994
GS
4371=item XSRETURN_NO
4372
4373Return C<&PL_sv_no> from an XSUB immediately. Uses C<XST_mNO>.
4374
4375 XSRETURN_NO;
4376
497711e7
GS
4377=for hackers
4378Found in file XSUB.h
4379
954c1994
GS
4380=item XSRETURN_NV
4381
4382Return an double from an XSUB immediately. Uses C<XST_mNV>.
4383
4384 void XSRETURN_NV(NV nv)
4385
497711e7
GS
4386=for hackers
4387Found in file XSUB.h
4388
954c1994
GS
4389=item XSRETURN_PV
4390
4391Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>.
4392
4393 void XSRETURN_PV(char* str)
4394
497711e7
GS
4395=for hackers
4396Found in file XSUB.h
4397
954c1994
GS
4398=item XSRETURN_UNDEF
4399
4400Return C<&PL_sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>.
4401
4402 XSRETURN_UNDEF;
4403
497711e7
GS
4404=for hackers
4405Found in file XSUB.h
4406
954c1994
GS
4407=item XSRETURN_YES
4408
4409Return C<&PL_sv_yes> from an XSUB immediately. Uses C<XST_mYES>.
4410
4411 XSRETURN_YES;
4412
497711e7
GS
4413=for hackers
4414Found in file XSUB.h
4415
954c1994
GS
4416=item XST_mIV
4417
4418Place an integer into the specified position C<pos> on the stack. The
4419value is stored in a new mortal SV.
4420
4421 void XST_mIV(int pos, IV iv)
4422
497711e7
GS
4423=for hackers
4424Found in file XSUB.h
4425
954c1994
GS
4426=item XST_mNO
4427
4428Place C<&PL_sv_no> into the specified position C<pos> on the
4429stack.
4430
4431 void XST_mNO(int pos)
4432
497711e7
GS
4433=for hackers
4434Found in file XSUB.h
4435
954c1994
GS
4436=item XST_mNV
4437
4438Place a double into the specified position C<pos> on the stack. The value
4439is stored in a new mortal SV.
4440
4441 void XST_mNV(int pos, NV nv)
4442
497711e7
GS
4443=for hackers
4444Found in file XSUB.h
4445
954c1994
GS
4446=item XST_mPV
4447
4448Place a copy of a string into the specified position C<pos> on the stack.
4449The value is stored in a new mortal SV.
4450
4451 void XST_mPV(int pos, char* str)
4452
497711e7
GS
4453=for hackers
4454Found in file XSUB.h
4455
954c1994
GS
4456=item XST_mUNDEF
4457
4458Place C<&PL_sv_undef> into the specified position C<pos> on the
4459stack.
4460
4461 void XST_mUNDEF(int pos)
4462
497711e7
GS
4463=for hackers
4464Found in file XSUB.h
4465
954c1994
GS
4466=item XST_mYES
4467
4468Place C<&PL_sv_yes> into the specified position C<pos> on the
4469stack.
4470
4471 void XST_mYES(int pos)
4472
497711e7
GS
4473=for hackers
4474Found in file XSUB.h
4475
954c1994
GS
4476=item XS_VERSION
4477
4478The version identifier for an XS module. This is usually
4479handled automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>.
4480
497711e7
GS
4481=for hackers
4482Found in file XSUB.h
4483
954c1994
GS
4484=item XS_VERSION_BOOTCHECK
4485
4486Macro to verify that a PM module's $VERSION variable matches the XS
4487module's C<XS_VERSION> variable. This is usually handled automatically by
4488C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">.
4489
4490 XS_VERSION_BOOTCHECK;
4491
497711e7
GS
4492=for hackers
4493Found in file XSUB.h
4494
954c1994
GS
4495=item Zero
4496
4497The XSUB-writer's interface to the C C<memzero> function. The C<dest> is the
4498destination, C<nitems> is the number of items, and C<type> is the type.
4499
4500 void Zero(void* dest, int nitems, type)
4501
497711e7
GS
4502=for hackers
4503Found in file handy.h
4504
954c1994
GS
4505=back
4506
4507=head1 AUTHORS
4508
4509Until May 1997, this document was maintained by Jeff Okamoto
4510<okamoto@corp.hp.com>. It is now maintained as part of Perl itself.
4511
4512With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
4513Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
4514Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
4515Stephen McCamant, and Gurusamy Sarathy.
4516
4517API Listing originally by Dean Roehrich <roehrich@cray.com>.
4518
4519Updated to be autogenerated from comments in the source by Benjamin Stuhl.
4520
4521=head1 SEE ALSO
4522
4523perlguts(1), perlxs(1), perlxstut(1), perlintern(1)
4524