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