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