Don't skip too much of the locale error message if no environ array,
[p5sagit/p5-mst-13.2.git] / pod / perlapi.pod
CommitLineData
954c1994 1=head1 NAME
2
3perlapi - autogenerated documentation for the perl public API
4
5=head1 DESCRIPTION
6
1c846c1f 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 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 28=for hackers
29Found in file av.h
30
954c1994 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 38=for hackers
39Found in file av.c
40
f3b76584 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 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 70=for hackers
71Found in file av.c
72
954c1994 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 79See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for
80more information on how to use this function on tied arrays.
954c1994 81
82 SV** av_fetch(AV* ar, I32 key, I32 lval)
83
497711e7 84=for hackers
85Found in file av.c
86
f3b76584 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 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 104=for hackers
105Found in file av.c
106
954c1994 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 115=for hackers
116Found in file av.c
117
954c1994 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 125=for hackers
126Found in file av.c
127
954c1994 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 135=for hackers
136Found in file av.c
137
954c1994 138=item av_shift
139
140Shifts an SV off the beginning of the array.
141
142 SV* av_shift(AV* ar)
143
497711e7 144=for hackers
145Found in file av.c
146
954c1994 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 158more information on how to use this function on tied arrays.
159
160 SV** av_store(AV* ar, I32 key, SV* val)
161
497711e7 162=for hackers
163Found in file av.c
164
954c1994 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 171=for hackers
172Found in file av.c
173
954c1994 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 182=for hackers
183Found in file av.c
184
f9a63242 185=item bytes_from_utf8
186
187Converts a string C<s> of length C<len> from UTF8 into byte encoding.
188Unlike <utf8_to_bytes> but like C<bytes_to_utf8>, returns a pointer to
ef9edfd0 189the newly-created string, and updates C<len> to contain the new
190length. Returns the original string if no conversion occurs, C<len>
191is unchanged. Do nothing if C<is_utf8> points to 0. Sets C<is_utf8> to
1920 if C<s> is converted or contains all 7bit characters.
f9a63242 193
194NOTE: this function is experimental and may change or be
195removed without notice.
196
197 U8* bytes_from_utf8(U8 *s, STRLEN *len, bool *is_utf8)
198
199=for hackers
200Found in file utf8.c
201
497711e7 202=item bytes_to_utf8
203
204Converts a string C<s> of length C<len> from ASCII into UTF8 encoding.
6662521e 205Returns a pointer to the newly-created string, and sets C<len> to
206reflect the new length.
497711e7 207
eebe1485 208NOTE: this function is experimental and may change or be
209removed without notice.
210
211 U8* bytes_to_utf8(U8 *s, STRLEN *len)
497711e7 212
213=for hackers
214Found in file utf8.c
215
954c1994 216=item call_argv
217
218Performs a callback to the specified Perl sub. See L<perlcall>.
219
220NOTE: the perl_ form of this function is deprecated.
221
222 I32 call_argv(const char* sub_name, I32 flags, char** argv)
223
497711e7 224=for hackers
225Found in file perl.c
226
954c1994 227=item call_method
228
229Performs a callback to the specified Perl method. The blessed object must
230be on the stack. See L<perlcall>.
231
232NOTE: the perl_ form of this function is deprecated.
233
234 I32 call_method(const char* methname, I32 flags)
235
497711e7 236=for hackers
237Found in file perl.c
238
954c1994 239=item call_pv
240
241Performs a callback to the specified Perl sub. See L<perlcall>.
242
243NOTE: the perl_ form of this function is deprecated.
244
245 I32 call_pv(const char* sub_name, I32 flags)
246
497711e7 247=for hackers
248Found in file perl.c
249
954c1994 250=item call_sv
251
252Performs a callback to the Perl sub whose name is in the SV. See
253L<perlcall>.
254
255NOTE: the perl_ form of this function is deprecated.
256
257 I32 call_sv(SV* sv, I32 flags)
258
497711e7 259=for hackers
260Found in file perl.c
261
954c1994 262=item CLASS
263
264Variable which is setup by C<xsubpp> to indicate the
265class name for a C++ XS constructor. This is always a C<char*>. See C<THIS>.
266
267 char* CLASS
268
497711e7 269=for hackers
270Found in file XSUB.h
271
954c1994 272=item Copy
273
274The XSUB-writer's interface to the C C<memcpy> function. The C<src> is the
275source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is
276the type. May fail on overlapping copies. See also C<Move>.
277
278 void Copy(void* src, void* dest, int nitems, type)
279
497711e7 280=for hackers
281Found in file handy.h
282
954c1994 283=item croak
284
c9d5ac95 285This is the XSUB-writer's interface to Perl's C<die> function.
286Normally use this function the same way you use the C C<printf>
287function. See C<warn>.
288
289If you want to throw an exception object, assign the object to
290C<$@> and then pass C<Nullch> to croak():
291
292 errsv = get_sv("@", TRUE);
293 sv_setsv(errsv, exception_object);
294 croak(Nullch);
954c1994 295
296 void croak(const char* pat, ...)
297
497711e7 298=for hackers
299Found in file util.c
300
954c1994 301=item CvSTASH
302
303Returns the stash of the CV.
304
305 HV* CvSTASH(CV* cv)
306
497711e7 307=for hackers
308Found in file cv.h
309
beab0874 310=item cv_const_sv
311
312If C<cv> is a constant sub eligible for inlining. returns the constant
313value returned by the sub. Otherwise, returns NULL.
314
315Constant subs can be created with C<newCONSTSUB> or as described in
316L<perlsub/"Constant Functions">.
317
318 SV* cv_const_sv(CV* cv)
319
320=for hackers
35676c7e 321Found in file op.c
beab0874 322
954c1994 323=item dMARK
324
325Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and
326C<dORIGMARK>.
327
328 dMARK;
329
497711e7 330=for hackers
331Found in file pp.h
332
954c1994 333=item dORIGMARK
334
335Saves the original stack mark for the XSUB. See C<ORIGMARK>.
336
337 dORIGMARK;
338
497711e7 339=for hackers
340Found in file pp.h
341
954c1994 342=item dSP
343
344Declares a local copy of perl's stack pointer for the XSUB, available via
345the C<SP> macro. See C<SP>.
346
347 dSP;
348
497711e7 349=for hackers
350Found in file pp.h
351
954c1994 352=item dXSARGS
353
354Sets up stack and mark pointers for an XSUB, calling dSP and dMARK. This
355is usually handled automatically by C<xsubpp>. Declares the C<items>
356variable to indicate the number of items on the stack.
357
358 dXSARGS;
359
497711e7 360=for hackers
361Found in file XSUB.h
362
954c1994 363=item dXSI32
364
365Sets up the C<ix> variable for an XSUB which has aliases. This is usually
366handled automatically by C<xsubpp>.
367
368 dXSI32;
369
497711e7 370=for hackers
371Found in file XSUB.h
372
954c1994 373=item ENTER
374
375Opening bracket on a callback. See C<LEAVE> and L<perlcall>.
376
377 ENTER;
378
497711e7 379=for hackers
380Found in file scope.h
381
954c1994 382=item eval_pv
383
384Tells Perl to C<eval> the given string and return an SV* result.
385
386NOTE: the perl_ form of this function is deprecated.
387
388 SV* eval_pv(const char* p, I32 croak_on_error)
389
497711e7 390=for hackers
391Found in file perl.c
392
954c1994 393=item eval_sv
394
395Tells Perl to C<eval> the string in the SV.
396
397NOTE: the perl_ form of this function is deprecated.
398
399 I32 eval_sv(SV* sv, I32 flags)
400
497711e7 401=for hackers
402Found in file perl.c
403
954c1994 404=item EXTEND
405
406Used to extend the argument stack for an XSUB's return values. Once
4375e838 407used, guarantees that there is room for at least C<nitems> to be pushed
954c1994 408onto the stack.
409
410 void EXTEND(SP, int nitems)
411
497711e7 412=for hackers
413Found in file pp.h
414
954c1994 415=item fbm_compile
416
417Analyses the string in order to make fast searches on it using fbm_instr()
418-- the Boyer-Moore algorithm.
419
420 void fbm_compile(SV* sv, U32 flags)
421
497711e7 422=for hackers
423Found in file util.c
424
954c1994 425=item fbm_instr
426
427Returns the location of the SV in the string delimited by C<str> and
428C<strend>. It returns C<Nullch> if the string can't be found. The C<sv>
429does not have to be fbm_compiled, but the search will not be as fast
430then.
431
432 char* fbm_instr(unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags)
433
497711e7 434=for hackers
435Found in file util.c
436
954c1994 437=item FREETMPS
438
439Closing bracket for temporaries on a callback. See C<SAVETMPS> and
440L<perlcall>.
441
442 FREETMPS;
443
497711e7 444=for hackers
445Found in file scope.h
446
954c1994 447=item get_av
448
449Returns the AV of the specified Perl array. If C<create> is set and the
450Perl variable does not exist then it will be created. If C<create> is not
451set and the variable does not exist then NULL is returned.
452
453NOTE: the perl_ form of this function is deprecated.
454
455 AV* get_av(const char* name, I32 create)
456
497711e7 457=for hackers
458Found in file perl.c
459
954c1994 460=item get_cv
461
462Returns the CV of the specified Perl subroutine. If C<create> is set and
463the Perl subroutine does not exist then it will be declared (which has the
464same effect as saying C<sub name;>). If C<create> is not set and the
465subroutine does not exist then NULL is returned.
466
467NOTE: the perl_ form of this function is deprecated.
468
469 CV* get_cv(const char* name, I32 create)
470
497711e7 471=for hackers
472Found in file perl.c
473
954c1994 474=item get_hv
475
476Returns the HV of the specified Perl hash. If C<create> is set and the
477Perl variable does not exist then it will be created. If C<create> is not
478set and the variable does not exist then NULL is returned.
479
480NOTE: the perl_ form of this function is deprecated.
481
482 HV* get_hv(const char* name, I32 create)
483
497711e7 484=for hackers
485Found in file perl.c
486
954c1994 487=item get_sv
488
489Returns the SV of the specified Perl scalar. 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 SV* get_sv(const char* name, I32 create)
496
497711e7 497=for hackers
498Found in file perl.c
499
954c1994 500=item GIMME
501
502A backward-compatible version of C<GIMME_V> which can only return
503C<G_SCALAR> or C<G_ARRAY>; in a void context, it returns C<G_SCALAR>.
504Deprecated. Use C<GIMME_V> instead.
505
506 U32 GIMME
507
497711e7 508=for hackers
509Found in file op.h
510
954c1994 511=item GIMME_V
512
513The XSUB-writer's equivalent to Perl's C<wantarray>. Returns C<G_VOID>,
90fdbbb7 514C<G_SCALAR> or C<G_ARRAY> for void, scalar or list context,
954c1994 515respectively.
516
517 U32 GIMME_V
518
497711e7 519=for hackers
520Found in file op.h
521
954c1994 522=item GvSV
523
524Return the SV from the GV.
525
526 SV* GvSV(GV* gv)
527
497711e7 528=for hackers
529Found in file gv.h
530
954c1994 531=item gv_fetchmeth
532
533Returns the glob with the given C<name> and a defined subroutine or
534C<NULL>. The glob lives in the given C<stash>, or in the stashes
1c846c1f 535accessible via @ISA and @UNIVERSAL.
954c1994 536
537The argument C<level> should be either 0 or -1. If C<level==0>, as a
538side-effect creates a glob with the given C<name> in the given C<stash>
539which in the case of success contains an alias for the subroutine, and sets
1c846c1f 540up caching info for this glob. Similarly for all the searched stashes.
954c1994 541
542This function grants C<"SUPER"> token as a postfix of the stash name. The
543GV returned from C<gv_fetchmeth> may be a method cache entry, which is not
4929bf7b 544visible to Perl code. So when calling C<call_sv>, you should not use
954c1994 545the GV directly; instead, you should use the method's CV, which can be
1c846c1f 546obtained from the GV with the C<GvCV> macro.
954c1994 547
548 GV* gv_fetchmeth(HV* stash, const char* name, STRLEN len, I32 level)
549
497711e7 550=for hackers
551Found in file gv.c
552
954c1994 553=item gv_fetchmethod
554
6d0f518e 555See L<gv_fetchmethod_autoload>.
954c1994 556
557 GV* gv_fetchmethod(HV* stash, const char* name)
558
497711e7 559=for hackers
560Found in file gv.c
561
954c1994 562=item gv_fetchmethod_autoload
563
564Returns the glob which contains the subroutine to call to invoke the method
565on the C<stash>. In fact in the presence of autoloading this may be the
566glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is
1c846c1f 567already setup.
954c1994 568
569The third parameter of C<gv_fetchmethod_autoload> determines whether
570AUTOLOAD lookup is performed if the given method is not present: non-zero
1c846c1f 571means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.
954c1994 572Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload>
1c846c1f 573with a non-zero C<autoload> parameter.
954c1994 574
575These functions grant C<"SUPER"> token as a prefix of the method name. Note
576that if you want to keep the returned glob for a long time, you need to
577check for it being "AUTOLOAD", since at the later time the call may load a
578different subroutine due to $AUTOLOAD changing its value. Use the glob
1c846c1f 579created via a side effect to do this.
954c1994 580
581These functions have the same side-effects and as C<gv_fetchmeth> with
582C<level==0>. C<name> should be writable if contains C<':'> or C<'
583''>. The warning against passing the GV returned by C<gv_fetchmeth> to
1c846c1f 584C<call_sv> apply equally to these functions.
954c1994 585
586 GV* gv_fetchmethod_autoload(HV* stash, const char* name, I32 autoload)
587
497711e7 588=for hackers
589Found in file gv.c
590
954c1994 591=item gv_stashpv
592
386d01d6 593Returns a pointer to the stash for a specified package. C<name> should
594be a valid UTF-8 string. If C<create> is set then the package will be
595created if it does not already exist. If C<create> is not set and the
596package does not exist then NULL is returned.
954c1994 597
598 HV* gv_stashpv(const char* name, I32 create)
599
497711e7 600=for hackers
601Found in file gv.c
602
954c1994 603=item gv_stashsv
604
386d01d6 605Returns a pointer to the stash for a specified package, which must be a
606valid UTF-8 string. See C<gv_stashpv>.
954c1994 607
608 HV* gv_stashsv(SV* sv, I32 create)
609
497711e7 610=for hackers
611Found in file gv.c
612
954c1994 613=item G_ARRAY
614
90fdbbb7 615Used to indicate list context. See C<GIMME_V>, C<GIMME> and
954c1994 616L<perlcall>.
617
497711e7 618=for hackers
619Found in file cop.h
620
954c1994 621=item G_DISCARD
622
623Indicates that arguments returned from a callback should be discarded. See
624L<perlcall>.
625
497711e7 626=for hackers
627Found in file cop.h
628
954c1994 629=item G_EVAL
630
631Used to force a Perl C<eval> wrapper around a callback. See
632L<perlcall>.
633
497711e7 634=for hackers
635Found in file cop.h
636
954c1994 637=item G_NOARGS
638
639Indicates that no arguments are being sent to a callback. See
640L<perlcall>.
641
497711e7 642=for hackers
643Found in file cop.h
644
954c1994 645=item G_SCALAR
646
647Used to indicate scalar context. See C<GIMME_V>, C<GIMME>, and
648L<perlcall>.
649
497711e7 650=for hackers
651Found in file cop.h
652
954c1994 653=item G_VOID
654
655Used to indicate void context. See C<GIMME_V> and L<perlcall>.
656
497711e7 657=for hackers
658Found in file cop.h
659
954c1994 660=item HEf_SVKEY
661
662This flag, used in the length slot of hash entries and magic structures,
663specifies the structure contains a C<SV*> pointer where a C<char*> pointer
664is to be expected. (For information only--not to be used).
665
497711e7 666=for hackers
667Found in file hv.h
668
954c1994 669=item HeHASH
670
671Returns the computed hash stored in the hash entry.
672
673 U32 HeHASH(HE* he)
674
497711e7 675=for hackers
676Found in file hv.h
677
954c1994 678=item HeKEY
679
680Returns the actual pointer stored in the key slot of the hash entry. The
681pointer may be either C<char*> or C<SV*>, depending on the value of
682C<HeKLEN()>. Can be assigned to. The C<HePV()> or C<HeSVKEY()> macros are
683usually preferable for finding the value of a key.
684
685 void* HeKEY(HE* he)
686
497711e7 687=for hackers
688Found in file hv.h
689
954c1994 690=item HeKLEN
691
692If this is negative, and amounts to C<HEf_SVKEY>, it indicates the entry
693holds an C<SV*> key. Otherwise, holds the actual length of the key. Can
694be assigned to. The C<HePV()> macro is usually preferable for finding key
695lengths.
696
697 STRLEN HeKLEN(HE* he)
698
497711e7 699=for hackers
700Found in file hv.h
701
954c1994 702=item HePV
703
704Returns the key slot of the hash entry as a C<char*> value, doing any
705necessary dereferencing of possibly C<SV*> keys. The length of the string
706is placed in C<len> (this is a macro, so do I<not> use C<&len>). If you do
707not care about what the length of the key is, you may use the global
708variable C<PL_na>, though this is rather less efficient than using a local
709variable. Remember though, that hash keys in perl are free to contain
710embedded nulls, so using C<strlen()> or similar is not a good way to find
711the length of hash keys. This is very similar to the C<SvPV()> macro
712described elsewhere in this document.
713
714 char* HePV(HE* he, STRLEN len)
715
497711e7 716=for hackers
717Found in file hv.h
718
954c1994 719=item HeSVKEY
720
721Returns the key as an C<SV*>, or C<Nullsv> if the hash entry does not
722contain an C<SV*> key.
723
724 SV* HeSVKEY(HE* he)
725
497711e7 726=for hackers
727Found in file hv.h
728
954c1994 729=item HeSVKEY_force
730
731Returns the key as an C<SV*>. Will create and return a temporary mortal
732C<SV*> if the hash entry contains only a C<char*> key.
733
734 SV* HeSVKEY_force(HE* he)
735
497711e7 736=for hackers
737Found in file hv.h
738
954c1994 739=item HeSVKEY_set
740
741Sets the key to a given C<SV*>, taking care to set the appropriate flags to
742indicate the presence of an C<SV*> key, and returns the same
743C<SV*>.
744
745 SV* HeSVKEY_set(HE* he, SV* sv)
746
497711e7 747=for hackers
748Found in file hv.h
749
954c1994 750=item HeVAL
751
752Returns the value slot (type C<SV*>) stored in the hash entry.
753
754 SV* HeVAL(HE* he)
755
497711e7 756=for hackers
757Found in file hv.h
758
954c1994 759=item HvNAME
760
761Returns the package name of a stash. See C<SvSTASH>, C<CvSTASH>.
762
763 char* HvNAME(HV* stash)
764
497711e7 765=for hackers
766Found in file hv.h
767
954c1994 768=item hv_clear
769
770Clears a hash, making it empty.
771
772 void hv_clear(HV* tb)
773
497711e7 774=for hackers
775Found in file hv.c
776
954c1994 777=item hv_delete
778
779Deletes a key/value pair in the hash. The value SV is removed from the
1c846c1f 780hash and returned to the caller. The C<klen> is the length of the key.
954c1994 781The C<flags> value will normally be zero; if set to G_DISCARD then NULL
782will be returned.
783
da58a35d 784 SV* hv_delete(HV* tb, const char* key, I32 klen, I32 flags)
954c1994 785
497711e7 786=for hackers
787Found in file hv.c
788
954c1994 789=item hv_delete_ent
790
791Deletes a key/value pair in the hash. The value SV is removed from the
792hash and returned to the caller. The C<flags> value will normally be zero;
793if set to G_DISCARD then NULL will be returned. C<hash> can be a valid
794precomputed hash value, or 0 to ask for it to be computed.
795
796 SV* hv_delete_ent(HV* tb, SV* key, I32 flags, U32 hash)
797
497711e7 798=for hackers
799Found in file hv.c
800
954c1994 801=item hv_exists
802
803Returns a boolean indicating whether the specified hash key exists. The
804C<klen> is the length of the key.
805
da58a35d 806 bool hv_exists(HV* tb, const char* key, I32 klen)
954c1994 807
497711e7 808=for hackers
809Found in file hv.c
810
954c1994 811=item hv_exists_ent
812
813Returns a boolean indicating whether the specified hash key exists. C<hash>
814can be a valid precomputed hash value, or 0 to ask for it to be
815computed.
816
817 bool hv_exists_ent(HV* tb, SV* key, U32 hash)
818
497711e7 819=for hackers
820Found in file hv.c
821
954c1994 822=item hv_fetch
823
824Returns the SV which corresponds to the specified key in the hash. The
825C<klen> is the length of the key. If C<lval> is set then the fetch will be
826part of a store. Check that the return value is non-null before
1c846c1f 827dereferencing it to a C<SV*>.
954c1994 828
96f1132b 829See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994 830information on how to use this function on tied hashes.
831
da58a35d 832 SV** hv_fetch(HV* tb, const char* key, I32 klen, I32 lval)
954c1994 833
497711e7 834=for hackers
835Found in file hv.c
836
954c1994 837=item hv_fetch_ent
838
839Returns the hash entry which corresponds to the specified key in the hash.
840C<hash> must be a valid precomputed hash number for the given C<key>, or 0
841if you want the function to compute it. IF C<lval> is set then the fetch
842will be part of a store. Make sure the return value is non-null before
843accessing it. The return value when C<tb> is a tied hash is a pointer to a
844static location, so be sure to make a copy of the structure if you need to
1c846c1f 845store it somewhere.
954c1994 846
96f1132b 847See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994 848information on how to use this function on tied hashes.
849
850 HE* hv_fetch_ent(HV* tb, SV* key, I32 lval, U32 hash)
851
497711e7 852=for hackers
853Found in file hv.c
854
954c1994 855=item hv_iterinit
856
857Prepares a starting point to traverse a hash table. Returns the number of
858keys in the hash (i.e. the same as C<HvKEYS(tb)>). The return value is
1c846c1f 859currently only meaningful for hashes without tie magic.
954c1994 860
861NOTE: Before version 5.004_65, C<hv_iterinit> used to return the number of
862hash buckets that happen to be in use. If you still need that esoteric
863value, you can get it through the macro C<HvFILL(tb)>.
864
865 I32 hv_iterinit(HV* tb)
866
497711e7 867=for hackers
868Found in file hv.c
869
954c1994 870=item hv_iterkey
871
872Returns the key from the current position of the hash iterator. See
873C<hv_iterinit>.
874
875 char* hv_iterkey(HE* entry, I32* retlen)
876
497711e7 877=for hackers
878Found in file hv.c
879
954c1994 880=item hv_iterkeysv
881
882Returns the key as an C<SV*> from the current position of the hash
883iterator. The return value will always be a mortal copy of the key. Also
884see C<hv_iterinit>.
885
886 SV* hv_iterkeysv(HE* entry)
887
497711e7 888=for hackers
889Found in file hv.c
890
954c1994 891=item hv_iternext
892
893Returns entries from a hash iterator. See C<hv_iterinit>.
894
895 HE* hv_iternext(HV* tb)
896
497711e7 897=for hackers
898Found in file hv.c
899
954c1994 900=item hv_iternextsv
901
902Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one
903operation.
904
905 SV* hv_iternextsv(HV* hv, char** key, I32* retlen)
906
497711e7 907=for hackers
908Found in file hv.c
909
954c1994 910=item hv_iterval
911
912Returns the value from the current position of the hash iterator. See
913C<hv_iterkey>.
914
915 SV* hv_iterval(HV* tb, HE* entry)
916
497711e7 917=for hackers
918Found in file hv.c
919
954c1994 920=item hv_magic
921
922Adds magic to a hash. See C<sv_magic>.
923
924 void hv_magic(HV* hv, GV* gv, int how)
925
497711e7 926=for hackers
927Found in file hv.c
928
954c1994 929=item hv_store
930
931Stores an SV in a hash. The hash key is specified as C<key> and C<klen> is
932the length of the key. The C<hash> parameter is the precomputed hash
933value; if it is zero then Perl will compute it. The return value will be
934NULL if the operation failed or if the value did not need to be actually
935stored within the hash (as in the case of tied hashes). Otherwise it can
936be dereferenced to get the original C<SV*>. Note that the caller is
937responsible for suitably incrementing the reference count of C<val> before
1c846c1f 938the call, and decrementing it if the function returned NULL.
954c1994 939
96f1132b 940See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994 941information on how to use this function on tied hashes.
942
da58a35d 943 SV** hv_store(HV* tb, const char* key, I32 klen, SV* val, U32 hash)
954c1994 944
497711e7 945=for hackers
946Found in file hv.c
947
954c1994 948=item hv_store_ent
949
950Stores C<val> in a hash. The hash key is specified as C<key>. The C<hash>
951parameter is the precomputed hash value; if it is zero then Perl will
952compute it. The return value is the new hash entry so created. It will be
953NULL if the operation failed or if the value did not need to be actually
954stored within the hash (as in the case of tied hashes). Otherwise the
955contents of the return value can be accessed using the C<He???> macros
956described here. Note that the caller is responsible for suitably
957incrementing the reference count of C<val> before the call, and
1c846c1f 958decrementing it if the function returned NULL.
954c1994 959
96f1132b 960See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994 961information on how to use this function on tied hashes.
962
963 HE* hv_store_ent(HV* tb, SV* key, SV* val, U32 hash)
964
497711e7 965=for hackers
966Found in file hv.c
967
954c1994 968=item hv_undef
969
970Undefines the hash.
971
972 void hv_undef(HV* tb)
973
497711e7 974=for hackers
975Found in file hv.c
976
954c1994 977=item isALNUM
978
4375e838 979Returns a boolean indicating whether the C C<char> is an ASCII alphanumeric
f1cbbd6e 980character (including underscore) or digit.
954c1994 981
982 bool isALNUM(char ch)
983
497711e7 984=for hackers
985Found in file handy.h
986
954c1994 987=item isALPHA
988
4375e838 989Returns a boolean indicating whether the C C<char> is an ASCII alphabetic
954c1994 990character.
991
992 bool isALPHA(char ch)
993
497711e7 994=for hackers
995Found in file handy.h
996
954c1994 997=item isDIGIT
998
4375e838 999Returns a boolean indicating whether the C C<char> is an ASCII
954c1994 1000digit.
1001
1002 bool isDIGIT(char ch)
1003
497711e7 1004=for hackers
1005Found in file handy.h
1006
954c1994 1007=item isLOWER
1008
1009Returns a boolean indicating whether the C C<char> is a lowercase
1010character.
1011
1012 bool isLOWER(char ch)
1013
497711e7 1014=for hackers
1015Found in file handy.h
1016
954c1994 1017=item isSPACE
1018
1019Returns a boolean indicating whether the C C<char> is whitespace.
1020
1021 bool isSPACE(char ch)
1022
497711e7 1023=for hackers
1024Found in file handy.h
1025
954c1994 1026=item isUPPER
1027
1028Returns a boolean indicating whether the C C<char> is an uppercase
1029character.
1030
1031 bool isUPPER(char ch)
1032
497711e7 1033=for hackers
1034Found in file handy.h
1035
eebe1485 1036=item is_utf8_char
1037
1038Tests if some arbitrary number of bytes begins in a valid UTF-8 character.
1039The actual number of bytes in the UTF-8 character will be returned if it
1040is valid, otherwise 0.
1041
1042 STRLEN is_utf8_char(U8 *p)
1043
1044=for hackers
1045Found in file utf8.c
1046
1047=item is_utf8_string
1048
1049Returns true if first C<len> bytes of the given string form valid a UTF8
1050string, false otherwise.
1051
1052 bool is_utf8_string(U8 *s, STRLEN len)
1053
1054=for hackers
1055Found in file utf8.c
1056
954c1994 1057=item items
1058
1059Variable which is setup by C<xsubpp> to indicate the number of
1060items on the stack. See L<perlxs/"Variable-length Parameter Lists">.
1061
1062 I32 items
1063
497711e7 1064=for hackers
1065Found in file XSUB.h
1066
954c1994 1067=item ix
1068
1069Variable which is setup by C<xsubpp> to indicate which of an
1070XSUB's aliases was used to invoke it. See L<perlxs/"The ALIAS: Keyword">.
1071
1072 I32 ix
1073
497711e7 1074=for hackers
1075Found in file XSUB.h
1076
954c1994 1077=item LEAVE
1078
1079Closing bracket on a callback. See C<ENTER> and L<perlcall>.
1080
1081 LEAVE;
1082
497711e7 1083=for hackers
1084Found in file scope.h
1085
954c1994 1086=item looks_like_number
1087
1088Test if an the content of an SV looks like a number (or is a
a8586c98 1089number). C<Inf> and C<Infinity> are treated as numbers (so will not
1090issue a non-numeric warning), even if your atof() doesn't grok them.
954c1994 1091
1092 I32 looks_like_number(SV* sv)
1093
497711e7 1094=for hackers
1095Found in file sv.c
1096
954c1994 1097=item MARK
1098
1099Stack marker variable for the XSUB. See C<dMARK>.
1100
497711e7 1101=for hackers
1102Found in file pp.h
1103
954c1994 1104=item mg_clear
1105
1106Clear something magical that the SV represents. See C<sv_magic>.
1107
1108 int mg_clear(SV* sv)
1109
497711e7 1110=for hackers
1111Found in file mg.c
1112
954c1994 1113=item mg_copy
1114
1115Copies the magic from one SV to another. See C<sv_magic>.
1116
1117 int mg_copy(SV* sv, SV* nsv, const char* key, I32 klen)
1118
497711e7 1119=for hackers
1120Found in file mg.c
1121
954c1994 1122=item mg_find
1123
1124Finds the magic pointer for type matching the SV. See C<sv_magic>.
1125
1126 MAGIC* mg_find(SV* sv, int type)
1127
497711e7 1128=for hackers
1129Found in file mg.c
1130
954c1994 1131=item mg_free
1132
1133Free any magic storage used by the SV. See C<sv_magic>.
1134
1135 int mg_free(SV* sv)
1136
497711e7 1137=for hackers
1138Found in file mg.c
1139
954c1994 1140=item mg_get
1141
1142Do magic after a value is retrieved from the SV. See C<sv_magic>.
1143
1144 int mg_get(SV* sv)
1145
497711e7 1146=for hackers
1147Found in file mg.c
1148
954c1994 1149=item mg_length
1150
1151Report on the SV's length. See C<sv_magic>.
1152
1153 U32 mg_length(SV* sv)
1154
497711e7 1155=for hackers
1156Found in file mg.c
1157
954c1994 1158=item mg_magical
1159
1160Turns on the magical status of an SV. See C<sv_magic>.
1161
1162 void mg_magical(SV* sv)
1163
497711e7 1164=for hackers
1165Found in file mg.c
1166
954c1994 1167=item mg_set
1168
1169Do magic after a value is assigned to the SV. See C<sv_magic>.
1170
1171 int mg_set(SV* sv)
1172
497711e7 1173=for hackers
1174Found in file mg.c
1175
954c1994 1176=item Move
1177
1178The XSUB-writer's interface to the C C<memmove> function. The C<src> is the
1179source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is
1180the type. Can do overlapping moves. See also C<Copy>.
1181
1182 void Move(void* src, void* dest, int nitems, type)
1183
497711e7 1184=for hackers
1185Found in file handy.h
1186
954c1994 1187=item New
1188
1189The XSUB-writer's interface to the C C<malloc> function.
1190
1191 void New(int id, void* ptr, int nitems, type)
1192
497711e7 1193=for hackers
1194Found in file handy.h
1195
954c1994 1196=item newAV
1197
1198Creates a new AV. The reference count is set to 1.
1199
1200 AV* newAV()
1201
497711e7 1202=for hackers
1203Found in file av.c
1204
954c1994 1205=item Newc
1206
1207The XSUB-writer's interface to the C C<malloc> function, with
1208cast.
1209
1210 void Newc(int id, void* ptr, int nitems, type, cast)
1211
497711e7 1212=for hackers
1213Found in file handy.h
1214
954c1994 1215=item newCONSTSUB
1216
1217Creates a constant sub equivalent to Perl C<sub FOO () { 123 }> which is
1218eligible for inlining at compile-time.
1219
beab0874 1220 CV* newCONSTSUB(HV* stash, char* name, SV* sv)
954c1994 1221
497711e7 1222=for hackers
35676c7e 1223Found in file op.c
497711e7 1224
954c1994 1225=item newHV
1226
1227Creates a new HV. The reference count is set to 1.
1228
1229 HV* newHV()
1230
497711e7 1231=for hackers
1232Found in file hv.c
1233
954c1994 1234=item newRV_inc
1235
1236Creates an RV wrapper for an SV. The reference count for the original SV is
1237incremented.
1238
1239 SV* newRV_inc(SV* sv)
1240
497711e7 1241=for hackers
1242Found in file sv.h
1243
954c1994 1244=item newRV_noinc
1245
1246Creates an RV wrapper for an SV. The reference count for the original
1247SV is B<not> incremented.
1248
1249 SV* newRV_noinc(SV *sv)
1250
497711e7 1251=for hackers
1252Found in file sv.c
1253
954c1994 1254=item NEWSV
1255
1256Creates a new SV. A non-zero C<len> parameter indicates the number of
1257bytes of preallocated string space the SV should have. An extra byte for a
1258tailing NUL is also reserved. (SvPOK is not set for the SV even if string
444155da 1259space is allocated.) The reference count for the new SV is set to 1.
954c1994 1260C<id> is an integer id between 0 and 1299 (used to identify leaks).
1261
1262 SV* NEWSV(int id, STRLEN len)
1263
497711e7 1264=for hackers
1265Found in file handy.h
1266
954c1994 1267=item newSViv
1268
1269Creates a new SV and copies an integer into it. The reference count for the
1270SV is set to 1.
1271
1272 SV* newSViv(IV i)
1273
497711e7 1274=for hackers
1275Found in file sv.c
1276
954c1994 1277=item newSVnv
1278
1279Creates a new SV and copies a floating point value into it.
1280The reference count for the SV is set to 1.
1281
1282 SV* newSVnv(NV n)
1283
497711e7 1284=for hackers
1285Found in file sv.c
1286
954c1994 1287=item newSVpv
1288
1289Creates a new SV and copies a string into it. The reference count for the
1290SV is set to 1. If C<len> is zero, Perl will compute the length using
1291strlen(). For efficiency, consider using C<newSVpvn> instead.
1292
1293 SV* newSVpv(const char* s, STRLEN len)
1294
497711e7 1295=for hackers
1296Found in file sv.c
1297
954c1994 1298=item newSVpvf
1299
1300Creates a new SV an initialize it with the string formatted like
1301C<sprintf>.
1302
1303 SV* newSVpvf(const char* pat, ...)
1304
497711e7 1305=for hackers
1306Found in file sv.c
1307
954c1994 1308=item newSVpvn
1309
1310Creates a new SV and copies a string into it. The reference count for the
1c846c1f 1311SV is set to 1. Note that if C<len> is zero, Perl will create a zero length
954c1994 1312string. You are responsible for ensuring that the source string is at least
1313C<len> bytes long.
1314
1315 SV* newSVpvn(const char* s, STRLEN len)
1316
497711e7 1317=for hackers
1318Found in file sv.c
1319
1c846c1f 1320=item newSVpvn_share
1321
1322Creates a new SV and populates it with a string from
1323the string table. Turns on READONLY and FAKE.
1324The idea here is that as string table is used for shared hash
1325keys these strings will have SvPVX == HeKEY and hash lookup
1326will avoid string compare.
1327
ae154d6d 1328 SV* newSVpvn_share(const char* s, I32 len, U32 hash)
1c846c1f 1329
1330=for hackers
1331Found in file sv.c
1332
954c1994 1333=item newSVrv
1334
1335Creates a new SV for the RV, C<rv>, to point to. If C<rv> is not an RV then
1336it will be upgraded to one. If C<classname> is non-null then the new SV will
1337be blessed in the specified package. The new SV is returned and its
1338reference count is 1.
1339
1340 SV* newSVrv(SV* rv, const char* classname)
1341
497711e7 1342=for hackers
1343Found in file sv.c
1344
954c1994 1345=item newSVsv
1346
1347Creates a new SV which is an exact duplicate of the original SV.
1348
1349 SV* newSVsv(SV* old)
1350
497711e7 1351=for hackers
1352Found in file sv.c
1353
1a3327fb 1354=item newSVuv
1355
1356Creates a new SV and copies an unsigned integer into it.
1357The reference count for the SV is set to 1.
1358
1359 SV* newSVuv(UV u)
1360
497711e7 1361=for hackers
1362Found in file sv.c
1363
954c1994 1364=item newXS
1365
1366Used by C<xsubpp> to hook up XSUBs as Perl subs.
1367
497711e7 1368=for hackers
35676c7e 1369Found in file op.c
497711e7 1370
954c1994 1371=item newXSproto
1372
1373Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to
1374the subs.
1375
497711e7 1376=for hackers
1377Found in file XSUB.h
1378
954c1994 1379=item Newz
1380
1381The XSUB-writer's interface to the C C<malloc> function. The allocated
1382memory is zeroed with C<memzero>.
1383
1384 void Newz(int id, void* ptr, int nitems, type)
1385
497711e7 1386=for hackers
1387Found in file handy.h
1388
954c1994 1389=item Nullav
1390
1391Null AV pointer.
1392
497711e7 1393=for hackers
1394Found in file av.h
1395
954c1994 1396=item Nullch
1397
1398Null character pointer.
1399
497711e7 1400=for hackers
1401Found in file handy.h
1402
954c1994 1403=item Nullcv
1404
1405Null CV pointer.
1406
497711e7 1407=for hackers
1408Found in file cv.h
1409
954c1994 1410=item Nullhv
1411
1412Null HV pointer.
1413
497711e7 1414=for hackers
1415Found in file hv.h
1416
954c1994 1417=item Nullsv
1418
1419Null SV pointer.
1420
497711e7 1421=for hackers
1422Found in file handy.h
1423
954c1994 1424=item ORIGMARK
1425
1426The original stack mark for the XSUB. See C<dORIGMARK>.
1427
497711e7 1428=for hackers
1429Found in file pp.h
1430
954c1994 1431=item perl_alloc
1432
1433Allocates a new Perl interpreter. See L<perlembed>.
1434
1435 PerlInterpreter* perl_alloc()
1436
497711e7 1437=for hackers
1438Found in file perl.c
1439
954c1994 1440=item perl_construct
1441
1442Initializes a new Perl interpreter. See L<perlembed>.
1443
1444 void perl_construct(PerlInterpreter* interp)
1445
497711e7 1446=for hackers
1447Found in file perl.c
1448
954c1994 1449=item perl_destruct
1450
1451Shuts down a Perl interpreter. See L<perlembed>.
1452
1453 void perl_destruct(PerlInterpreter* interp)
1454
497711e7 1455=for hackers
1456Found in file perl.c
1457
954c1994 1458=item perl_free
1459
1460Releases a Perl interpreter. See L<perlembed>.
1461
1462 void perl_free(PerlInterpreter* interp)
1463
497711e7 1464=for hackers
1465Found in file perl.c
1466
954c1994 1467=item perl_parse
1468
1469Tells a Perl interpreter to parse a Perl script. See L<perlembed>.
1470
1471 int perl_parse(PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env)
1472
497711e7 1473=for hackers
1474Found in file perl.c
1475
954c1994 1476=item perl_run
1477
1478Tells a Perl interpreter to run. See L<perlembed>.
1479
1480 int perl_run(PerlInterpreter* interp)
1481
497711e7 1482=for hackers
1483Found in file perl.c
1484
954c1994 1485=item PL_modglobal
1486
ae154d6d 1487C<PL_modglobal> is a general purpose, interpreter global HV for use by
954c1994 1488extensions that need to keep information on a per-interpreter basis.
ae154d6d 1489In a pinch, it can also be used as a symbol table for extensions
1490to share data among each other. It is a good idea to use keys
954c1994 1491prefixed by the package name of the extension that owns the data.
1492
1493 HV* PL_modglobal
1494
497711e7 1495=for hackers
1496Found in file intrpvar.h
1497
954c1994 1498=item PL_na
1499
1500A convenience variable which is typically used with C<SvPV> when one
1501doesn't care about the length of the string. It is usually more efficient
1502to either declare a local variable and use that instead or to use the
1503C<SvPV_nolen> macro.
1504
1505 STRLEN PL_na
1506
497711e7 1507=for hackers
1508Found in file thrdvar.h
1509
954c1994 1510=item PL_sv_no
1511
1512This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
1513C<&PL_sv_no>.
1514
1515 SV PL_sv_no
1516
497711e7 1517=for hackers
1518Found in file intrpvar.h
1519
954c1994 1520=item PL_sv_undef
1521
1522This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
1523
1524 SV PL_sv_undef
1525
497711e7 1526=for hackers
1527Found in file intrpvar.h
1528
954c1994 1529=item PL_sv_yes
1530
1531This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
1532C<&PL_sv_yes>.
1533
1534 SV PL_sv_yes
1535
497711e7 1536=for hackers
1537Found in file intrpvar.h
1538
954c1994 1539=item POPi
1540
1541Pops an integer off the stack.
1542
1543 IV POPi
1544
497711e7 1545=for hackers
1546Found in file pp.h
1547
954c1994 1548=item POPl
1549
1550Pops a long off the stack.
1551
1552 long POPl
1553
497711e7 1554=for hackers
1555Found in file pp.h
1556
954c1994 1557=item POPn
1558
1559Pops a double off the stack.
1560
1561 NV POPn
1562
497711e7 1563=for hackers
1564Found in file pp.h
1565
954c1994 1566=item POPp
1567
1568Pops a string off the stack.
1569
1570 char* POPp
1571
497711e7 1572=for hackers
1573Found in file pp.h
1574
954c1994 1575=item POPs
1576
1577Pops an SV off the stack.
1578
1579 SV* POPs
1580
497711e7 1581=for hackers
1582Found in file pp.h
1583
954c1994 1584=item PUSHi
1585
1586Push an integer onto the stack. The stack must have room for this element.
1587Handles 'set' magic. See C<XPUSHi>.
1588
1589 void PUSHi(IV iv)
1590
497711e7 1591=for hackers
1592Found in file pp.h
1593
954c1994 1594=item PUSHMARK
1595
1596Opening bracket for arguments on a callback. See C<PUTBACK> and
1597L<perlcall>.
1598
1599 PUSHMARK;
1600
497711e7 1601=for hackers
1602Found in file pp.h
1603
954c1994 1604=item PUSHn
1605
1606Push a double onto the stack. The stack must have room for this element.
1607Handles 'set' magic. See C<XPUSHn>.
1608
1609 void PUSHn(NV nv)
1610
497711e7 1611=for hackers
1612Found in file pp.h
1613
954c1994 1614=item PUSHp
1615
1616Push a string onto the stack. The stack must have room for this element.
1617The C<len> indicates the length of the string. Handles 'set' magic. See
1618C<XPUSHp>.
1619
1620 void PUSHp(char* str, STRLEN len)
1621
497711e7 1622=for hackers
1623Found in file pp.h
1624
954c1994 1625=item PUSHs
1626
1c846c1f 1627Push an SV onto the stack. The stack must have room for this element.
954c1994 1628Does not handle 'set' magic. See C<XPUSHs>.
1629
1630 void PUSHs(SV* sv)
1631
497711e7 1632=for hackers
1633Found in file pp.h
1634
954c1994 1635=item PUSHu
1636
1637Push an unsigned integer onto the stack. The stack must have room for this
1638element. See C<XPUSHu>.
1639
1640 void PUSHu(UV uv)
1641
497711e7 1642=for hackers
1643Found in file pp.h
1644
954c1994 1645=item PUTBACK
1646
1647Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>.
1648See C<PUSHMARK> and L<perlcall> for other uses.
1649
1650 PUTBACK;
1651
497711e7 1652=for hackers
1653Found in file pp.h
1654
954c1994 1655=item Renew
1656
1657The XSUB-writer's interface to the C C<realloc> function.
1658
1659 void Renew(void* ptr, int nitems, type)
1660
497711e7 1661=for hackers
1662Found in file handy.h
1663
954c1994 1664=item Renewc
1665
1666The XSUB-writer's interface to the C C<realloc> function, with
1667cast.
1668
1669 void Renewc(void* ptr, int nitems, type, cast)
1670
497711e7 1671=for hackers
1672Found in file handy.h
1673
954c1994 1674=item require_pv
1675
1676Tells Perl to C<require> a module.
1677
1678NOTE: the perl_ form of this function is deprecated.
1679
1680 void require_pv(const char* pv)
1681
497711e7 1682=for hackers
1683Found in file perl.c
1684
954c1994 1685=item RETVAL
1686
1687Variable which is setup by C<xsubpp> to hold the return value for an
1688XSUB. This is always the proper type for the XSUB. See
1689L<perlxs/"The RETVAL Variable">.
1690
1691 (whatever) RETVAL
1692
497711e7 1693=for hackers
1694Found in file XSUB.h
1695
954c1994 1696=item Safefree
1697
1698The XSUB-writer's interface to the C C<free> function.
1699
49b8b560 1700 void Safefree(void* ptr)
954c1994 1701
497711e7 1702=for hackers
1703Found in file handy.h
1704
954c1994 1705=item savepv
1706
1707Copy a string to a safe spot. This does not use an SV.
1708
1709 char* savepv(const char* sv)
1710
497711e7 1711=for hackers
1712Found in file util.c
1713
954c1994 1714=item savepvn
1715
1716Copy a string to a safe spot. The C<len> indicates number of bytes to
1717copy. This does not use an SV.
1718
1719 char* savepvn(const char* sv, I32 len)
1720
497711e7 1721=for hackers
1722Found in file util.c
1723
954c1994 1724=item SAVETMPS
1725
1726Opening bracket for temporaries on a callback. See C<FREETMPS> and
1727L<perlcall>.
1728
1729 SAVETMPS;
1730
497711e7 1731=for hackers
1732Found in file scope.h
1733
954c1994 1734=item SP
1735
1736Stack pointer. This is usually handled by C<xsubpp>. See C<dSP> and
1737C<SPAGAIN>.
1738
497711e7 1739=for hackers
1740Found in file pp.h
1741
954c1994 1742=item SPAGAIN
1743
1744Refetch the stack pointer. Used after a callback. See L<perlcall>.
1745
1746 SPAGAIN;
1747
497711e7 1748=for hackers
1749Found in file pp.h
1750
954c1994 1751=item ST
1752
1753Used to access elements on the XSUB's stack.
1754
1755 SV* ST(int ix)
1756
497711e7 1757=for hackers
1758Found in file XSUB.h
1759
954c1994 1760=item strEQ
1761
1762Test two strings to see if they are equal. Returns true or false.
1763
1764 bool strEQ(char* s1, char* s2)
1765
497711e7 1766=for hackers
1767Found in file handy.h
1768
954c1994 1769=item strGE
1770
1771Test two strings to see if the first, C<s1>, is greater than or equal to
1772the second, C<s2>. Returns true or false.
1773
1774 bool strGE(char* s1, char* s2)
1775
497711e7 1776=for hackers
1777Found in file handy.h
1778
954c1994 1779=item strGT
1780
1781Test two strings to see if the first, C<s1>, is greater than the second,
1782C<s2>. Returns true or false.
1783
1784 bool strGT(char* s1, char* s2)
1785
497711e7 1786=for hackers
1787Found in file handy.h
1788
954c1994 1789=item strLE
1790
1791Test two strings to see if the first, C<s1>, is less than or equal to the
1792second, C<s2>. Returns true or false.
1793
1794 bool strLE(char* s1, char* s2)
1795
497711e7 1796=for hackers
1797Found in file handy.h
1798
954c1994 1799=item strLT
1800
1801Test two strings to see if the first, C<s1>, is less than the second,
1802C<s2>. Returns true or false.
1803
1804 bool strLT(char* s1, char* s2)
1805
497711e7 1806=for hackers
1807Found in file handy.h
1808
954c1994 1809=item strNE
1810
1811Test two strings to see if they are different. Returns true or
1812false.
1813
1814 bool strNE(char* s1, char* s2)
1815
497711e7 1816=for hackers
1817Found in file handy.h
1818
954c1994 1819=item strnEQ
1820
1821Test two strings to see if they are equal. The C<len> parameter indicates
1822the number of bytes to compare. Returns true or false. (A wrapper for
1823C<strncmp>).
1824
1825 bool strnEQ(char* s1, char* s2, STRLEN len)
1826
497711e7 1827=for hackers
1828Found in file handy.h
1829
954c1994 1830=item strnNE
1831
1832Test two strings to see if they are different. The C<len> parameter
1833indicates the number of bytes to compare. Returns true or false. (A
1834wrapper for C<strncmp>).
1835
1836 bool strnNE(char* s1, char* s2, STRLEN len)
1837
497711e7 1838=for hackers
1839Found in file handy.h
1840
954c1994 1841=item StructCopy
1842
4375e838 1843This is an architecture-independent macro to copy one structure to another.
954c1994 1844
1845 void StructCopy(type src, type dest, type)
1846
497711e7 1847=for hackers
1848Found in file handy.h
1849
954c1994 1850=item SvCUR
1851
1852Returns the length of the string which is in the SV. See C<SvLEN>.
1853
1854 STRLEN SvCUR(SV* sv)
1855
497711e7 1856=for hackers
1857Found in file sv.h
1858
954c1994 1859=item SvCUR_set
1860
1861Set the length of the string which is in the SV. See C<SvCUR>.
1862
1863 void SvCUR_set(SV* sv, STRLEN len)
1864
497711e7 1865=for hackers
1866Found in file sv.h
1867
954c1994 1868=item SvEND
1869
1870Returns a pointer to the last character in the string which is in the SV.
1871See C<SvCUR>. Access the character as *(SvEND(sv)).
1872
1873 char* SvEND(SV* sv)
1874
497711e7 1875=for hackers
1876Found in file sv.h
1877
954c1994 1878=item SvGETMAGIC
1879
1880Invokes C<mg_get> on an SV if it has 'get' magic. This macro evaluates its
1881argument more than once.
1882
1883 void SvGETMAGIC(SV* sv)
1884
497711e7 1885=for hackers
1886Found in file sv.h
1887
954c1994 1888=item SvGROW
1889
1890Expands the character buffer in the SV so that it has room for the
1891indicated number of bytes (remember to reserve space for an extra trailing
1892NUL character). Calls C<sv_grow> to perform the expansion if necessary.
1893Returns a pointer to the character buffer.
1894
1895 void SvGROW(SV* sv, STRLEN len)
1896
497711e7 1897=for hackers
1898Found in file sv.h
1899
954c1994 1900=item SvIOK
1901
1902Returns a boolean indicating whether the SV contains an integer.
1903
1904 bool SvIOK(SV* sv)
1905
497711e7 1906=for hackers
1907Found in file sv.h
1908
954c1994 1909=item SvIOKp
1910
1911Returns a boolean indicating whether the SV contains an integer. Checks
1912the B<private> setting. Use C<SvIOK>.
1913
1914 bool SvIOKp(SV* sv)
1915
497711e7 1916=for hackers
1917Found in file sv.h
1918
e331fc52 1919=item SvIOK_notUV
1920
1921Returns a boolean indicating whether the SV contains an signed integer.
1922
1923 void SvIOK_notUV(SV* sv)
1924
1925=for hackers
1926Found in file sv.h
1927
954c1994 1928=item SvIOK_off
1929
1930Unsets the IV status of an SV.
1931
1932 void SvIOK_off(SV* sv)
1933
497711e7 1934=for hackers
1935Found in file sv.h
1936
954c1994 1937=item SvIOK_on
1938
1939Tells an SV that it is an integer.
1940
1941 void SvIOK_on(SV* sv)
1942
497711e7 1943=for hackers
1944Found in file sv.h
1945
954c1994 1946=item SvIOK_only
1947
1948Tells an SV that it is an integer and disables all other OK bits.
1949
1950 void SvIOK_only(SV* sv)
1951
497711e7 1952=for hackers
1953Found in file sv.h
1954
e331fc52 1955=item SvIOK_only_UV
1956
1957Tells and SV that it is an unsigned integer and disables all other OK bits.
1958
1959 void SvIOK_only_UV(SV* sv)
1960
1961=for hackers
1962Found in file sv.h
1963
1964=item SvIOK_UV
1965
1966Returns a boolean indicating whether the SV contains an unsigned integer.
1967
1968 void SvIOK_UV(SV* sv)
1969
1970=for hackers
1971Found in file sv.h
1972
954c1994 1973=item SvIV
1974
1975Coerces the given SV to an integer and returns it.
1976
1977 IV SvIV(SV* sv)
1978
497711e7 1979=for hackers
1980Found in file sv.h
1981
954c1994 1982=item SvIVX
1983
1984Returns the integer which is stored in the SV, assuming SvIOK is
1985true.
1986
1987 IV SvIVX(SV* sv)
1988
497711e7 1989=for hackers
1990Found in file sv.h
1991
954c1994 1992=item SvLEN
1993
91e74348 1994Returns the size of the string buffer in the SV, not including any part
1995attributable to C<SvOOK>. See C<SvCUR>.
954c1994 1996
1997 STRLEN SvLEN(SV* sv)
1998
497711e7 1999=for hackers
2000Found in file sv.h
2001
954c1994 2002=item SvNIOK
2003
2004Returns a boolean indicating whether the SV contains a number, integer or
2005double.
2006
2007 bool SvNIOK(SV* sv)
2008
497711e7 2009=for hackers
2010Found in file sv.h
2011
954c1994 2012=item SvNIOKp
2013
2014Returns a boolean indicating whether the SV contains a number, integer or
2015double. Checks the B<private> setting. Use C<SvNIOK>.
2016
2017 bool SvNIOKp(SV* sv)
2018
497711e7 2019=for hackers
2020Found in file sv.h
2021
954c1994 2022=item SvNIOK_off
2023
2024Unsets the NV/IV status of an SV.
2025
2026 void SvNIOK_off(SV* sv)
2027
497711e7 2028=for hackers
2029Found in file sv.h
2030
954c1994 2031=item SvNOK
2032
2033Returns a boolean indicating whether the SV contains a double.
2034
2035 bool SvNOK(SV* sv)
2036
497711e7 2037=for hackers
2038Found in file sv.h
2039
954c1994 2040=item SvNOKp
2041
2042Returns a boolean indicating whether the SV contains a double. Checks the
2043B<private> setting. Use C<SvNOK>.
2044
2045 bool SvNOKp(SV* sv)
2046
497711e7 2047=for hackers
2048Found in file sv.h
2049
954c1994 2050=item SvNOK_off
2051
2052Unsets the NV status of an SV.
2053
2054 void SvNOK_off(SV* sv)
2055
497711e7 2056=for hackers
2057Found in file sv.h
2058
954c1994 2059=item SvNOK_on
2060
2061Tells an SV that it is a double.
2062
2063 void SvNOK_on(SV* sv)
2064
497711e7 2065=for hackers
2066Found in file sv.h
2067
954c1994 2068=item SvNOK_only
2069
2070Tells an SV that it is a double and disables all other OK bits.
2071
2072 void SvNOK_only(SV* sv)
2073
497711e7 2074=for hackers
2075Found in file sv.h
2076
954c1994 2077=item SvNV
2078
2079Coerce the given SV to a double and return it.
2080
2081 NV SvNV(SV* sv)
2082
497711e7 2083=for hackers
2084Found in file sv.h
2085
954c1994 2086=item SvNVX
2087
2088Returns the double which is stored in the SV, assuming SvNOK is
2089true.
2090
2091 NV SvNVX(SV* sv)
2092
497711e7 2093=for hackers
2094Found in file sv.h
2095
954c1994 2096=item SvOK
2097
2098Returns a boolean indicating whether the value is an SV.
2099
2100 bool SvOK(SV* sv)
2101
497711e7 2102=for hackers
2103Found in file sv.h
2104
954c1994 2105=item SvOOK
2106
2107Returns a boolean indicating whether the SvIVX is a valid offset value for
2108the SvPVX. This hack is used internally to speed up removal of characters
2109from the beginning of a SvPV. When SvOOK is true, then the start of the
2110allocated string buffer is really (SvPVX - SvIVX).
2111
2112 bool SvOOK(SV* sv)
2113
497711e7 2114=for hackers
2115Found in file sv.h
2116
954c1994 2117=item SvPOK
2118
2119Returns a boolean indicating whether the SV contains a character
2120string.
2121
2122 bool SvPOK(SV* sv)
2123
497711e7 2124=for hackers
2125Found in file sv.h
2126
954c1994 2127=item SvPOKp
2128
2129Returns a boolean indicating whether the SV contains a character string.
2130Checks the B<private> setting. Use C<SvPOK>.
2131
2132 bool SvPOKp(SV* sv)
2133
497711e7 2134=for hackers
2135Found in file sv.h
2136
954c1994 2137=item SvPOK_off
2138
2139Unsets the PV status of an SV.
2140
2141 void SvPOK_off(SV* sv)
2142
497711e7 2143=for hackers
2144Found in file sv.h
2145
954c1994 2146=item SvPOK_on
2147
2148Tells an SV that it is a string.
2149
2150 void SvPOK_on(SV* sv)
2151
497711e7 2152=for hackers
2153Found in file sv.h
2154
954c1994 2155=item SvPOK_only
2156
2157Tells an SV that it is a string and disables all other OK bits.
2158
2159 void SvPOK_only(SV* sv)
2160
497711e7 2161=for hackers
2162Found in file sv.h
2163
914184e1 2164=item SvPOK_only_UTF8
2165
2166Tells an SV that it is a UTF8 string (do not use frivolously)
2167and disables all other OK bits.
2168
2169 void SvPOK_only_UTF8(SV* sv)
2170
2171=for hackers
2172Found in file sv.h
2173
954c1994 2174=item SvPV
2175
2176Returns a pointer to the string in the SV, or a stringified form of the SV
2177if the SV does not contain a string. Handles 'get' magic.
2178
2179 char* SvPV(SV* sv, STRLEN len)
2180
497711e7 2181=for hackers
2182Found in file sv.h
2183
954c1994 2184=item SvPVX
2185
2186Returns a pointer to the string in the SV. The SV must contain a
2187string.
2188
2189 char* SvPVX(SV* sv)
2190
497711e7 2191=for hackers
2192Found in file sv.h
2193
954c1994 2194=item SvPV_force
2195
2196Like <SvPV> but will force the SV into becoming a string (SvPOK). You want
2197force if you are going to update the SvPVX directly.
2198
2199 char* SvPV_force(SV* sv, STRLEN len)
2200
497711e7 2201=for hackers
2202Found in file sv.h
2203
954c1994 2204=item SvPV_nolen
2205
2206Returns a pointer to the string in the SV, or a stringified form of the SV
2207if the SV does not contain a string. Handles 'get' magic.
2208
2209 char* SvPV_nolen(SV* sv)
2210
497711e7 2211=for hackers
2212Found in file sv.h
2213
954c1994 2214=item SvREFCNT
2215
2216Returns the value of the object's reference count.
2217
2218 U32 SvREFCNT(SV* sv)
2219
497711e7 2220=for hackers
2221Found in file sv.h
2222
954c1994 2223=item SvREFCNT_dec
2224
2225Decrements the reference count of the given SV.
2226
2227 void SvREFCNT_dec(SV* sv)
2228
497711e7 2229=for hackers
2230Found in file sv.h
2231
954c1994 2232=item SvREFCNT_inc
2233
2234Increments the reference count of the given SV.
2235
2236 SV* SvREFCNT_inc(SV* sv)
2237
497711e7 2238=for hackers
2239Found in file sv.h
2240
954c1994 2241=item SvROK
2242
2243Tests if the SV is an RV.
2244
2245 bool SvROK(SV* sv)
2246
497711e7 2247=for hackers
2248Found in file sv.h
2249
954c1994 2250=item SvROK_off
2251
2252Unsets the RV status of an SV.
2253
2254 void SvROK_off(SV* sv)
2255
497711e7 2256=for hackers
2257Found in file sv.h
2258
954c1994 2259=item SvROK_on
2260
2261Tells an SV that it is an RV.
2262
2263 void SvROK_on(SV* sv)
2264
497711e7 2265=for hackers
2266Found in file sv.h
2267
954c1994 2268=item SvRV
2269
2270Dereferences an RV to return the SV.
2271
2272 SV* SvRV(SV* sv)
2273
497711e7 2274=for hackers
2275Found in file sv.h
2276
954c1994 2277=item SvSETMAGIC
2278
2279Invokes C<mg_set> on an SV if it has 'set' magic. This macro evaluates its
2280argument more than once.
2281
2282 void SvSETMAGIC(SV* sv)
2283
497711e7 2284=for hackers
2285Found in file sv.h
2286
954c1994 2287=item SvSetSV
2288
2289Calls C<sv_setsv> if dsv is not the same as ssv. May evaluate arguments
2290more than once.
2291
2292 void SvSetSV(SV* dsb, SV* ssv)
2293
497711e7 2294=for hackers
2295Found in file sv.h
2296
954c1994 2297=item SvSetSV_nosteal
2298
2299Calls a non-destructive version of C<sv_setsv> if dsv is not the same as
2300ssv. May evaluate arguments more than once.
2301
2302 void SvSetSV_nosteal(SV* dsv, SV* ssv)
2303
497711e7 2304=for hackers
2305Found in file sv.h
2306
954c1994 2307=item SvSTASH
2308
2309Returns the stash of the SV.
2310
2311 HV* SvSTASH(SV* sv)
2312
497711e7 2313=for hackers
2314Found in file sv.h
2315
954c1994 2316=item SvTAINT
2317
2318Taints an SV if tainting is enabled
2319
2320 void SvTAINT(SV* sv)
2321
497711e7 2322=for hackers
2323Found in file sv.h
2324
954c1994 2325=item SvTAINTED
2326
2327Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if
2328not.
2329
2330 bool SvTAINTED(SV* sv)
2331
497711e7 2332=for hackers
2333Found in file sv.h
2334
954c1994 2335=item SvTAINTED_off
2336
2337Untaints an SV. Be I<very> careful with this routine, as it short-circuits
2338some of Perl's fundamental security features. XS module authors should not
2339use this function unless they fully understand all the implications of
2340unconditionally untainting the value. Untainting should be done in the
2341standard perl fashion, via a carefully crafted regexp, rather than directly
2342untainting variables.
2343
2344 void SvTAINTED_off(SV* sv)
2345
497711e7 2346=for hackers
2347Found in file sv.h
2348
954c1994 2349=item SvTAINTED_on
2350
2351Marks an SV as tainted.
2352
2353 void SvTAINTED_on(SV* sv)
2354
497711e7 2355=for hackers
2356Found in file sv.h
2357
954c1994 2358=item SvTRUE
2359
2360Returns a boolean indicating whether Perl would evaluate the SV as true or
2361false, defined or undefined. Does not handle 'get' magic.
2362
2363 bool SvTRUE(SV* sv)
2364
497711e7 2365=for hackers
2366Found in file sv.h
2367
682a4d6f 2368=item svtype
843dbe26 2369
682a4d6f 2370An enum of flags for Perl types. These are found in the file B<sv.h>
2371in the C<svtype> enum. Test these flags with the C<SvTYPE> macro.
34f7a5fe 2372
497711e7 2373=for hackers
2374Found in file sv.h
2375
682a4d6f 2376=item SvTYPE
2eb25c99 2377
682a4d6f 2378Returns the type of the SV. See C<svtype>.
2379
2380 svtype SvTYPE(SV* sv)
954c1994 2381
497711e7 2382=for hackers
2383Found in file sv.h
2384
954c1994 2385=item SVt_IV
2386
2387Integer type flag for scalars. See C<svtype>.
2388
497711e7 2389=for hackers
2390Found in file sv.h
2391
954c1994 2392=item SVt_NV
2393
2394Double type flag for scalars. See C<svtype>.
2395
497711e7 2396=for hackers
2397Found in file sv.h
2398
954c1994 2399=item SVt_PV
2400
2401Pointer type flag for scalars. See C<svtype>.
2402
497711e7 2403=for hackers
2404Found in file sv.h
2405
954c1994 2406=item SVt_PVAV
2407
2408Type flag for arrays. See C<svtype>.
2409
497711e7 2410=for hackers
2411Found in file sv.h
2412
954c1994 2413=item SVt_PVCV
2414
2415Type flag for code refs. See C<svtype>.
2416
497711e7 2417=for hackers
2418Found in file sv.h
2419
954c1994 2420=item SVt_PVHV
2421
2422Type flag for hashes. See C<svtype>.
2423
497711e7 2424=for hackers
2425Found in file sv.h
2426
954c1994 2427=item SVt_PVMG
2428
2429Type flag for blessed scalars. See C<svtype>.
2430
497711e7 2431=for hackers
2432Found in file sv.h
2433
a8586c98 2434=item SvUOK
2435
2436Returns a boolean indicating whether the SV contains an unsigned integer.
2437
2438 void SvUOK(SV* sv)
2439
2440=for hackers
2441Found in file sv.h
2442
954c1994 2443=item SvUPGRADE
2444
2445Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to
2446perform the upgrade if necessary. See C<svtype>.
2447
2448 void SvUPGRADE(SV* sv, svtype type)
2449
497711e7 2450=for hackers
2451Found in file sv.h
2452
914184e1 2453=item SvUTF8
2454
2455Returns a boolean indicating whether the SV contains UTF-8 encoded data.
2456
2457 void SvUTF8(SV* sv)
2458
2459=for hackers
2460Found in file sv.h
2461
2462=item SvUTF8_off
2463
2464Unsets the UTF8 status of an SV.
2465
2466 void SvUTF8_off(SV *sv)
2467
2468=for hackers
2469Found in file sv.h
2470
2471=item SvUTF8_on
2472
2473Tells an SV that it is a string and encoded in UTF8. Do not use frivolously.
2474
2475 void SvUTF8_on(SV *sv)
2476
2477=for hackers
2478Found in file sv.h
2479
954c1994 2480=item SvUV
2481
2482Coerces the given SV to an unsigned integer and returns it.
2483
2484 UV SvUV(SV* sv)
2485
497711e7 2486=for hackers
2487Found in file sv.h
2488
954c1994 2489=item SvUVX
2490
2491Returns the unsigned integer which is stored in the SV, assuming SvIOK is
2492true.
2493
2494 UV SvUVX(SV* sv)
2495
497711e7 2496=for hackers
2497Found in file sv.h
2498
954c1994 2499=item sv_2mortal
2500
2501Marks an SV as mortal. The SV will be destroyed when the current context
2502ends.
2503
2504 SV* sv_2mortal(SV* sv)
2505
497711e7 2506=for hackers
2507Found in file sv.c
2508
954c1994 2509=item sv_bless
2510
2511Blesses an SV into a specified package. The SV must be an RV. The package
2512must be designated by its stash (see C<gv_stashpv()>). The reference count
2513of the SV is unaffected.
2514
2515 SV* sv_bless(SV* sv, HV* stash)
2516
497711e7 2517=for hackers
2518Found in file sv.c
2519
954c1994 2520=item sv_catpv
2521
2522Concatenates the string onto the end of the string which is in the SV.
2523Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>.
2524
2525 void sv_catpv(SV* sv, const char* ptr)
2526
497711e7 2527=for hackers
2528Found in file sv.c
2529
954c1994 2530=item sv_catpvf
2531
2532Processes its arguments like C<sprintf> and appends the formatted output
2533to an SV. Handles 'get' magic, but not 'set' magic. C<SvSETMAGIC()> must
2534typically be called after calling this function to handle 'set' magic.
2535
2536 void sv_catpvf(SV* sv, const char* pat, ...)
2537
497711e7 2538=for hackers
2539Found in file sv.c
2540
954c1994 2541=item sv_catpvf_mg
2542
2543Like C<sv_catpvf>, but also handles 'set' magic.
2544
2545 void sv_catpvf_mg(SV *sv, const char* pat, ...)
2546
497711e7 2547=for hackers
2548Found in file sv.c
2549
954c1994 2550=item sv_catpvn
2551
2552Concatenates the string onto the end of the string which is in the SV. The
2553C<len> indicates number of bytes to copy. Handles 'get' magic, but not
2554'set' magic. See C<sv_catpvn_mg>.
2555
2556 void sv_catpvn(SV* sv, const char* ptr, STRLEN len)
2557
497711e7 2558=for hackers
2559Found in file sv.c
2560
954c1994 2561=item sv_catpvn_mg
2562
2563Like C<sv_catpvn>, but also handles 'set' magic.
2564
2565 void sv_catpvn_mg(SV *sv, const char *ptr, STRLEN len)
2566
497711e7 2567=for hackers
2568Found in file sv.c
2569
954c1994 2570=item sv_catpv_mg
2571
2572Like C<sv_catpv>, but also handles 'set' magic.
2573
2574 void sv_catpv_mg(SV *sv, const char *ptr)
2575
497711e7 2576=for hackers
2577Found in file sv.c
2578
954c1994 2579=item sv_catsv
2580
1aa99e6b 2581Concatenates the string from SV C<ssv> onto the end of the string in
2582SV C<dsv>. Modifies C<dsv> but not C<ssv>. Handles 'get' magic, but
2583not 'set' magic. See C<sv_catsv_mg>.
954c1994 2584
2585 void sv_catsv(SV* dsv, SV* ssv)
2586
497711e7 2587=for hackers
2588Found in file sv.c
2589
954c1994 2590=item sv_catsv_mg
2591
2592Like C<sv_catsv>, but also handles 'set' magic.
2593
2594 void sv_catsv_mg(SV *dstr, SV *sstr)
2595
497711e7 2596=for hackers
2597Found in file sv.c
2598
954c1994 2599=item sv_chop
2600
1c846c1f 2601Efficient removal of characters from the beginning of the string buffer.
954c1994 2602SvPOK(sv) must be true and the C<ptr> must be a pointer to somewhere inside
2603the string buffer. The C<ptr> becomes the first character of the adjusted
2604string.
2605
2606 void sv_chop(SV* sv, char* ptr)
2607
497711e7 2608=for hackers
2609Found in file sv.c
2610
c461cf8f 2611=item sv_clear
2612
2613Clear an SV, making it empty. Does not free the memory used by the SV
2614itself.
2615
2616 void sv_clear(SV* sv)
2617
2618=for hackers
2619Found in file sv.c
2620
954c1994 2621=item sv_cmp
2622
2623Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the
2624string in C<sv1> is less than, equal to, or greater than the string in
2625C<sv2>.
2626
2627 I32 sv_cmp(SV* sv1, SV* sv2)
2628
497711e7 2629=for hackers
2630Found in file sv.c
2631
c461cf8f 2632=item sv_cmp_locale
2633
2634Compares the strings in two SVs in a locale-aware manner. See
2635L</sv_cmp_locale>
2636
2637 I32 sv_cmp_locale(SV* sv1, SV* sv2)
2638
2639=for hackers
2640Found in file sv.c
2641
954c1994 2642=item sv_dec
2643
2644Auto-decrement of the value in the SV.
2645
2646 void sv_dec(SV* sv)
2647
497711e7 2648=for hackers
2649Found in file sv.c
2650
954c1994 2651=item sv_derived_from
2652
2653Returns a boolean indicating whether the SV is derived from the specified
2654class. This is the function that implements C<UNIVERSAL::isa>. It works
2655for class names as well as for objects.
2656
2657 bool sv_derived_from(SV* sv, const char* name)
2658
497711e7 2659=for hackers
2660Found in file universal.c
2661
954c1994 2662=item sv_eq
2663
2664Returns a boolean indicating whether the strings in the two SVs are
2665identical.
2666
2667 I32 sv_eq(SV* sv1, SV* sv2)
2668
497711e7 2669=for hackers
2670Found in file sv.c
2671
c461cf8f 2672=item sv_free
2673
2674Free the memory used by an SV.
2675
2676 void sv_free(SV* sv)
2677
2678=for hackers
2679Found in file sv.c
2680
2681=item sv_gets
2682
2683Get a line from the filehandle and store it into the SV, optionally
2684appending to the currently-stored string.
2685
2686 char* sv_gets(SV* sv, PerlIO* fp, I32 append)
2687
2688=for hackers
2689Found in file sv.c
2690
954c1994 2691=item sv_grow
2692
2693Expands the character buffer in the SV. This will use C<sv_unref> and will
2694upgrade the SV to C<SVt_PV>. Returns a pointer to the character buffer.
2695Use C<SvGROW>.
2696
2697 char* sv_grow(SV* sv, STRLEN newlen)
2698
497711e7 2699=for hackers
2700Found in file sv.c
2701
954c1994 2702=item sv_inc
2703
2704Auto-increment of the value in the SV.
2705
2706 void sv_inc(SV* sv)
2707
497711e7 2708=for hackers
2709Found in file sv.c
2710
954c1994 2711=item sv_insert
2712
2713Inserts a string at the specified offset/length within the SV. Similar to
2714the Perl substr() function.
2715
2716 void sv_insert(SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen)
2717
497711e7 2718=for hackers
2719Found in file sv.c
2720
954c1994 2721=item sv_isa
2722
2723Returns a boolean indicating whether the SV is blessed into the specified
2724class. This does not check for subtypes; use C<sv_derived_from> to verify
2725an inheritance relationship.
2726
2727 int sv_isa(SV* sv, const char* name)
2728
497711e7 2729=for hackers
2730Found in file sv.c
2731
954c1994 2732=item sv_isobject
2733
2734Returns a boolean indicating whether the SV is an RV pointing to a blessed
2735object. If the SV is not an RV, or if the object is not blessed, then this
2736will return false.
2737
2738 int sv_isobject(SV* sv)
2739
497711e7 2740=for hackers
2741Found in file sv.c
2742
954c1994 2743=item sv_len
2744
2745Returns the length of the string in the SV. See also C<SvCUR>.
2746
2747 STRLEN sv_len(SV* sv)
2748
497711e7 2749=for hackers
2750Found in file sv.c
2751
c461cf8f 2752=item sv_len_utf8
2753
2754Returns the number of characters in the string in an SV, counting wide
2755UTF8 bytes as a single character.
2756
2757 STRLEN sv_len_utf8(SV* sv)
2758
2759=for hackers
2760Found in file sv.c
2761
954c1994 2762=item sv_magic
2763
2764Adds magic to an SV.
2765
2766 void sv_magic(SV* sv, SV* obj, int how, const char* name, I32 namlen)
2767
497711e7 2768=for hackers
2769Found in file sv.c
2770
954c1994 2771=item sv_mortalcopy
2772
2773Creates a new SV which is a copy of the original SV. The new SV is marked
2774as mortal.
2775
2776 SV* sv_mortalcopy(SV* oldsv)
2777
497711e7 2778=for hackers
2779Found in file sv.c
2780
954c1994 2781=item sv_newmortal
2782
2783Creates a new SV which is mortal. The reference count of the SV is set to 1.
2784
2785 SV* sv_newmortal()
2786
497711e7 2787=for hackers
2788Found in file sv.c
2789
c461cf8f 2790=item sv_pvn_force
2791
2792Get a sensible string out of the SV somehow.
2793
2794 char* sv_pvn_force(SV* sv, STRLEN* lp)
2795
2796=for hackers
2797Found in file sv.c
2798
2799=item sv_pvutf8n_force
2800
2801Get a sensible UTF8-encoded string out of the SV somehow. See
2802L</sv_pvn_force>.
2803
2804 char* sv_pvutf8n_force(SV* sv, STRLEN* lp)
2805
2806=for hackers
2807Found in file sv.c
2808
2809=item sv_reftype
2810
2811Returns a string describing what the SV is a reference to.
2812
2813 char* sv_reftype(SV* sv, int ob)
2814
2815=for hackers
2816Found in file sv.c
2817
2818=item sv_replace
2819
2820Make the first argument a copy of the second, then delete the original.
2821
2822 void sv_replace(SV* sv, SV* nsv)
2823
2824=for hackers
2825Found in file sv.c
2826
2827=item sv_rvweaken
2828
2829Weaken a reference.
2830
2831 SV* sv_rvweaken(SV *sv)
2832
2833=for hackers
2834Found in file sv.c
2835
954c1994 2836=item sv_setiv
2837
2838Copies an integer into the given SV. Does not handle 'set' magic. See
2839C<sv_setiv_mg>.
2840
2841 void sv_setiv(SV* sv, IV num)
2842
497711e7 2843=for hackers
2844Found in file sv.c
2845
954c1994 2846=item sv_setiv_mg
2847
2848Like C<sv_setiv>, but also handles 'set' magic.
2849
2850 void sv_setiv_mg(SV *sv, IV i)
2851
497711e7 2852=for hackers
2853Found in file sv.c
2854
954c1994 2855=item sv_setnv
2856
2857Copies a double into the given SV. Does not handle 'set' magic. See
2858C<sv_setnv_mg>.
2859
2860 void sv_setnv(SV* sv, NV num)
2861
497711e7 2862=for hackers
2863Found in file sv.c
2864
954c1994 2865=item sv_setnv_mg
2866
2867Like C<sv_setnv>, but also handles 'set' magic.
2868
2869 void sv_setnv_mg(SV *sv, NV num)
2870
497711e7 2871=for hackers
2872Found in file sv.c
2873
954c1994 2874=item sv_setpv
2875
2876Copies a string into an SV. The string must be null-terminated. Does not
2877handle 'set' magic. See C<sv_setpv_mg>.
2878
2879 void sv_setpv(SV* sv, const char* ptr)
2880
497711e7 2881=for hackers
2882Found in file sv.c
2883
954c1994 2884=item sv_setpvf
2885
2886Processes its arguments like C<sprintf> and sets an SV to the formatted
2887output. Does not handle 'set' magic. See C<sv_setpvf_mg>.
2888
2889 void sv_setpvf(SV* sv, const char* pat, ...)
2890
497711e7 2891=for hackers
2892Found in file sv.c
2893
954c1994 2894=item sv_setpvf_mg
2895
2896Like C<sv_setpvf>, but also handles 'set' magic.
2897
2898 void sv_setpvf_mg(SV *sv, const char* pat, ...)
2899
497711e7 2900=for hackers
2901Found in file sv.c
2902
954c1994 2903=item sv_setpviv
2904
2905Copies an integer into the given SV, also updating its string value.
2906Does not handle 'set' magic. See C<sv_setpviv_mg>.
2907
2908 void sv_setpviv(SV* sv, IV num)
2909
497711e7 2910=for hackers
2911Found in file sv.c
2912
954c1994 2913=item sv_setpviv_mg
2914
2915Like C<sv_setpviv>, but also handles 'set' magic.
2916
2917 void sv_setpviv_mg(SV *sv, IV iv)
2918
497711e7 2919=for hackers
2920Found in file sv.c
2921
954c1994 2922=item sv_setpvn
2923
2924Copies a string into an SV. The C<len> parameter indicates the number of
2925bytes to be copied. Does not handle 'set' magic. See C<sv_setpvn_mg>.
2926
2927 void sv_setpvn(SV* sv, const char* ptr, STRLEN len)
2928
497711e7 2929=for hackers
2930Found in file sv.c
2931
954c1994 2932=item sv_setpvn_mg
2933
2934Like C<sv_setpvn>, but also handles 'set' magic.
2935
2936 void sv_setpvn_mg(SV *sv, const char *ptr, STRLEN len)
2937
497711e7 2938=for hackers
2939Found in file sv.c
2940
954c1994 2941=item sv_setpv_mg
2942
2943Like C<sv_setpv>, but also handles 'set' magic.
2944
2945 void sv_setpv_mg(SV *sv, const char *ptr)
2946
497711e7 2947=for hackers
2948Found in file sv.c
2949
954c1994 2950=item sv_setref_iv
2951
2952Copies an integer into a new SV, optionally blessing the SV. The C<rv>
2953argument will be upgraded to an RV. That RV will be modified to point to
2954the new SV. The C<classname> argument indicates the package for the
2955blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
2956will be returned and will have a reference count of 1.
2957
2958 SV* sv_setref_iv(SV* rv, const char* classname, IV iv)
2959
497711e7 2960=for hackers
2961Found in file sv.c
2962
954c1994 2963=item sv_setref_nv
2964
2965Copies a double into a new SV, optionally blessing the SV. The C<rv>
2966argument will be upgraded to an RV. That RV will be modified to point to
2967the new SV. The C<classname> argument indicates the package for the
2968blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
2969will be returned and will have a reference count of 1.
2970
2971 SV* sv_setref_nv(SV* rv, const char* classname, NV nv)
2972
497711e7 2973=for hackers
2974Found in file sv.c
2975
954c1994 2976=item sv_setref_pv
2977
2978Copies a pointer into a new SV, optionally blessing the SV. The C<rv>
2979argument will be upgraded to an RV. That RV will be modified to point to
2980the new SV. If the C<pv> argument is NULL then C<PL_sv_undef> will be placed
2981into the SV. The C<classname> argument indicates the package for the
2982blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
2983will be returned and will have a reference count of 1.
2984
2985Do not use with other Perl types such as HV, AV, SV, CV, because those
2986objects will become corrupted by the pointer copy process.
2987
2988Note that C<sv_setref_pvn> copies the string while this copies the pointer.
2989
2990 SV* sv_setref_pv(SV* rv, const char* classname, void* pv)
2991
497711e7 2992=for hackers
2993Found in file sv.c
2994
954c1994 2995=item sv_setref_pvn
2996
2997Copies a string into a new SV, optionally blessing the SV. The length of the
2998string must be specified with C<n>. The C<rv> argument will be upgraded to
2999an RV. That RV will be modified to point to the new SV. The C<classname>
3000argument indicates the package for the blessing. Set C<classname> to
3001C<Nullch> to avoid the blessing. The new SV will be returned and will have
3002a reference count of 1.
3003
3004Note that C<sv_setref_pv> copies the pointer while this copies the string.
3005
3006 SV* sv_setref_pvn(SV* rv, const char* classname, char* pv, STRLEN n)
3007
497711e7 3008=for hackers
3009Found in file sv.c
3010
954c1994 3011=item sv_setsv
3012
3013Copies the contents of the source SV C<ssv> into the destination SV C<dsv>.
3014The source SV may be destroyed if it is mortal. Does not handle 'set'
3015magic. See the macro forms C<SvSetSV>, C<SvSetSV_nosteal> and
3016C<sv_setsv_mg>.
3017
3018 void sv_setsv(SV* dsv, SV* ssv)
3019
497711e7 3020=for hackers
3021Found in file sv.c
3022
954c1994 3023=item sv_setsv_mg
3024
3025Like C<sv_setsv>, but also handles 'set' magic.
3026
3027 void sv_setsv_mg(SV *dstr, SV *sstr)
3028
497711e7 3029=for hackers
3030Found in file sv.c
3031
954c1994 3032=item sv_setuv
3033
3034Copies an unsigned integer into the given SV. Does not handle 'set' magic.
3035See C<sv_setuv_mg>.
3036
3037 void sv_setuv(SV* sv, UV num)
3038
497711e7 3039=for hackers
3040Found in file sv.c
3041
954c1994 3042=item sv_setuv_mg
3043
3044Like C<sv_setuv>, but also handles 'set' magic.
3045
3046 void sv_setuv_mg(SV *sv, UV u)
3047
497711e7 3048=for hackers
3049Found in file sv.c
3050
c461cf8f 3051=item sv_true
3052
3053Returns true if the SV has a true value by Perl's rules.
3054
3055 I32 sv_true(SV *sv)
3056
3057=for hackers
3058Found in file sv.c
3059
3060=item sv_unmagic
3061
3062Removes magic from an SV.
3063
3064 int sv_unmagic(SV* sv, int type)
3065
3066=for hackers
3067Found in file sv.c
3068
954c1994 3069=item sv_unref
3070
3071Unsets the RV status of the SV, and decrements the reference count of
3072whatever was being referenced by the RV. This can almost be thought of
b06226ff 3073as a reversal of C<newSVrv>. This is C<sv_unref_flags> with the C<flag>
ae154d6d 3074being zero. See C<SvROK_off>.
954c1994 3075
3076 void sv_unref(SV* sv)
3077
497711e7 3078=for hackers
3079Found in file sv.c
3080
840a7b70 3081=item sv_unref_flags
3082
3083Unsets the RV status of the SV, and decrements the reference count of
3084whatever was being referenced by the RV. This can almost be thought of
3085as a reversal of C<newSVrv>. The C<cflags> argument can contain
3086C<SV_IMMEDIATE_UNREF> to force the reference count to be decremented
3087(otherwise the decrementing is conditional on the reference count being
3088different from one or the reference being a readonly SV).
ae154d6d 3089See C<SvROK_off>.
840a7b70 3090
3091 void sv_unref_flags(SV* sv, U32 flags)
3092
3093=for hackers
3094Found in file sv.c
3095
954c1994 3096=item sv_upgrade
3097
3098Upgrade an SV to a more complex form. Use C<SvUPGRADE>. See
3099C<svtype>.
3100
3101 bool sv_upgrade(SV* sv, U32 mt)
3102
497711e7 3103=for hackers
3104Found in file sv.c
3105
954c1994 3106=item sv_usepvn
3107
3108Tells an SV to use C<ptr> to find its string value. Normally the string is
1c846c1f 3109stored inside the SV but sv_usepvn allows the SV to use an outside string.
954c1994 3110The C<ptr> should point to memory that was allocated by C<malloc>. The
3111string length, C<len>, must be supplied. This function will realloc the
3112memory pointed to by C<ptr>, so that pointer should not be freed or used by
3113the programmer after giving it to sv_usepvn. Does not handle 'set' magic.
3114See C<sv_usepvn_mg>.
3115
3116 void sv_usepvn(SV* sv, char* ptr, STRLEN len)
3117
497711e7 3118=for hackers
3119Found in file sv.c
3120
954c1994 3121=item sv_usepvn_mg
3122
3123Like C<sv_usepvn>, but also handles 'set' magic.
3124
3125 void sv_usepvn_mg(SV *sv, char *ptr, STRLEN len)
3126
497711e7 3127=for hackers
3128Found in file sv.c
3129
c461cf8f 3130=item sv_utf8_downgrade
3131
3132Attempt to convert the PV of an SV from UTF8-encoded to byte encoding.
3133This may not be possible if the PV contains non-byte encoding characters;
3134if this is the case, either returns false or, if C<fail_ok> is not
3135true, croaks.
3136
3137NOTE: this function is experimental and may change or be
3138removed without notice.
3139
3140 bool sv_utf8_downgrade(SV *sv, bool fail_ok)
3141
3142=for hackers
3143Found in file sv.c
3144
3145=item sv_utf8_encode
3146
3147Convert the PV of an SV to UTF8-encoded, but then turn off the C<SvUTF8>
1c846c1f 3148flag so that it looks like bytes again. Nothing calls this.
c461cf8f 3149
3150NOTE: this function is experimental and may change or be
3151removed without notice.
3152
3153 void sv_utf8_encode(SV *sv)
3154
3155=for hackers
3156Found in file sv.c
3157
3158=item sv_utf8_upgrade
3159
3160Convert the PV of an SV to its UTF8-encoded form.
3161
3162 void sv_utf8_upgrade(SV *sv)
3163
3164=for hackers
3165Found in file sv.c
3166
954c1994 3167=item sv_vcatpvfn
3168
3169Processes its arguments like C<vsprintf> and appends the formatted output
3170to an SV. Uses an array of SVs if the C style variable argument list is
3171missing (NULL). When running with taint checks enabled, indicates via
3172C<maybe_tainted> if results are untrustworthy (often due to the use of
3173locales).
3174
3175 void sv_vcatpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
3176
497711e7 3177=for hackers
3178Found in file sv.c
3179
954c1994 3180=item sv_vsetpvfn
3181
3182Works like C<vcatpvfn> but copies the text into the SV instead of
3183appending it.
3184
3185 void sv_vsetpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
3186
497711e7 3187=for hackers
3188Found in file sv.c
3189
954c1994 3190=item THIS
3191
3192Variable which is setup by C<xsubpp> to designate the object in a C++
3193XSUB. This is always the proper type for the C++ object. See C<CLASS> and
3194L<perlxs/"Using XS With C++">.
3195
3196 (whatever) THIS
3197
497711e7 3198=for hackers
3199Found in file XSUB.h
3200
954c1994 3201=item toLOWER
3202
3203Converts the specified character to lowercase.
3204
3205 char toLOWER(char ch)
3206
497711e7 3207=for hackers
3208Found in file handy.h
3209
954c1994 3210=item toUPPER
3211
3212Converts the specified character to uppercase.
3213
3214 char toUPPER(char ch)
3215
497711e7 3216=for hackers
3217Found in file handy.h
3218
b06226ff 3219=item utf8_distance
3220
3221Returns the number of UTF8 characters between the UTF-8 pointers C<a>
3222and C<b>.
3223
3224WARNING: use only if you *know* that the pointers point inside the
3225same UTF-8 buffer.
3226
3227 IV utf8_distance(U8 *a, U8 *b)
3228
3229=for hackers
3230Found in file utf8.c
3231
3232=item utf8_hop
3233
8850bf83 3234Return the UTF-8 pointer C<s> displaced by C<off> characters, either
3235forward or backward.
b06226ff 3236
3237WARNING: do not use the following unless you *know* C<off> is within
8850bf83 3238the UTF-8 data pointed to by C<s> *and* that on entry C<s> is aligned
3239on the first byte of character or just after the last byte of a character.
b06226ff 3240
3241 U8* utf8_hop(U8 *s, I32 off)
3242
3243=for hackers
3244Found in file utf8.c
3245
3246=item utf8_length
3247
3248Return the length of the UTF-8 char encoded string C<s> in characters.
3249Stops at C<e> (inclusive). If C<e E<lt> s> or if the scan would end
3250up past C<e>, croaks.
3251
3252 STRLEN utf8_length(U8* s, U8 *e)
3253
3254=for hackers
3255Found in file utf8.c
3256
497711e7 3257=item utf8_to_bytes
3258
246fae53 3259Converts a string C<s> of length C<len> from UTF8 into byte encoding.
3260Unlike C<bytes_to_utf8>, this over-writes the original string, and
3261updates len to contain the new length.
67e989fb 3262Returns zero on failure, setting C<len> to -1.
497711e7 3263
eebe1485 3264NOTE: this function is experimental and may change or be
3265removed without notice.
3266
3267 U8* utf8_to_bytes(U8 *s, STRLEN *len)
497711e7 3268
3269=for hackers
3270Found in file utf8.c
3271
b6b716fe 3272=item utf8_to_uv
3273
3274Returns the character value of the first character in the string C<s>
dcad2880 3275which is assumed to be in UTF8 encoding and no longer than C<curlen>;
1aa99e6b 3276C<retlen> will be set to the length, in bytes, of that character.
b6b716fe 3277
dcad2880 3278If C<s> does not point to a well-formed UTF8 character, the behaviour
e9e021e6 3279is dependent on the value of C<flags>: if it contains UTF8_CHECK_ONLY,
3280it is assumed that the caller will raise a warning, and this function
28d3d195 3281will silently just set C<retlen> to C<-1> and return zero. If the
3282C<flags> does not contain UTF8_CHECK_ONLY, warnings about
3283malformations will be given, C<retlen> will be set to the expected
3284length of the UTF-8 character in bytes, and zero will be returned.
3285
3286The C<flags> can also contain various flags to allow deviations from
3287the strict UTF-8 encoding (see F<utf8.h>).
444155da 3288
eebe1485 3289 UV utf8_to_uv(U8 *s, STRLEN curlen, STRLEN* retlen, U32 flags)
444155da 3290
3291=for hackers
3292Found in file utf8.c
3293
dcad2880 3294=item utf8_to_uv_simple
444155da 3295
3296Returns the character value of the first character in the string C<s>
dcad2880 3297which is assumed to be in UTF8 encoding; C<retlen> will be set to the
1aa99e6b 3298length, in bytes, of that character.
444155da 3299
dcad2880 3300If C<s> does not point to a well-formed UTF8 character, zero is
3301returned and retlen is set, if possible, to -1.
b6b716fe 3302
eebe1485 3303 UV utf8_to_uv_simple(U8 *s, STRLEN* retlen)
3304
3305=for hackers
3306Found in file utf8.c
3307
3308=item uv_to_utf8
3309
3310Adds the UTF8 representation of the Unicode codepoint C<uv> to the end
3311of the string C<d>; C<d> should be have at least C<UTF8_MAXLEN+1> free
3312bytes available. The return value is the pointer to the byte after the
3313end of the new character. In other words,
3314
3315 d = uv_to_utf8(d, uv);
3316
3317is the recommended Unicode-aware way of saying
3318
3319 *(d++) = uv;
3320
3321 U8* uv_to_utf8(U8 *d, UV uv)
b6b716fe 3322
3323=for hackers
3324Found in file utf8.c
3325
954c1994 3326=item warn
3327
3328This is the XSUB-writer's interface to Perl's C<warn> function. Use this
3329function the same way you use the C C<printf> function. See
3330C<croak>.
3331
3332 void warn(const char* pat, ...)
3333
497711e7 3334=for hackers
3335Found in file util.c
3336
954c1994 3337=item XPUSHi
3338
3339Push an integer onto the stack, extending the stack if necessary. Handles
3340'set' magic. See C<PUSHi>.
3341
3342 void XPUSHi(IV iv)
3343
497711e7 3344=for hackers
3345Found in file pp.h
3346
954c1994 3347=item XPUSHn
3348
3349Push a double onto the stack, extending the stack if necessary. Handles
3350'set' magic. See C<PUSHn>.
3351
3352 void XPUSHn(NV nv)
3353
497711e7 3354=for hackers
3355Found in file pp.h
3356
954c1994 3357=item XPUSHp
3358
3359Push a string onto the stack, extending the stack if necessary. The C<len>
3360indicates the length of the string. Handles 'set' magic. See
3361C<PUSHp>.
3362
3363 void XPUSHp(char* str, STRLEN len)
3364
497711e7 3365=for hackers
3366Found in file pp.h
3367
954c1994 3368=item XPUSHs
3369
3370Push an SV onto the stack, extending the stack if necessary. Does not
3371handle 'set' magic. See C<PUSHs>.
3372
3373 void XPUSHs(SV* sv)
3374
497711e7 3375=for hackers
3376Found in file pp.h
3377
954c1994 3378=item XPUSHu
3379
1c846c1f 3380Push an unsigned integer onto the stack, extending the stack if necessary.
954c1994 3381See C<PUSHu>.
3382
3383 void XPUSHu(UV uv)
3384
497711e7 3385=for hackers
3386Found in file pp.h
3387
954c1994 3388=item XS
3389
3390Macro to declare an XSUB and its C parameter list. This is handled by
3391C<xsubpp>.
3392
497711e7 3393=for hackers
3394Found in file XSUB.h
3395
954c1994 3396=item XSRETURN
3397
3398Return from XSUB, indicating number of items on the stack. This is usually
3399handled by C<xsubpp>.
3400
3401 void XSRETURN(int nitems)
3402
497711e7 3403=for hackers
3404Found in file XSUB.h
3405
954c1994 3406=item XSRETURN_EMPTY
3407
3408Return an empty list from an XSUB immediately.
3409
3410 XSRETURN_EMPTY;
3411
497711e7 3412=for hackers
3413Found in file XSUB.h
3414
954c1994 3415=item XSRETURN_IV
3416
3417Return an integer from an XSUB immediately. Uses C<XST_mIV>.
3418
3419 void XSRETURN_IV(IV iv)
3420
497711e7 3421=for hackers
3422Found in file XSUB.h
3423
954c1994 3424=item XSRETURN_NO
3425
3426Return C<&PL_sv_no> from an XSUB immediately. Uses C<XST_mNO>.
3427
3428 XSRETURN_NO;
3429
497711e7 3430=for hackers
3431Found in file XSUB.h
3432
954c1994 3433=item XSRETURN_NV
3434
3435Return an double from an XSUB immediately. Uses C<XST_mNV>.
3436
3437 void XSRETURN_NV(NV nv)
3438
497711e7 3439=for hackers
3440Found in file XSUB.h
3441
954c1994 3442=item XSRETURN_PV
3443
3444Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>.
3445
3446 void XSRETURN_PV(char* str)
3447
497711e7 3448=for hackers
3449Found in file XSUB.h
3450
954c1994 3451=item XSRETURN_UNDEF
3452
3453Return C<&PL_sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>.
3454
3455 XSRETURN_UNDEF;
3456
497711e7 3457=for hackers
3458Found in file XSUB.h
3459
954c1994 3460=item XSRETURN_YES
3461
3462Return C<&PL_sv_yes> from an XSUB immediately. Uses C<XST_mYES>.
3463
3464 XSRETURN_YES;
3465
497711e7 3466=for hackers
3467Found in file XSUB.h
3468
954c1994 3469=item XST_mIV
3470
3471Place an integer into the specified position C<pos> on the stack. The
3472value is stored in a new mortal SV.
3473
3474 void XST_mIV(int pos, IV iv)
3475
497711e7 3476=for hackers
3477Found in file XSUB.h
3478
954c1994 3479=item XST_mNO
3480
3481Place C<&PL_sv_no> into the specified position C<pos> on the
3482stack.
3483
3484 void XST_mNO(int pos)
3485
497711e7 3486=for hackers
3487Found in file XSUB.h
3488
954c1994 3489=item XST_mNV
3490
3491Place a double into the specified position C<pos> on the stack. The value
3492is stored in a new mortal SV.
3493
3494 void XST_mNV(int pos, NV nv)
3495
497711e7 3496=for hackers
3497Found in file XSUB.h
3498
954c1994 3499=item XST_mPV
3500
3501Place a copy of a string into the specified position C<pos> on the stack.
3502The value is stored in a new mortal SV.
3503
3504 void XST_mPV(int pos, char* str)
3505
497711e7 3506=for hackers
3507Found in file XSUB.h
3508
954c1994 3509=item XST_mUNDEF
3510
3511Place C<&PL_sv_undef> into the specified position C<pos> on the
3512stack.
3513
3514 void XST_mUNDEF(int pos)
3515
497711e7 3516=for hackers
3517Found in file XSUB.h
3518
954c1994 3519=item XST_mYES
3520
3521Place C<&PL_sv_yes> into the specified position C<pos> on the
3522stack.
3523
3524 void XST_mYES(int pos)
3525
497711e7 3526=for hackers
3527Found in file XSUB.h
3528
954c1994 3529=item XS_VERSION
3530
3531The version identifier for an XS module. This is usually
3532handled automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>.
3533
497711e7 3534=for hackers
3535Found in file XSUB.h
3536
954c1994 3537=item XS_VERSION_BOOTCHECK
3538
3539Macro to verify that a PM module's $VERSION variable matches the XS
3540module's C<XS_VERSION> variable. This is usually handled automatically by
3541C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">.
3542
3543 XS_VERSION_BOOTCHECK;
3544
497711e7 3545=for hackers
3546Found in file XSUB.h
3547
954c1994 3548=item Zero
3549
3550The XSUB-writer's interface to the C C<memzero> function. The C<dest> is the
3551destination, C<nitems> is the number of items, and C<type> is the type.
3552
3553 void Zero(void* dest, int nitems, type)
3554
497711e7 3555=for hackers
3556Found in file handy.h
3557
954c1994 3558=back
3559
3560=head1 AUTHORS
3561
3562Until May 1997, this document was maintained by Jeff Okamoto
3563<okamoto@corp.hp.com>. It is now maintained as part of Perl itself.
3564
3565With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
3566Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
3567Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
3568Stephen McCamant, and Gurusamy Sarathy.
3569
3570API Listing originally by Dean Roehrich <roehrich@cray.com>.
3571
3572Updated to be autogenerated from comments in the source by Benjamin Stuhl.
3573
3574=head1 SEE ALSO
3575
3576perlguts(1), perlxs(1), perlxstut(1), perlintern(1)
3577