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