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