effbda443e3e8840f84d67bd63e7ffb871e1d245
[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 Returns the type of the SV.  See C<svtype>.
2278
2279         svtype  SvTYPE(SV* sv)
2280
2281 =for hackers
2282 Found in file sv.h
2283
2284 =item svtype
2285
2286 An enum of flags for Perl types.  These are found in the file B<sv.h> 
2287 in the C<svtype> enum.  Test these flags with the C<SvTYPE> macro.
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_cmp
2482
2483 Compares the strings in two SVs.  Returns -1, 0, or 1 indicating whether the
2484 string in C<sv1> is less than, equal to, or greater than the string in
2485 C<sv2>.
2486
2487         I32     sv_cmp(SV* sv1, SV* sv2)
2488
2489 =for hackers
2490 Found in file sv.c
2491
2492 =item sv_dec
2493
2494 Auto-decrement of the value in the SV.
2495
2496         void    sv_dec(SV* sv)
2497
2498 =for hackers
2499 Found in file sv.c
2500
2501 =item sv_derived_from
2502
2503 Returns a boolean indicating whether the SV is derived from the specified
2504 class.  This is the function that implements C<UNIVERSAL::isa>.  It works
2505 for class names as well as for objects.
2506
2507         bool    sv_derived_from(SV* sv, const char* name)
2508
2509 =for hackers
2510 Found in file universal.c
2511
2512 =item sv_eq
2513
2514 Returns a boolean indicating whether the strings in the two SVs are
2515 identical.
2516
2517         I32     sv_eq(SV* sv1, SV* sv2)
2518
2519 =for hackers
2520 Found in file sv.c
2521
2522 =item sv_grow
2523
2524 Expands the character buffer in the SV.  This will use C<sv_unref> and will
2525 upgrade the SV to C<SVt_PV>.  Returns a pointer to the character buffer.
2526 Use C<SvGROW>.
2527
2528         char*   sv_grow(SV* sv, STRLEN newlen)
2529
2530 =for hackers
2531 Found in file sv.c
2532
2533 =item sv_inc
2534
2535 Auto-increment of the value in the SV.
2536
2537         void    sv_inc(SV* sv)
2538
2539 =for hackers
2540 Found in file sv.c
2541
2542 =item sv_insert
2543
2544 Inserts a string at the specified offset/length within the SV. Similar to
2545 the Perl substr() function.
2546
2547         void    sv_insert(SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen)
2548
2549 =for hackers
2550 Found in file sv.c
2551
2552 =item sv_isa
2553
2554 Returns a boolean indicating whether the SV is blessed into the specified
2555 class.  This does not check for subtypes; use C<sv_derived_from> to verify
2556 an inheritance relationship.
2557
2558         int     sv_isa(SV* sv, const char* name)
2559
2560 =for hackers
2561 Found in file sv.c
2562
2563 =item sv_isobject
2564
2565 Returns a boolean indicating whether the SV is an RV pointing to a blessed
2566 object.  If the SV is not an RV, or if the object is not blessed, then this
2567 will return false.
2568
2569         int     sv_isobject(SV* sv)
2570
2571 =for hackers
2572 Found in file sv.c
2573
2574 =item sv_len
2575
2576 Returns the length of the string in the SV.  See also C<SvCUR>.
2577
2578         STRLEN  sv_len(SV* sv)
2579
2580 =for hackers
2581 Found in file sv.c
2582
2583 =item sv_magic
2584
2585 Adds magic to an SV.
2586
2587         void    sv_magic(SV* sv, SV* obj, int how, const char* name, I32 namlen)
2588
2589 =for hackers
2590 Found in file sv.c
2591
2592 =item sv_mortalcopy
2593
2594 Creates a new SV which is a copy of the original SV.  The new SV is marked
2595 as mortal.
2596
2597         SV*     sv_mortalcopy(SV* oldsv)
2598
2599 =for hackers
2600 Found in file sv.c
2601
2602 =item sv_newmortal
2603
2604 Creates a new SV which is mortal.  The reference count of the SV is set to 1.
2605
2606         SV*     sv_newmortal()
2607
2608 =for hackers
2609 Found in file sv.c
2610
2611 =item sv_setiv
2612
2613 Copies an integer into the given SV.  Does not handle 'set' magic.  See
2614 C<sv_setiv_mg>.
2615
2616         void    sv_setiv(SV* sv, IV num)
2617
2618 =for hackers
2619 Found in file sv.c
2620
2621 =item sv_setiv_mg
2622
2623 Like C<sv_setiv>, but also handles 'set' magic.
2624
2625         void    sv_setiv_mg(SV *sv, IV i)
2626
2627 =for hackers
2628 Found in file sv.c
2629
2630 =item sv_setnv
2631
2632 Copies a double into the given SV.  Does not handle 'set' magic.  See
2633 C<sv_setnv_mg>.
2634
2635         void    sv_setnv(SV* sv, NV num)
2636
2637 =for hackers
2638 Found in file sv.c
2639
2640 =item sv_setnv_mg
2641
2642 Like C<sv_setnv>, but also handles 'set' magic.
2643
2644         void    sv_setnv_mg(SV *sv, NV num)
2645
2646 =for hackers
2647 Found in file sv.c
2648
2649 =item sv_setpv
2650
2651 Copies a string into an SV.  The string must be null-terminated.  Does not
2652 handle 'set' magic.  See C<sv_setpv_mg>.
2653
2654         void    sv_setpv(SV* sv, const char* ptr)
2655
2656 =for hackers
2657 Found in file sv.c
2658
2659 =item sv_setpvf
2660
2661 Processes its arguments like C<sprintf> and sets an SV to the formatted
2662 output.  Does not handle 'set' magic.  See C<sv_setpvf_mg>.
2663
2664         void    sv_setpvf(SV* sv, const char* pat, ...)
2665
2666 =for hackers
2667 Found in file sv.c
2668
2669 =item sv_setpvf_mg
2670
2671 Like C<sv_setpvf>, but also handles 'set' magic.
2672
2673         void    sv_setpvf_mg(SV *sv, const char* pat, ...)
2674
2675 =for hackers
2676 Found in file sv.c
2677
2678 =item sv_setpviv
2679
2680 Copies an integer into the given SV, also updating its string value.
2681 Does not handle 'set' magic.  See C<sv_setpviv_mg>.
2682
2683         void    sv_setpviv(SV* sv, IV num)
2684
2685 =for hackers
2686 Found in file sv.c
2687
2688 =item sv_setpviv_mg
2689
2690 Like C<sv_setpviv>, but also handles 'set' magic.
2691
2692         void    sv_setpviv_mg(SV *sv, IV iv)
2693
2694 =for hackers
2695 Found in file sv.c
2696
2697 =item sv_setpvn
2698
2699 Copies a string into an SV.  The C<len> parameter indicates the number of
2700 bytes to be copied.  Does not handle 'set' magic.  See C<sv_setpvn_mg>.
2701
2702         void    sv_setpvn(SV* sv, const char* ptr, STRLEN len)
2703
2704 =for hackers
2705 Found in file sv.c
2706
2707 =item sv_setpvn_mg
2708
2709 Like C<sv_setpvn>, but also handles 'set' magic.
2710
2711         void    sv_setpvn_mg(SV *sv, const char *ptr, STRLEN len)
2712
2713 =for hackers
2714 Found in file sv.c
2715
2716 =item sv_setpv_mg
2717
2718 Like C<sv_setpv>, but also handles 'set' magic.
2719
2720         void    sv_setpv_mg(SV *sv, const char *ptr)
2721
2722 =for hackers
2723 Found in file sv.c
2724
2725 =item sv_setref_iv
2726
2727 Copies an integer into a new SV, optionally blessing the SV.  The C<rv>
2728 argument will be upgraded to an RV.  That RV will be modified to point to
2729 the new SV.  The C<classname> argument indicates the package for the
2730 blessing.  Set C<classname> to C<Nullch> to avoid the blessing.  The new SV
2731 will be returned and will have a reference count of 1.
2732
2733         SV*     sv_setref_iv(SV* rv, const char* classname, IV iv)
2734
2735 =for hackers
2736 Found in file sv.c
2737
2738 =item sv_setref_nv
2739
2740 Copies a double into a new SV, optionally blessing the SV.  The C<rv>
2741 argument will be upgraded to an RV.  That RV will be modified to point to
2742 the new SV.  The C<classname> argument indicates the package for the
2743 blessing.  Set C<classname> to C<Nullch> to avoid the blessing.  The new SV
2744 will be returned and will have a reference count of 1.
2745
2746         SV*     sv_setref_nv(SV* rv, const char* classname, NV nv)
2747
2748 =for hackers
2749 Found in file sv.c
2750
2751 =item sv_setref_pv
2752
2753 Copies a pointer into a new SV, optionally blessing the SV.  The C<rv>
2754 argument will be upgraded to an RV.  That RV will be modified to point to
2755 the new SV.  If the C<pv> argument is NULL then C<PL_sv_undef> will be placed
2756 into the SV.  The C<classname> argument indicates the package for the
2757 blessing.  Set C<classname> to C<Nullch> to avoid the blessing.  The new SV
2758 will be returned and will have a reference count of 1.
2759
2760 Do not use with other Perl types such as HV, AV, SV, CV, because those
2761 objects will become corrupted by the pointer copy process.
2762
2763 Note that C<sv_setref_pvn> copies the string while this copies the pointer.
2764
2765         SV*     sv_setref_pv(SV* rv, const char* classname, void* pv)
2766
2767 =for hackers
2768 Found in file sv.c
2769
2770 =item sv_setref_pvn
2771
2772 Copies a string into a new SV, optionally blessing the SV.  The length of the
2773 string must be specified with C<n>.  The C<rv> argument will be upgraded to
2774 an RV.  That RV will be modified to point to the new SV.  The C<classname>
2775 argument indicates the package for the blessing.  Set C<classname> to
2776 C<Nullch> to avoid the blessing.  The new SV will be returned and will have
2777 a reference count of 1.
2778
2779 Note that C<sv_setref_pv> copies the pointer while this copies the string.
2780
2781         SV*     sv_setref_pvn(SV* rv, const char* classname, char* pv, STRLEN n)
2782
2783 =for hackers
2784 Found in file sv.c
2785
2786 =item sv_setsv
2787
2788 Copies the contents of the source SV C<ssv> into the destination SV C<dsv>.
2789 The source SV may be destroyed if it is mortal.  Does not handle 'set'
2790 magic.  See the macro forms C<SvSetSV>, C<SvSetSV_nosteal> and
2791 C<sv_setsv_mg>.
2792
2793         void    sv_setsv(SV* dsv, SV* ssv)
2794
2795 =for hackers
2796 Found in file sv.c
2797
2798 =item sv_setsv_mg
2799
2800 Like C<sv_setsv>, but also handles 'set' magic.
2801
2802         void    sv_setsv_mg(SV *dstr, SV *sstr)
2803
2804 =for hackers
2805 Found in file sv.c
2806
2807 =item sv_setuv
2808
2809 Copies an unsigned integer into the given SV.  Does not handle 'set' magic.
2810 See C<sv_setuv_mg>.
2811
2812         void    sv_setuv(SV* sv, UV num)
2813
2814 =for hackers
2815 Found in file sv.c
2816
2817 =item sv_setuv_mg
2818
2819 Like C<sv_setuv>, but also handles 'set' magic.
2820
2821         void    sv_setuv_mg(SV *sv, UV u)
2822
2823 =for hackers
2824 Found in file sv.c
2825
2826 =item sv_unref
2827
2828 Unsets the RV status of the SV, and decrements the reference count of
2829 whatever was being referenced by the RV.  This can almost be thought of
2830 as a reversal of C<newSVrv>.  See C<SvROK_off>.
2831
2832         void    sv_unref(SV* sv)
2833
2834 =for hackers
2835 Found in file sv.c
2836
2837 =item sv_upgrade
2838
2839 Upgrade an SV to a more complex form.  Use C<SvUPGRADE>.  See
2840 C<svtype>.
2841
2842         bool    sv_upgrade(SV* sv, U32 mt)
2843
2844 =for hackers
2845 Found in file sv.c
2846
2847 =item sv_usepvn
2848
2849 Tells an SV to use C<ptr> to find its string value.  Normally the string is
2850 stored inside the SV but sv_usepvn allows the SV to use an outside string. 
2851 The C<ptr> should point to memory that was allocated by C<malloc>.  The
2852 string length, C<len>, must be supplied.  This function will realloc the
2853 memory pointed to by C<ptr>, so that pointer should not be freed or used by
2854 the programmer after giving it to sv_usepvn.  Does not handle 'set' magic.
2855 See C<sv_usepvn_mg>.
2856
2857         void    sv_usepvn(SV* sv, char* ptr, STRLEN len)
2858
2859 =for hackers
2860 Found in file sv.c
2861
2862 =item sv_usepvn_mg
2863
2864 Like C<sv_usepvn>, but also handles 'set' magic.
2865
2866         void    sv_usepvn_mg(SV *sv, char *ptr, STRLEN len)
2867
2868 =for hackers
2869 Found in file sv.c
2870
2871 =item sv_vcatpvfn
2872
2873 Processes its arguments like C<vsprintf> and appends the formatted output
2874 to an SV.  Uses an array of SVs if the C style variable argument list is
2875 missing (NULL).  When running with taint checks enabled, indicates via
2876 C<maybe_tainted> if results are untrustworthy (often due to the use of
2877 locales).
2878
2879         void    sv_vcatpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
2880
2881 =for hackers
2882 Found in file sv.c
2883
2884 =item sv_vsetpvfn
2885
2886 Works like C<vcatpvfn> but copies the text into the SV instead of
2887 appending it.
2888
2889         void    sv_vsetpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
2890
2891 =for hackers
2892 Found in file sv.c
2893
2894 =item THIS
2895
2896 Variable which is setup by C<xsubpp> to designate the object in a C++ 
2897 XSUB.  This is always the proper type for the C++ object.  See C<CLASS> and 
2898 L<perlxs/"Using XS With C++">.
2899
2900         (whatever)      THIS
2901
2902 =for hackers
2903 Found in file XSUB.h
2904
2905 =item toLOWER
2906
2907 Converts the specified character to lowercase.
2908
2909         char    toLOWER(char ch)
2910
2911 =for hackers
2912 Found in file handy.h
2913
2914 =item toUPPER
2915
2916 Converts the specified character to uppercase.
2917
2918         char    toUPPER(char ch)
2919
2920 =for hackers
2921 Found in file handy.h
2922
2923 =item U8 *s
2924
2925 Returns true if first C<len> bytes of the given string form valid a UTF8
2926 string, false otherwise.
2927
2928         bool_utf8_string        U8 *s(STRLEN len)
2929
2930 =for hackers
2931 Found in file utf8.c
2932
2933 =item utf8_to_bytes
2934
2935 Converts a string C<s> of length C<len> from UTF8 into ASCII encoding.
2936 Unlike C<bytes_to_utf8>, this over-writes the original string.
2937 Returns zero on failure after converting as much as possible.
2938
2939         U8 *    utf8_to_bytes(U8 *s, STRLEN len)
2940
2941 =for hackers
2942 Found in file utf8.c
2943
2944 =item warn
2945
2946 This is the XSUB-writer's interface to Perl's C<warn> function.  Use this
2947 function the same way you use the C C<printf> function.  See
2948 C<croak>.
2949
2950         void    warn(const char* pat, ...)
2951
2952 =for hackers
2953 Found in file util.c
2954
2955 =item XPUSHi
2956
2957 Push an integer onto the stack, extending the stack if necessary.  Handles
2958 'set' magic. See C<PUSHi>.
2959
2960         void    XPUSHi(IV iv)
2961
2962 =for hackers
2963 Found in file pp.h
2964
2965 =item XPUSHn
2966
2967 Push a double onto the stack, extending the stack if necessary.  Handles
2968 'set' magic.  See C<PUSHn>.
2969
2970         void    XPUSHn(NV nv)
2971
2972 =for hackers
2973 Found in file pp.h
2974
2975 =item XPUSHp
2976
2977 Push a string onto the stack, extending the stack if necessary.  The C<len>
2978 indicates the length of the string.  Handles 'set' magic.  See
2979 C<PUSHp>.
2980
2981         void    XPUSHp(char* str, STRLEN len)
2982
2983 =for hackers
2984 Found in file pp.h
2985
2986 =item XPUSHs
2987
2988 Push an SV onto the stack, extending the stack if necessary.  Does not
2989 handle 'set' magic.  See C<PUSHs>.
2990
2991         void    XPUSHs(SV* sv)
2992
2993 =for hackers
2994 Found in file pp.h
2995
2996 =item XPUSHu
2997
2998 Push an unsigned integer onto the stack, extending the stack if necessary. 
2999 See C<PUSHu>.
3000
3001         void    XPUSHu(UV uv)
3002
3003 =for hackers
3004 Found in file pp.h
3005
3006 =item XS
3007
3008 Macro to declare an XSUB and its C parameter list.  This is handled by
3009 C<xsubpp>.
3010
3011 =for hackers
3012 Found in file XSUB.h
3013
3014 =item XSRETURN
3015
3016 Return from XSUB, indicating number of items on the stack.  This is usually
3017 handled by C<xsubpp>.
3018
3019         void    XSRETURN(int nitems)
3020
3021 =for hackers
3022 Found in file XSUB.h
3023
3024 =item XSRETURN_EMPTY
3025
3026 Return an empty list from an XSUB immediately.
3027
3028                 XSRETURN_EMPTY;
3029
3030 =for hackers
3031 Found in file XSUB.h
3032
3033 =item XSRETURN_IV
3034
3035 Return an integer from an XSUB immediately.  Uses C<XST_mIV>.
3036
3037         void    XSRETURN_IV(IV iv)
3038
3039 =for hackers
3040 Found in file XSUB.h
3041
3042 =item XSRETURN_NO
3043
3044 Return C<&PL_sv_no> from an XSUB immediately.  Uses C<XST_mNO>.
3045
3046                 XSRETURN_NO;
3047
3048 =for hackers
3049 Found in file XSUB.h
3050
3051 =item XSRETURN_NV
3052
3053 Return an double from an XSUB immediately.  Uses C<XST_mNV>.
3054
3055         void    XSRETURN_NV(NV nv)
3056
3057 =for hackers
3058 Found in file XSUB.h
3059
3060 =item XSRETURN_PV
3061
3062 Return a copy of a string from an XSUB immediately.  Uses C<XST_mPV>.
3063
3064         void    XSRETURN_PV(char* str)
3065
3066 =for hackers
3067 Found in file XSUB.h
3068
3069 =item XSRETURN_UNDEF
3070
3071 Return C<&PL_sv_undef> from an XSUB immediately.  Uses C<XST_mUNDEF>.
3072
3073                 XSRETURN_UNDEF;
3074
3075 =for hackers
3076 Found in file XSUB.h
3077
3078 =item XSRETURN_YES
3079
3080 Return C<&PL_sv_yes> from an XSUB immediately.  Uses C<XST_mYES>.
3081
3082                 XSRETURN_YES;
3083
3084 =for hackers
3085 Found in file XSUB.h
3086
3087 =item XST_mIV
3088
3089 Place an integer into the specified position C<pos> on the stack.  The
3090 value is stored in a new mortal SV.
3091
3092         void    XST_mIV(int pos, IV iv)
3093
3094 =for hackers
3095 Found in file XSUB.h
3096
3097 =item XST_mNO
3098
3099 Place C<&PL_sv_no> into the specified position C<pos> on the
3100 stack.
3101
3102         void    XST_mNO(int pos)
3103
3104 =for hackers
3105 Found in file XSUB.h
3106
3107 =item XST_mNV
3108
3109 Place a double into the specified position C<pos> on the stack.  The value
3110 is stored in a new mortal SV.
3111
3112         void    XST_mNV(int pos, NV nv)
3113
3114 =for hackers
3115 Found in file XSUB.h
3116
3117 =item XST_mPV
3118
3119 Place a copy of a string into the specified position C<pos> on the stack. 
3120 The value is stored in a new mortal SV.
3121
3122         void    XST_mPV(int pos, char* str)
3123
3124 =for hackers
3125 Found in file XSUB.h
3126
3127 =item XST_mUNDEF
3128
3129 Place C<&PL_sv_undef> into the specified position C<pos> on the
3130 stack.
3131
3132         void    XST_mUNDEF(int pos)
3133
3134 =for hackers
3135 Found in file XSUB.h
3136
3137 =item XST_mYES
3138
3139 Place C<&PL_sv_yes> into the specified position C<pos> on the
3140 stack.
3141
3142         void    XST_mYES(int pos)
3143
3144 =for hackers
3145 Found in file XSUB.h
3146
3147 =item XS_VERSION
3148
3149 The version identifier for an XS module.  This is usually
3150 handled automatically by C<ExtUtils::MakeMaker>.  See C<XS_VERSION_BOOTCHECK>.
3151
3152 =for hackers
3153 Found in file XSUB.h
3154
3155 =item XS_VERSION_BOOTCHECK
3156
3157 Macro to verify that a PM module's $VERSION variable matches the XS
3158 module's C<XS_VERSION> variable.  This is usually handled automatically by
3159 C<xsubpp>.  See L<perlxs/"The VERSIONCHECK: Keyword">.
3160
3161                 XS_VERSION_BOOTCHECK;
3162
3163 =for hackers
3164 Found in file XSUB.h
3165
3166 =item Zero
3167
3168 The XSUB-writer's interface to the C C<memzero> function.  The C<dest> is the
3169 destination, C<nitems> is the number of items, and C<type> is the type.
3170
3171         void    Zero(void* dest, int nitems, type)
3172
3173 =for hackers
3174 Found in file handy.h
3175
3176 =back
3177
3178 =head1 AUTHORS
3179
3180 Until May 1997, this document was maintained by Jeff Okamoto
3181 <okamoto@corp.hp.com>.  It is now maintained as part of Perl itself.
3182
3183 With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
3184 Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
3185 Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
3186 Stephen McCamant, and Gurusamy Sarathy.
3187
3188 API Listing originally by Dean Roehrich <roehrich@cray.com>.
3189
3190 Updated to be autogenerated from comments in the source by Benjamin Stuhl.
3191
3192 =head1 SEE ALSO
3193
3194 perlguts(1), perlxs(1), perlxstut(1), perlintern(1)
3195