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