This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldoc -f stat (perlfunc.pod)
[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
497711e7
GS
3494=for hackers
3495Found in file sv.c
3496
8d6d96c1
HS
3497=item sv_catpvn_flags
3498
3499Concatenates the string onto the end of the string which is in the SV. The
3500C<len> indicates number of bytes to copy. If the SV has the UTF8
3501status set, then the bytes appended should be valid UTF8.
3502If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<dsv> if
3503appropriate, else not. C<sv_catpvn> and C<sv_catpvn_nomg> are implemented
3504in terms of this function.
3505
3506 void sv_catpvn_flags(SV* sv, const char* ptr, STRLEN len, I32 flags)
3507
3508=for hackers
3509Found in file sv.c
3510
954c1994
GS
3511=item sv_catpvn_mg
3512
3513Like C<sv_catpvn>, but also handles 'set' magic.
3514
3515 void sv_catpvn_mg(SV *sv, const char *ptr, STRLEN len)
3516
497711e7
GS
3517=for hackers
3518Found in file sv.c
3519
954c1994
GS
3520=item sv_catpv_mg
3521
3522Like C<sv_catpv>, but also handles 'set' magic.
3523
3524 void sv_catpv_mg(SV *sv, const char *ptr)
3525
497711e7
GS
3526=for hackers
3527Found in file sv.c
3528
954c1994
GS
3529=item sv_catsv
3530
1aa99e6b
IH
3531Concatenates the string from SV C<ssv> onto the end of the string in
3532SV C<dsv>. Modifies C<dsv> but not C<ssv>. Handles 'get' magic, but
3533not 'set' magic. See C<sv_catsv_mg>.
954c1994
GS
3534
3535 void sv_catsv(SV* dsv, SV* ssv)
3536
497711e7
GS
3537=for hackers
3538Found in file sv.c
3539
8d6d96c1
HS
3540=item sv_catsv_flags
3541
3542Concatenates the string from SV C<ssv> onto the end of the string in
3543SV C<dsv>. Modifies C<dsv> but not C<ssv>. If C<flags> has C<SV_GMAGIC>
3544bit set, will C<mg_get> on the SVs if appropriate, else not. C<sv_catsv>
3545and C<sv_catsv_nomg> are implemented in terms of this function.
3546
3547 void sv_catsv_flags(SV* dsv, SV* ssv, I32 flags)
3548
3549=for hackers
3550Found in file sv.c
3551
954c1994
GS
3552=item sv_catsv_mg
3553
3554Like C<sv_catsv>, but also handles 'set' magic.
3555
3556 void sv_catsv_mg(SV *dstr, SV *sstr)
3557
497711e7
GS
3558=for hackers
3559Found in file sv.c
3560
954c1994
GS
3561=item sv_chop
3562
1c846c1f 3563Efficient removal of characters from the beginning of the string buffer.
954c1994
GS
3564SvPOK(sv) must be true and the C<ptr> must be a pointer to somewhere inside
3565the string buffer. The C<ptr> becomes the first character of the adjusted
645c22ef 3566string. Uses the "OOK hack".
954c1994
GS
3567
3568 void sv_chop(SV* sv, char* ptr)
3569
497711e7
GS
3570=for hackers
3571Found in file sv.c
3572
c461cf8f
JH
3573=item sv_clear
3574
645c22ef
DM
3575Clear an SV: call any destructors, free up any memory used by the body,
3576and free the body itself. The SV's head is I<not> freed, although
3577its type is set to all 1's so that it won't inadvertently be assumed
3578to be live during global destruction etc.
3579This function should only be called when REFCNT is zero. Most of the time
3580you'll want to call C<sv_free()> (or its macro wrapper C<SvREFCNT_dec>)
3581instead.
c461cf8f
JH
3582
3583 void sv_clear(SV* sv)
3584
3585=for hackers
3586Found in file sv.c
3587
954c1994
GS
3588=item sv_cmp
3589
3590Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the
3591string in C<sv1> is less than, equal to, or greater than the string in
645c22ef
DM
3592C<sv2>. Is UTF-8 and 'use bytes' aware, handles get magic, and will
3593coerce its args to strings if necessary. See also C<sv_cmp_locale>.
954c1994
GS
3594
3595 I32 sv_cmp(SV* sv1, SV* sv2)
3596
497711e7
GS
3597=for hackers
3598Found in file sv.c
3599
c461cf8f
JH
3600=item sv_cmp_locale
3601
645c22ef
DM
3602Compares the strings in two SVs in a locale-aware manner. Is UTF-8 and
3603'use bytes' aware, handles get magic, and will coerce its args to strings
3604if necessary. See also C<sv_cmp_locale>. See also C<sv_cmp>.
c461cf8f
JH
3605
3606 I32 sv_cmp_locale(SV* sv1, SV* sv2)
3607
3608=for hackers
3609Found in file sv.c
3610
645c22ef
DM
3611=item sv_collxfrm
3612
3613Add Collate Transform magic to an SV if it doesn't already have it.
3614
3615Any scalar variable may carry PERL_MAGIC_collxfrm magic that contains the
3616scalar data of the variable, but transformed to such a format that a normal
3617memory comparison can be used to compare the data according to the locale
3618settings.
3619
3620 char* sv_collxfrm(SV* sv, STRLEN* nxp)
3621
3622=for hackers
3623Found in file sv.c
3624
6050d10e
JP
3625=item sv_copypv
3626
3627Copies a stringified representation of the source SV into the
3628destination SV. Automatically performs any necessary mg_get and
9ede5bc8 3629coercion of numeric values into strings. Guaranteed to preserve
6050d10e 3630UTF-8 flag even from overloaded objects. Similar in nature to
9ede5bc8
DM
3631sv_2pv[_flags] but operates directly on an SV instead of just the
3632string. Mostly uses sv_2pv_flags to do its work, except when that
6050d10e
JP
3633would lose the UTF-8'ness of the PV.
3634
3635 void sv_copypv(SV* dsv, SV* ssv)
3636
3637=for hackers
3638Found in file sv.c
3639
954c1994
GS
3640=item sv_dec
3641
645c22ef
DM
3642Auto-decrement of the value in the SV, doing string to numeric conversion
3643if necessary. Handles 'get' magic.
954c1994
GS
3644
3645 void sv_dec(SV* sv)
3646
497711e7
GS
3647=for hackers
3648Found in file sv.c
3649
954c1994
GS
3650=item sv_derived_from
3651
3652Returns a boolean indicating whether the SV is derived from the specified
3653class. This is the function that implements C<UNIVERSAL::isa>. It works
3654for class names as well as for objects.
3655
3656 bool sv_derived_from(SV* sv, const char* name)
3657
497711e7
GS
3658=for hackers
3659Found in file universal.c
3660
954c1994
GS
3661=item sv_eq
3662
3663Returns a boolean indicating whether the strings in the two SVs are
645c22ef
DM
3664identical. Is UTF-8 and 'use bytes' aware, handles get magic, and will
3665coerce its args to strings if necessary.
954c1994
GS
3666
3667 I32 sv_eq(SV* sv1, SV* sv2)
3668
497711e7
GS
3669=for hackers
3670Found in file sv.c
3671
645c22ef
DM
3672=item sv_force_normal
3673
3674Undo various types of fakery on an SV: if the PV is a shared string, make
3675a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
3676an xpvmg. See also C<sv_force_normal_flags>.
3677
3678 void sv_force_normal(SV *sv)
3679
3680=for hackers
3681Found in file sv.c
3682
3683=item sv_force_normal_flags
3684
3685Undo various types of fakery on an SV: if the PV is a shared string, make
3686a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
765f542d
NC
3687an xpvmg; if we're a copy-on-write scalar, this is the on-write time when
3688we do the copy, and is also used locally. If C<SV_COW_DROP_PV> is set
3689then a copy-on-write scalar drops its PV buffer (if any) and becomes
3690SvPOK_off rather than making a copy. (Used where this scalar is about to be
3691set to some other value. In addtion, the C<flags> parameter gets passed to
3692C<sv_unref_flags()> when unrefing. C<sv_force_normal> calls this function
3693with flags set to 0.
645c22ef
DM
3694
3695 void sv_force_normal_flags(SV *sv, U32 flags)
3696
3697=for hackers
3698Found in file sv.c
3699
c461cf8f
JH
3700=item sv_free
3701
645c22ef
DM
3702Decrement an SV's reference count, and if it drops to zero, call
3703C<sv_clear> to invoke destructors and free up any memory used by
3704the body; finally, deallocate the SV's head itself.
3705Normally called via a wrapper macro C<SvREFCNT_dec>.
c461cf8f
JH
3706
3707 void sv_free(SV* sv)
3708
3709=for hackers
3710Found in file sv.c
3711
3712=item sv_gets
3713
3714Get a line from the filehandle and store it into the SV, optionally
3715appending to the currently-stored string.
3716
3717 char* sv_gets(SV* sv, PerlIO* fp, I32 append)
3718
3719=for hackers
3720Found in file sv.c
3721
954c1994
GS
3722=item sv_grow
3723
645c22ef
DM
3724Expands the character buffer in the SV. If necessary, uses C<sv_unref> and
3725upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer.
3726Use the C<SvGROW> wrapper instead.
954c1994
GS
3727
3728 char* sv_grow(SV* sv, STRLEN newlen)
3729
497711e7
GS
3730=for hackers
3731Found in file sv.c
3732
954c1994
GS
3733=item sv_inc
3734
645c22ef
DM
3735Auto-increment of the value in the SV, doing string to numeric conversion
3736if necessary. Handles 'get' magic.
954c1994
GS
3737
3738 void sv_inc(SV* sv)
3739
497711e7
GS
3740=for hackers
3741Found in file sv.c
3742
954c1994
GS
3743=item sv_insert
3744
3745Inserts a string at the specified offset/length within the SV. Similar to
3746the Perl substr() function.
3747
3748 void sv_insert(SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen)
3749
497711e7
GS
3750=for hackers
3751Found in file sv.c
3752
954c1994
GS
3753=item sv_isa
3754
3755Returns a boolean indicating whether the SV is blessed into the specified
3756class. This does not check for subtypes; use C<sv_derived_from> to verify
3757an inheritance relationship.
3758
3759 int sv_isa(SV* sv, const char* name)
3760
497711e7
GS
3761=for hackers
3762Found in file sv.c
3763
954c1994
GS
3764=item sv_isobject
3765
3766Returns a boolean indicating whether the SV is an RV pointing to a blessed
3767object. If the SV is not an RV, or if the object is not blessed, then this
3768will return false.
3769
3770 int sv_isobject(SV* sv)
3771
497711e7
GS
3772=for hackers
3773Found in file sv.c
3774
645c22ef
DM
3775=item sv_iv
3776
3777A private implementation of the C<SvIVx> macro for compilers which can't
3778cope with complex macro expressions. Always use the macro instead.
3779
3780 IV sv_iv(SV* sv)
3781
3782=for hackers
3783Found in file sv.c
3784
954c1994
GS
3785=item sv_len
3786
645c22ef
DM
3787Returns the length of the string in the SV. Handles magic and type
3788coercion. See also C<SvCUR>, which gives raw access to the xpv_cur slot.
954c1994
GS
3789
3790 STRLEN sv_len(SV* sv)
3791
497711e7
GS
3792=for hackers
3793Found in file sv.c
3794
c461cf8f
JH
3795=item sv_len_utf8
3796
3797Returns the number of characters in the string in an SV, counting wide
645c22ef 3798UTF8 bytes as a single character. Handles magic and type coercion.
c461cf8f
JH
3799
3800 STRLEN sv_len_utf8(SV* sv)
3801
3802=for hackers
3803Found in file sv.c
3804
954c1994
GS
3805=item sv_magic
3806
645c22ef
DM
3807Adds magic to an SV. First upgrades C<sv> to type C<SVt_PVMG> if necessary,
3808then adds a new magic item of type C<how> to the head of the magic list.
3809
954c1994
GS
3810 void sv_magic(SV* sv, SV* obj, int how, const char* name, I32 namlen)
3811
497711e7
GS
3812=for hackers
3813Found in file sv.c
3814
a4f1a029
NIS
3815=item sv_magicext
3816
3817Adds magic to an SV, upgrading it if necessary. Applies the
3818supplied vtable and returns pointer to the magic added.
3819
3820Note that sv_magicext will allow things that sv_magic will not.
3821In particular you can add magic to SvREADONLY SVs and and more than
3822one instance of the same 'how'
3823
3824I C<namelen> is greater then zero then a savepvn() I<copy> of C<name> is stored,
3825if C<namelen> is zero then C<name> is stored as-is and - as another special
3826case - if C<(name && namelen == HEf_SVKEY)> then C<name> is assumed to contain
3827an C<SV*> and has its REFCNT incremented
3828
3829(This is now used as a subroutine by sv_magic.)
3830
3831 MAGIC * sv_magicext(SV* sv, SV* obj, int how, MGVTBL *vtbl, const char* name, I32 namlen )
3832
3833=for hackers
3834Found in file sv.c
3835
954c1994
GS
3836=item sv_mortalcopy
3837
645c22ef 3838Creates a new SV which is a copy of the original SV (using C<sv_setsv>).
793edb8a
JH
3839The new SV is marked as mortal. It will be destroyed "soon", either by an
3840explicit call to FREETMPS, or by an implicit call at places such as
3841statement boundaries. See also C<sv_newmortal> and C<sv_2mortal>.
954c1994
GS
3842
3843 SV* sv_mortalcopy(SV* oldsv)
3844
497711e7
GS
3845=for hackers
3846Found in file sv.c
3847
954c1994
GS
3848=item sv_newmortal
3849
645c22ef 3850Creates a new null SV which is mortal. The reference count of the SV is
793edb8a
JH
3851set to 1. It will be destroyed "soon", either by an explicit call to
3852FREETMPS, or by an implicit call at places such as statement boundaries.
3853See also C<sv_mortalcopy> and C<sv_2mortal>.
954c1994
GS
3854
3855 SV* sv_newmortal()
3856
497711e7
GS
3857=for hackers
3858Found in file sv.c
3859
645c22ef
DM
3860=item sv_newref
3861
3862Increment an SV's reference count. Use the C<SvREFCNT_inc()> wrapper
3863instead.
3864
3865 SV* sv_newref(SV* sv)
3866
3867=for hackers
3868Found in file sv.c
3869
a4f1a029
NIS
3870=item sv_nolocking
3871
3872Dummy routine which "locks" an SV when there is no locking module present.
3873Exists to avoid test for a NULL function pointer and because it could potentially warn under
3874some level of strict-ness.
3875
3876 void sv_nolocking(SV *)
3877
3878=for hackers
3879Found in file util.c
3880
3881=item sv_nosharing
3882
3883Dummy routine which "shares" an SV when there is no sharing module present.
3884Exists to avoid test for a NULL function pointer and because it could potentially warn under
3885some level of strict-ness.
3886
3887 void sv_nosharing(SV *)
3888
3889=for hackers
3890Found in file util.c
3891
3892=item sv_nounlocking
3893
3894Dummy routine which "unlocks" an SV when there is no locking module present.
3895Exists to avoid test for a NULL function pointer and because it could potentially warn under
3896some level of strict-ness.
3897
3898 void sv_nounlocking(SV *)
3899
3900=for hackers
3901Found in file util.c
3902
645c22ef
DM
3903=item sv_nv
3904
3905A private implementation of the C<SvNVx> macro for compilers which can't
3906cope with complex macro expressions. Always use the macro instead.
3907
3908 NV sv_nv(SV* sv)
3909
3910=for hackers
3911Found in file sv.c
3912
3913=item sv_pos_b2u
3914
3915Converts the value pointed to by offsetp from a count of bytes from the
3916start of the string, to a count of the equivalent number of UTF8 chars.
3917Handles magic and type coercion.
3918
3919 void sv_pos_b2u(SV* sv, I32* offsetp)
3920
3921=for hackers
3922Found in file sv.c
3923
3924=item sv_pos_u2b
3925
3926Converts the value pointed to by offsetp from a count of UTF8 chars from
3927the start of the string, to a count of the equivalent number of bytes; if
3928lenp is non-zero, it does the same to lenp, but this time starting from
3929the offset, rather than from the start of the string. Handles magic and
3930type coercion.
3931
3932 void sv_pos_u2b(SV* sv, I32* offsetp, I32* lenp)
3933
3934=for hackers
3935Found in file sv.c
3936
451be7b1
DM
3937=item sv_pv
3938
baca2b92 3939Use the C<SvPV_nolen> macro instead
451be7b1
DM
3940
3941 char* sv_pv(SV *sv)
3942
3943=for hackers
3944Found in file sv.c
3945
645c22ef
DM
3946=item sv_pvbyte
3947
baca2b92 3948Use C<SvPVbyte_nolen> instead.
645c22ef
DM
3949
3950 char* sv_pvbyte(SV *sv)
3951
3952=for hackers
3953Found in file sv.c
3954
3955=item sv_pvbyten
3956
3957A private implementation of the C<SvPVbyte> macro for compilers
3958which can't cope with complex macro expressions. Always use the macro
3959instead.
3960
3961 char* sv_pvbyten(SV *sv, STRLEN *len)
3962
3963=for hackers
3964Found in file sv.c
3965
3966=item sv_pvbyten_force
3967
3968A private implementation of the C<SvPVbytex_force> macro for compilers
3969which can't cope with complex macro expressions. Always use the macro
3970instead.
3971
3972 char* sv_pvbyten_force(SV* sv, STRLEN* lp)
3973
3974=for hackers
3975Found in file sv.c
3976
451be7b1
DM
3977=item sv_pvn
3978
3979A private implementation of the C<SvPV> macro for compilers which can't
3980cope with complex macro expressions. Always use the macro instead.
3981
3982 char* sv_pvn(SV *sv, STRLEN *len)
3983
3984=for hackers
3985Found in file sv.c
3986
c461cf8f
JH
3987=item sv_pvn_force
3988
3989Get a sensible string out of the SV somehow.
645c22ef
DM
3990A private implementation of the C<SvPV_force> macro for compilers which
3991can't cope with complex macro expressions. Always use the macro instead.
c461cf8f
JH
3992
3993 char* sv_pvn_force(SV* sv, STRLEN* lp)
3994
3995=for hackers
3996Found in file sv.c
3997
8d6d96c1
HS
3998=item sv_pvn_force_flags
3999
4000Get a sensible string out of the SV somehow.
4001If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<sv> if
4002appropriate, else not. C<sv_pvn_force> and C<sv_pvn_force_nomg> are
4003implemented in terms of this function.
645c22ef
DM
4004You normally want to use the various wrapper macros instead: see
4005C<SvPV_force> and C<SvPV_force_nomg>
8d6d96c1
HS
4006
4007 char* sv_pvn_force_flags(SV* sv, STRLEN* lp, I32 flags)
4008
4009=for hackers
4010Found in file sv.c
4011
645c22ef
DM
4012=item sv_pvutf8
4013
baca2b92 4014Use the C<SvPVutf8_nolen> macro instead
645c22ef
DM
4015
4016 char* sv_pvutf8(SV *sv)
4017
4018=for hackers
4019Found in file sv.c
4020
4021=item sv_pvutf8n
4022
4023A private implementation of the C<SvPVutf8> macro for compilers
4024which can't cope with complex macro expressions. Always use the macro
4025instead.
4026
4027 char* sv_pvutf8n(SV *sv, STRLEN *len)
4028
4029=for hackers
4030Found in file sv.c
4031
c461cf8f
JH
4032=item sv_pvutf8n_force
4033
645c22ef
DM
4034A private implementation of the C<SvPVutf8_force> macro for compilers
4035which can't cope with complex macro expressions. Always use the macro
4036instead.
c461cf8f
JH
4037
4038 char* sv_pvutf8n_force(SV* sv, STRLEN* lp)
4039
4040=for hackers
4041Found in file sv.c
4042
4043=item sv_reftype
4044
4045Returns a string describing what the SV is a reference to.
4046
4047 char* sv_reftype(SV* sv, int ob)
4048
4049=for hackers
4050Found in file sv.c
4051
4052=item sv_replace
4053
4054Make the first argument a copy of the second, then delete the original.
645c22ef
DM
4055The target SV physically takes over ownership of the body of the source SV
4056and inherits its flags; however, the target keeps any magic it owns,
4057and any magic in the source is discarded.
ff276b08 4058Note that this is a rather specialist SV copying operation; most of the
645c22ef 4059time you'll want to use C<sv_setsv> or one of its many macro front-ends.
c461cf8f
JH
4060
4061 void sv_replace(SV* sv, SV* nsv)
4062
4063=for hackers
4064Found in file sv.c
4065
645c22ef
DM
4066=item sv_report_used
4067
4068Dump the contents of all SVs not yet freed. (Debugging aid).
4069
4070 void sv_report_used()
4071
4072=for hackers
4073Found in file sv.c
4074
451be7b1
DM
4075=item sv_reset
4076
4077Underlying implementation for the C<reset> Perl function.
4078Note that the perl-level function is vaguely deprecated.
4079
4080 void sv_reset(char* s, HV* stash)
4081
4082=for hackers
4083Found in file sv.c
4084
c461cf8f
JH
4085=item sv_rvweaken
4086
645c22ef
DM
4087Weaken a reference: set the C<SvWEAKREF> flag on this RV; give the
4088referred-to SV C<PERL_MAGIC_backref> magic if it hasn't already; and
4089push a back-reference to this RV onto the array of backreferences
4090associated with that magic.
c461cf8f
JH
4091
4092 SV* sv_rvweaken(SV *sv)
4093
4094=for hackers
4095Found in file sv.c
4096
954c1994
GS
4097=item sv_setiv
4098
645c22ef
DM
4099Copies an integer into the given SV, upgrading first if necessary.
4100Does not handle 'set' magic. See also C<sv_setiv_mg>.
954c1994
GS
4101
4102 void sv_setiv(SV* sv, IV num)
4103
497711e7
GS
4104=for hackers
4105Found in file sv.c
4106
954c1994
GS
4107=item sv_setiv_mg
4108
4109Like C<sv_setiv>, but also handles 'set' magic.
4110
4111 void sv_setiv_mg(SV *sv, IV i)
4112
497711e7
GS
4113=for hackers
4114Found in file sv.c
4115
954c1994
GS
4116=item sv_setnv
4117
645c22ef
DM
4118Copies a double into the given SV, upgrading first if necessary.
4119Does not handle 'set' magic. See also C<sv_setnv_mg>.
954c1994
GS
4120
4121 void sv_setnv(SV* sv, NV num)
4122
497711e7
GS
4123=for hackers
4124Found in file sv.c
4125
954c1994
GS
4126=item sv_setnv_mg
4127
4128Like C<sv_setnv>, but also handles 'set' magic.
4129
4130 void sv_setnv_mg(SV *sv, NV num)
4131
497711e7
GS
4132=for hackers
4133Found in file sv.c
4134
954c1994
GS
4135=item sv_setpv
4136
4137Copies a string into an SV. The string must be null-terminated. Does not
4138handle 'set' magic. See C<sv_setpv_mg>.
4139
4140 void sv_setpv(SV* sv, const char* ptr)
4141
497711e7
GS
4142=for hackers
4143Found in file sv.c
4144
954c1994
GS
4145=item sv_setpvf
4146
4147Processes its arguments like C<sprintf> and sets an SV to the formatted
4148output. Does not handle 'set' magic. See C<sv_setpvf_mg>.
4149
4150 void sv_setpvf(SV* sv, const char* pat, ...)
4151
497711e7
GS
4152=for hackers
4153Found in file sv.c
4154
954c1994
GS
4155=item sv_setpvf_mg
4156
4157Like C<sv_setpvf>, but also handles 'set' magic.
4158
4159 void sv_setpvf_mg(SV *sv, const char* pat, ...)
4160
497711e7
GS
4161=for hackers
4162Found in file sv.c
4163
954c1994
GS
4164=item sv_setpvn
4165
4166Copies a string into an SV. The C<len> parameter indicates the number of
4167bytes to be copied. Does not handle 'set' magic. See C<sv_setpvn_mg>.
4168
4169 void sv_setpvn(SV* sv, const char* ptr, STRLEN len)
4170
497711e7
GS
4171=for hackers
4172Found in file sv.c
4173
954c1994
GS
4174=item sv_setpvn_mg
4175
4176Like C<sv_setpvn>, but also handles 'set' magic.
4177
4178 void sv_setpvn_mg(SV *sv, const char *ptr, STRLEN len)
4179
497711e7
GS
4180=for hackers
4181Found in file sv.c
4182
954c1994
GS
4183=item sv_setpv_mg
4184
4185Like C<sv_setpv>, but also handles 'set' magic.
4186
4187 void sv_setpv_mg(SV *sv, const char *ptr)
4188
497711e7
GS
4189=for hackers
4190Found in file sv.c
4191
954c1994
GS
4192=item sv_setref_iv
4193
4194Copies an integer into a new SV, optionally blessing the SV. The C<rv>
4195argument will be upgraded to an RV. That RV will be modified to point to
4196the new SV. The C<classname> argument indicates the package for the
4197blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
4198will be returned and will have a reference count of 1.
4199
4200 SV* sv_setref_iv(SV* rv, const char* classname, IV iv)
4201
497711e7
GS
4202=for hackers
4203Found in file sv.c
4204
954c1994
GS
4205=item sv_setref_nv
4206
4207Copies a double into a new SV, optionally blessing the SV. The C<rv>
4208argument will be upgraded to an RV. That RV will be modified to point to
4209the new SV. The C<classname> argument indicates the package for the
4210blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
4211will be returned and will have a reference count of 1.
4212
4213 SV* sv_setref_nv(SV* rv, const char* classname, NV nv)
4214
497711e7
GS
4215=for hackers
4216Found in file sv.c
4217
954c1994
GS
4218=item sv_setref_pv
4219
4220Copies a pointer into a new SV, optionally blessing the SV. The C<rv>
4221argument will be upgraded to an RV. That RV will be modified to point to
4222the new SV. If the C<pv> argument is NULL then C<PL_sv_undef> will be placed
4223into the SV. The C<classname> argument indicates the package for the
4224blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
4225will be returned and will have a reference count of 1.
4226
4227Do not use with other Perl types such as HV, AV, SV, CV, because those
4228objects will become corrupted by the pointer copy process.
4229
4230Note that C<sv_setref_pvn> copies the string while this copies the pointer.
4231
4232 SV* sv_setref_pv(SV* rv, const char* classname, void* pv)
4233
497711e7
GS
4234=for hackers
4235Found in file sv.c
4236
954c1994
GS
4237=item sv_setref_pvn
4238
4239Copies a string into a new SV, optionally blessing the SV. The length of the
4240string must be specified with C<n>. The C<rv> argument will be upgraded to
4241an RV. That RV will be modified to point to the new SV. The C<classname>
4242argument indicates the package for the blessing. Set C<classname> to
4243C<Nullch> to avoid the blessing. The new SV will be returned and will have
4244a reference count of 1.
4245
4246Note that C<sv_setref_pv> copies the pointer while this copies the string.
4247
4248 SV* sv_setref_pvn(SV* rv, const char* classname, char* pv, STRLEN n)
4249
497711e7
GS
4250=for hackers
4251Found in file sv.c
4252
e1c57cef
JH
4253=item sv_setref_uv
4254
4255Copies an unsigned integer into a new SV, optionally blessing the SV. The C<rv>
4256argument will be upgraded to an RV. That RV will be modified to point to
4257the new SV. The C<classname> argument indicates the package for the
4258blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
4259will be returned and will have a reference count of 1.
4260
4261 SV* sv_setref_uv(SV* rv, const char* classname, UV uv)
4262
4263=for hackers
4264Found in file sv.c
4265
954c1994
GS
4266=item sv_setsv
4267
645c22ef
DM
4268Copies the contents of the source SV C<ssv> into the destination SV
4269C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
4270function if the source SV needs to be reused. Does not handle 'set' magic.
4271Loosely speaking, it performs a copy-by-value, obliterating any previous
4272content of the destination.
4273
4274You probably want to use one of the assortment of wrappers, such as
4275C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
4276C<SvSetMagicSV_nosteal>.
4277
954c1994
GS
4278 void sv_setsv(SV* dsv, SV* ssv)
4279
497711e7
GS
4280=for hackers
4281Found in file sv.c
4282
8d6d96c1
HS
4283=item sv_setsv_flags
4284
645c22ef
DM
4285Copies the contents of the source SV C<ssv> into the destination SV
4286C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
4287function if the source SV needs to be reused. Does not handle 'set' magic.
4288Loosely speaking, it performs a copy-by-value, obliterating any previous
4289content of the destination.
4290If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on
4291C<ssv> if appropriate, else not. C<sv_setsv> and C<sv_setsv_nomg> are
4292implemented in terms of this function.
4293
4294You probably want to use one of the assortment of wrappers, such as
4295C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
4296C<SvSetMagicSV_nosteal>.
4297
4298This is the primary function for copying scalars, and most other
4299copy-ish functions and macros use this underneath.
8d6d96c1
HS
4300
4301 void sv_setsv_flags(SV* dsv, SV* ssv, I32 flags)
4302
4303=for hackers
4304Found in file sv.c
4305
954c1994
GS
4306=item sv_setsv_mg
4307
4308Like C<sv_setsv>, but also handles 'set' magic.
4309
4310 void sv_setsv_mg(SV *dstr, SV *sstr)
4311
497711e7
GS
4312=for hackers
4313Found in file sv.c
4314
954c1994
GS
4315=item sv_setuv
4316
645c22ef
DM
4317Copies an unsigned integer into the given SV, upgrading first if necessary.
4318Does not handle 'set' magic. See also C<sv_setuv_mg>.
954c1994
GS
4319
4320 void sv_setuv(SV* sv, UV num)
4321
497711e7
GS
4322=for hackers
4323Found in file sv.c
4324
954c1994
GS
4325=item sv_setuv_mg
4326
4327Like C<sv_setuv>, but also handles 'set' magic.
4328
4329 void sv_setuv_mg(SV *sv, UV u)
4330
497711e7
GS
4331=for hackers
4332Found in file sv.c
4333
645c22ef
DM
4334=item sv_taint
4335
4336Taint an SV. Use C<SvTAINTED_on> instead.
4337 void sv_taint(SV* sv)
4338
4339=for hackers
4340Found in file sv.c
4341
451be7b1
DM
4342=item sv_tainted
4343
4344Test an SV for taintedness. Use C<SvTAINTED> instead.
4345 bool sv_tainted(SV* sv)
4346
4347=for hackers
4348Found in file sv.c
4349
c461cf8f
JH
4350=item sv_true
4351
4352Returns true if the SV has a true value by Perl's rules.
645c22ef
DM
4353Use the C<SvTRUE> macro instead, which may call C<sv_true()> or may
4354instead use an in-line version.
c461cf8f
JH
4355
4356 I32 sv_true(SV *sv)
4357
4358=for hackers
4359Found in file sv.c
4360
4361=item sv_unmagic
4362
645c22ef 4363Removes all magic of type C<type> from an SV.
c461cf8f
JH
4364
4365 int sv_unmagic(SV* sv, int type)
4366
4367=for hackers
4368Found in file sv.c
4369
954c1994
GS
4370=item sv_unref
4371
4372Unsets the RV status of the SV, and decrements the reference count of
4373whatever was being referenced by the RV. This can almost be thought of
b06226ff 4374as a reversal of C<newSVrv>. This is C<sv_unref_flags> with the C<flag>
ae154d6d 4375being zero. See C<SvROK_off>.
954c1994
GS
4376
4377 void sv_unref(SV* sv)
4378
497711e7
GS
4379=for hackers
4380Found in file sv.c
4381
840a7b70
IZ
4382=item sv_unref_flags
4383
4384Unsets the RV status of the SV, and decrements the reference count of
4385whatever was being referenced by the RV. This can almost be thought of
4386as a reversal of C<newSVrv>. The C<cflags> argument can contain
4387C<SV_IMMEDIATE_UNREF> to force the reference count to be decremented
4388(otherwise the decrementing is conditional on the reference count being
4389different from one or the reference being a readonly SV).
ae154d6d 4390See C<SvROK_off>.
840a7b70
IZ
4391
4392 void sv_unref_flags(SV* sv, U32 flags)
4393
4394=for hackers
4395Found in file sv.c
4396
451be7b1
DM
4397=item sv_untaint
4398
4399Untaint an SV. Use C<SvTAINTED_off> instead.
4400 void sv_untaint(SV* sv)
4401
4402=for hackers
4403Found in file sv.c
4404
954c1994
GS
4405=item sv_upgrade
4406
ff276b08 4407Upgrade an SV to a more complex form. Generally adds a new body type to the
645c22ef 4408SV, then copies across as much information as possible from the old body.
ff276b08 4409You generally want to use the C<SvUPGRADE> macro wrapper. See also C<svtype>.
954c1994
GS
4410
4411 bool sv_upgrade(SV* sv, U32 mt)
4412
497711e7
GS
4413=for hackers
4414Found in file sv.c
4415
954c1994
GS
4416=item sv_usepvn
4417
4418Tells an SV to use C<ptr> to find its string value. Normally the string is
1c846c1f 4419stored inside the SV but sv_usepvn allows the SV to use an outside string.
954c1994
GS
4420The C<ptr> should point to memory that was allocated by C<malloc>. The
4421string length, C<len>, must be supplied. This function will realloc the
4422memory pointed to by C<ptr>, so that pointer should not be freed or used by
4423the programmer after giving it to sv_usepvn. Does not handle 'set' magic.
4424See C<sv_usepvn_mg>.
4425
4426 void sv_usepvn(SV* sv, char* ptr, STRLEN len)
4427
497711e7
GS
4428=for hackers
4429Found in file sv.c
4430
954c1994
GS
4431=item sv_usepvn_mg
4432
4433Like C<sv_usepvn>, but also handles 'set' magic.
4434
4435 void sv_usepvn_mg(SV *sv, char *ptr, STRLEN len)
4436
497711e7
GS
4437=for hackers
4438Found in file sv.c
4439
2457d041
JH
4440=item sv_utf8_decode
4441
4442Convert the octets in the PV from UTF-8 to chars. Scan for validity and then
645c22ef 4443turn off SvUTF8 if needed so that we see characters. Used as a building block
2457d041
JH
4444for decode_utf8 in Encode.xs
4445
4446NOTE: this function is experimental and may change or be
4447removed without notice.
4448
4449 bool sv_utf8_decode(SV *sv)
4450
4451=for hackers
4452Found in file sv.c
4453
c461cf8f
JH
4454=item sv_utf8_downgrade
4455
4456Attempt to convert the PV of an SV from UTF8-encoded to byte encoding.
4457This may not be possible if the PV contains non-byte encoding characters;
4458if this is the case, either returns false or, if C<fail_ok> is not
4459true, croaks.
4460
9ede5bc8
DM
4461This is not as a general purpose Unicode to byte encoding interface:
4462use the Encode extension for that.
4463
c461cf8f
JH
4464NOTE: this function is experimental and may change or be
4465removed without notice.
4466
4467 bool sv_utf8_downgrade(SV *sv, bool fail_ok)
4468
4469=for hackers
4470Found in file sv.c
4471
4472=item sv_utf8_encode
4473
4474Convert the PV of an SV to UTF8-encoded, but then turn off the C<SvUTF8>
2457d041
JH
4475flag so that it looks like octets again. Used as a building block
4476for encode_utf8 in Encode.xs
c461cf8f
JH
4477
4478 void sv_utf8_encode(SV *sv)
4479
4480=for hackers
4481Found in file sv.c
4482
4483=item sv_utf8_upgrade
4484
4485Convert the PV of an SV to its UTF8-encoded form.
645c22ef 4486Forces the SV to string form if it is not already.
2457d041
JH
4487Always sets the SvUTF8 flag to avoid future validity checks even
4488if all the bytes have hibit clear.
c461cf8f 4489
9ede5bc8
DM
4490This is not as a general purpose byte encoding to Unicode interface:
4491use the Encode extension for that.
4492
2457d041 4493 STRLEN sv_utf8_upgrade(SV *sv)
c461cf8f
JH
4494
4495=for hackers
4496Found in file sv.c
4497
8d6d96c1
HS
4498=item sv_utf8_upgrade_flags
4499
4500Convert the PV of an SV to its UTF8-encoded form.
645c22ef 4501Forces the SV to string form if it is not already.
8d6d96c1
HS
4502Always sets the SvUTF8 flag to avoid future validity checks even
4503if all the bytes have hibit clear. If C<flags> has C<SV_GMAGIC> bit set,
4504will C<mg_get> on C<sv> if appropriate, else not. C<sv_utf8_upgrade> and
4505C<sv_utf8_upgrade_nomg> are implemented in terms of this function.
4506
9ede5bc8
DM
4507This is not as a general purpose byte encoding to Unicode interface:
4508use the Encode extension for that.
4509
8d6d96c1
HS
4510 STRLEN sv_utf8_upgrade_flags(SV *sv, I32 flags)
4511
4512=for hackers
4513Found in file sv.c
4514
645c22ef
DM
4515=item sv_uv
4516
4517A private implementation of the C<SvUVx> macro for compilers which can't
4518cope with complex macro expressions. Always use the macro instead.
4519
4520 UV sv_uv(SV* sv)
4521
4522=for hackers
4523Found in file sv.c
4524
954c1994
GS
4525=item sv_vcatpvfn
4526
4527Processes its arguments like C<vsprintf> and appends the formatted output
4528to an SV. Uses an array of SVs if the C style variable argument list is
4529missing (NULL). When running with taint checks enabled, indicates via
4530C<maybe_tainted> if results are untrustworthy (often due to the use of
4531locales).
4532
645c22ef
DM
4533Usually used via one of its frontends C<sv_catpvf> and C<sv_catpvf_mg>.
4534
954c1994
GS
4535 void sv_vcatpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
4536
497711e7
GS
4537=for hackers
4538Found in file sv.c
4539
954c1994
GS
4540=item sv_vsetpvfn
4541
4542Works like C<vcatpvfn> but copies the text into the SV instead of
4543appending it.
4544
645c22ef
DM
4545Usually used via one of its frontends C<sv_setpvf> and C<sv_setpvf_mg>.
4546
954c1994
GS
4547 void sv_vsetpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
4548
497711e7 4549=for hackers
94bdecf9
JH
4550Found in file sv.c
4551
b0f01acb
JP
4552=item upg_version
4553
4554In-place upgrade of the supplied SV to a version object.
4555
4556 SV *sv = upg_version(SV *sv);
4557
4558Returns a pointer to the upgraded SV.
4559
4560 SV* upg_version(SV *ver)
4561
4562=for hackers
4563Found in file util.c
4564
4565=item vnumify
4566
4567Accepts a version (or vstring) object and returns the
4568normalized floating point representation. Call like:
4569
4570 sv = vnumify(sv,SvRV(rv));
4571
4572NOTE: no checking is done to see if the object is of the
4573correct type (for speed).
4574
4575 SV* vnumify(SV *sv, SV *vs)
4576
4577=for hackers
4578Found in file util.c
4579
4580=item vstringify
4581
4582Accepts a version (or vstring) object and returns the
4583normalized representation. Call like:
4584
4585 sv = vstringify(sv,SvRV(rv));
4586
4587NOTE: no checking is done to see if the object is of the
4588correct type (for speed).
4589
4590 SV* vstringify(SV *sv, SV *vs)
4591
4592=for hackers
4593Found in file util.c
4594
94bdecf9
JH
4595
4596=back
4597
4598=head1 Unicode Support
4599
4600=over 8
4601
4602=item bytes_from_utf8
4603
4604Converts a string C<s> of length C<len> from UTF8 into byte encoding.
4605Unlike <utf8_to_bytes> but like C<bytes_to_utf8>, returns a pointer to
4606the newly-created string, and updates C<len> to contain the new
4607length. Returns the original string if no conversion occurs, C<len>
4608is unchanged. Do nothing if C<is_utf8> points to 0. Sets C<is_utf8> to
46090 if C<s> is converted or contains all 7bit characters.
4610
4611NOTE: this function is experimental and may change or be
4612removed without notice.
4613
4614 U8* bytes_from_utf8(U8 *s, STRLEN *len, bool *is_utf8)
4615
4616=for hackers
4617Found in file utf8.c
4618
4619=item bytes_to_utf8
4620
4621Converts a string C<s> of length C<len> from ASCII into UTF8 encoding.
4622Returns a pointer to the newly-created string, and sets C<len> to
4623reflect the new length.
4624
4625NOTE: this function is experimental and may change or be
4626removed without notice.
4627
4628 U8* bytes_to_utf8(U8 *s, STRLEN *len)
4629
4630=for hackers
4631Found in file utf8.c
4632
4633=item ibcmp_utf8
4634
4635Return true if the strings s1 and s2 differ case-insensitively, false
4636if not (if they are equal case-insensitively). If u1 is true, the
4637string s1 is assumed to be in UTF-8-encoded Unicode. If u2 is true,
4638the string s2 is assumed to be in UTF-8-encoded Unicode. If u1 or u2
4639are false, the respective string is assumed to be in native 8-bit
4640encoding.
4641
4642If the pe1 and pe2 are non-NULL, the scanning pointers will be copied
4643in there (they will point at the beginning of the I<next> character).
4644If the pointers behind pe1 or pe2 are non-NULL, they are the end
4645pointers beyond which scanning will not continue under any
4646circustances. If the byte lengths l1 and l2 are non-zero, s1+l1 and
4647s2+l2 will be used as goal end pointers that will also stop the scan,
4648and which qualify towards defining a successful match: all the scans
4649that define an explicit length must reach their goal pointers for
4650a match to succeed).
4651
4652For case-insensitiveness, the "casefolding" of Unicode is used
4653instead of upper/lowercasing both the characters, see
4654http://www.unicode.org/unicode/reports/tr21/ (Case Mappings).
4655
4656 I32 ibcmp_utf8(const char* a, char **pe1, UV l1, bool u1, const char* b, char **pe2, UV l2, bool u2)
4657
4658=for hackers
4659Found in file utf8.c
4660
4661=item is_utf8_char
4662
4663Tests if some arbitrary number of bytes begins in a valid UTF-8
641d4181
JH
4664character. Note that an INVARIANT (i.e. ASCII) character is a valid
4665UTF-8 character. The actual number of bytes in the UTF-8 character
4666will be returned if it is valid, otherwise 0.
94bdecf9
JH
4667
4668 STRLEN is_utf8_char(U8 *p)
4669
4670=for hackers
4671Found in file utf8.c
4672
4673=item is_utf8_string
4674
4675Returns true if first C<len> bytes of the given string form a valid UTF8
4676string, false otherwise. Note that 'a valid UTF8 string' does not mean
4677'a string that contains UTF8' because a valid ASCII string is a valid
4678UTF8 string.
4679
4680 bool is_utf8_string(U8 *s, STRLEN len)
4681
4682=for hackers
4683Found in file utf8.c
497711e7 4684
94bdecf9 4685=item pv_uni_display
954c1994 4686
94bdecf9
JH
4687Build to the scalar dsv a displayable version of the string spv,
4688length len, the displayable version being at most pvlim bytes long
4689(if longer, the rest is truncated and "..." will be appended).
0a2ef054
JH
4690
4691The flags argument can have UNI_DISPLAY_ISPRINT set to display
a4f1a029 4692isPRINT()able characters as themselves, UNI_DISPLAY_BACKSLASH
0a2ef054
JH
4693to display the \\[nrfta\\] as the backslashed versions (like '\n')
4694(UNI_DISPLAY_BACKSLASH is preferred over UNI_DISPLAY_ISPRINT for \\).
4695UNI_DISPLAY_QQ (and its alias UNI_DISPLAY_REGEX) have both
4696UNI_DISPLAY_BACKSLASH and UNI_DISPLAY_ISPRINT turned on.
4697
94bdecf9 4698The pointer to the PV of the dsv is returned.
954c1994 4699
94bdecf9 4700 char* pv_uni_display(SV *dsv, U8 *spv, STRLEN len, STRLEN pvlim, UV flags)
954c1994 4701
497711e7 4702=for hackers
94bdecf9 4703Found in file utf8.c
497711e7 4704
94bdecf9 4705=item sv_recode_to_utf8
954c1994 4706
94bdecf9
JH
4707The encoding is assumed to be an Encode object, on entry the PV
4708of the sv is assumed to be octets in that encoding, and the sv
4709will be converted into Unicode (and UTF-8).
954c1994 4710
94bdecf9
JH
4711If the sv already is UTF-8 (or if it is not POK), or if the encoding
4712is not a reference, nothing is done to the sv. If the encoding is not
4713an C<Encode::XS> Encoding object, bad things will happen.
4714(See F<lib/encoding.pm> and L<Encode>).
4715
4716The PV of the sv is returned.
4717
4718 char* sv_recode_to_utf8(SV* sv, SV *encoding)
954c1994 4719
497711e7 4720=for hackers
94bdecf9 4721Found in file sv.c
497711e7 4722
94bdecf9 4723=item sv_uni_display
954c1994 4724
94bdecf9 4725Build to the scalar dsv a displayable version of the scalar sv,
0a2ef054 4726the displayable version being at most pvlim bytes long
94bdecf9 4727(if longer, the rest is truncated and "..." will be appended).
0a2ef054
JH
4728
4729The flags argument is as in pv_uni_display().
4730
94bdecf9 4731The pointer to the PV of the dsv is returned.
954c1994 4732
94bdecf9 4733 char* sv_uni_display(SV *dsv, SV *ssv, STRLEN pvlim, UV flags)
954c1994 4734
497711e7 4735=for hackers
94bdecf9 4736Found in file utf8.c
497711e7 4737
6b5c0936
JH
4738=item to_utf8_case
4739
4740The "p" contains the pointer to the UTF-8 string encoding
4741the character that is being converted.
4742
4743The "ustrp" is a pointer to the character buffer to put the
4744conversion result to. The "lenp" is a pointer to the length
4745of the result.
4746
12b7c5c7 4747The "swashp" is a pointer to the swash to use.
6b5c0936 4748
12b7c5c7
JH
4749Both the special and normal mappings are stored lib/unicore/To/Foo.pl,
4750and loaded by SWASHGET, using lib/utf8_heavy.pl. The special (usually,
4751but not always, a multicharacter mapping), is tried first.
4752
4753The "special" is a string like "utf8::ToSpecLower", which means the
4754hash %utf8::ToSpecLower. The access to the hash is through
4755Perl_to_utf8_case().
6b5c0936 4756
12b7c5c7
JH
4757The "normal" is a string like "ToLower" which means the swash
4758%utf8::ToLower.
6b5c0936
JH
4759
4760 UV to_utf8_case(U8 *p, U8* ustrp, STRLEN *lenp, SV **swash, char *normal, char *special)
4761
4762=for hackers
4763Found in file utf8.c
4764
d3e79532
JH
4765=item to_utf8_fold
4766
4767Convert the UTF-8 encoded character at p to its foldcase version and
4768store that in UTF-8 in ustrp and its length in bytes in lenp. Note
4769that the ustrp needs to be at least UTF8_MAXLEN_FOLD+1 bytes since the
4770foldcase version may be longer than the original character (up to
4771three characters).
4772
4773The first character of the foldcased version is returned
4774(but note, as explained above, that there may be more.)
4775
4776 UV to_utf8_fold(U8 *p, U8* ustrp, STRLEN *lenp)
4777
4778=for hackers
4779Found in file utf8.c
4780
4781=item to_utf8_lower
4782
4783Convert the UTF-8 encoded character at p to its lowercase version and
4784store that in UTF-8 in ustrp and its length in bytes in lenp. Note
4785that the ustrp needs to be at least UTF8_MAXLEN_UCLC+1 bytes since the
4786lowercase version may be longer than the original character (up to two
4787characters).
4788
4789The first character of the lowercased version is returned
4790(but note, as explained above, that there may be more.)
4791
4792 UV to_utf8_lower(U8 *p, U8* ustrp, STRLEN *lenp)
4793
4794=for hackers
4795Found in file utf8.c
4796
4797=item to_utf8_title
4798
4799Convert the UTF-8 encoded character at p to its titlecase version and
4800store that in UTF-8 in ustrp and its length in bytes in lenp. Note
4801that the ustrp needs to be at least UTF8_MAXLEN_UCLC+1 bytes since the
4802titlecase version may be longer than the original character (up to two
4803characters).
4804
4805The first character of the titlecased version is returned
4806(but note, as explained above, that there may be more.)
4807
4808 UV to_utf8_title(U8 *p, U8* ustrp, STRLEN *lenp)
4809
4810=for hackers
4811Found in file utf8.c
4812
4813=item to_utf8_upper
4814
4815Convert the UTF-8 encoded character at p to its uppercase version and
4816store that in UTF-8 in ustrp and its length in bytes in lenp. Note
4817that the ustrp needs to be at least UTF8_MAXLEN_UCLC+1 bytes since the
4818uppercase version may be longer than the original character (up to two
4819characters).
4820
4821The first character of the uppercased version is returned
4822(but note, as explained above, that there may be more.)
4823
4824 UV to_utf8_upper(U8 *p, U8* ustrp, STRLEN *lenp)
4825
4826=for hackers
4827Found in file utf8.c
4828
282f25c9
JH
4829=item utf8n_to_uvchr
4830
4831Returns the native character value of the first character in the string C<s>
4832which is assumed to be in UTF8 encoding; C<retlen> will be set to the
4833length, in bytes, of that character.
4834
4835Allows length and flags to be passed to low level routine.
4836
4837 UV utf8n_to_uvchr(U8 *s, STRLEN curlen, STRLEN* retlen, U32 flags)
4838
4839=for hackers
4840Found in file utf8.c
4841
4842=item utf8n_to_uvuni
4843
4844Bottom level UTF-8 decode routine.
4845Returns the unicode code point value of the first character in the string C<s>
4846which is assumed to be in UTF8 encoding and no longer than C<curlen>;
4847C<retlen> will be set to the length, in bytes, of that character.
4848
4849If C<s> does not point to a well-formed UTF8 character, the behaviour
4850is dependent on the value of C<flags>: if it contains UTF8_CHECK_ONLY,
4851it is assumed that the caller will raise a warning, and this function
4852will silently just set C<retlen> to C<-1> and return zero. If the
4853C<flags> does not contain UTF8_CHECK_ONLY, warnings about
4854malformations will be given, C<retlen> will be set to the expected
4855length of the UTF-8 character in bytes, and zero will be returned.
4856
4857The C<flags> can also contain various flags to allow deviations from
4858the strict UTF-8 encoding (see F<utf8.h>).
4859
4860Most code should use utf8_to_uvchr() rather than call this directly.
4861
4862 UV utf8n_to_uvuni(U8 *s, STRLEN curlen, STRLEN* retlen, U32 flags)
4863
4864=for hackers
4865Found in file utf8.c
4866
b06226ff
JH
4867=item utf8_distance
4868
4869Returns the number of UTF8 characters between the UTF-8 pointers C<a>
4870and C<b>.
4871
4872WARNING: use only if you *know* that the pointers point inside the
4873same UTF-8 buffer.
4874
4875 IV utf8_distance(U8 *a, U8 *b)
4876
4877=for hackers
4878Found in file utf8.c
4879
4880=item utf8_hop
4881
8850bf83
JH
4882Return the UTF-8 pointer C<s> displaced by C<off> characters, either
4883forward or backward.
b06226ff
JH
4884
4885WARNING: do not use the following unless you *know* C<off> is within
8850bf83
JH
4886the UTF-8 data pointed to by C<s> *and* that on entry C<s> is aligned
4887on the first byte of character or just after the last byte of a character.
b06226ff
JH
4888
4889 U8* utf8_hop(U8 *s, I32 off)
4890
4891=for hackers
4892Found in file utf8.c
4893
4894=item utf8_length
4895
4896Return the length of the UTF-8 char encoded string C<s> in characters.
4897Stops at C<e> (inclusive). If C<e E<lt> s> or if the scan would end
4898up past C<e>, croaks.
4899
4900 STRLEN utf8_length(U8* s, U8 *e)
4901
4902=for hackers
4903Found in file utf8.c
4904
497711e7
GS
4905=item utf8_to_bytes
4906
246fae53
MG
4907Converts a string C<s> of length C<len> from UTF8 into byte encoding.
4908Unlike C<bytes_to_utf8>, this over-writes the original string, and
4909updates len to contain the new length.
67e989fb 4910Returns zero on failure, setting C<len> to -1.
497711e7 4911
eebe1485
SC
4912NOTE: this function is experimental and may change or be
4913removed without notice.
4914
4915 U8* utf8_to_bytes(U8 *s, STRLEN *len)
497711e7
GS
4916
4917=for hackers
4918Found in file utf8.c
4919
282f25c9 4920=item utf8_to_uvchr
b6b716fe 4921
282f25c9
JH
4922Returns the native character value of the first character in the string C<s>
4923which is assumed to be in UTF8 encoding; C<retlen> will be set to the
4924length, in bytes, of that character.
28d3d195 4925
282f25c9
JH
4926If C<s> does not point to a well-formed UTF8 character, zero is
4927returned and retlen is set, if possible, to -1.
444155da 4928
282f25c9 4929 UV utf8_to_uvchr(U8 *s, STRLEN* retlen)
444155da
JH
4930
4931=for hackers
4932Found in file utf8.c
4933
282f25c9 4934=item utf8_to_uvuni
444155da 4935
282f25c9 4936Returns the Unicode code point of the first character in the string C<s>
dcad2880 4937which is assumed to be in UTF8 encoding; C<retlen> will be set to the
1aa99e6b 4938length, in bytes, of that character.
444155da 4939
282f25c9
JH
4940This function should only be used when returned UV is considered
4941an index into the Unicode semantic tables (e.g. swashes).
4942
dcad2880
JH
4943If C<s> does not point to a well-formed UTF8 character, zero is
4944returned and retlen is set, if possible, to -1.
b6b716fe 4945
282f25c9
JH
4946 UV utf8_to_uvuni(U8 *s, STRLEN* retlen)
4947
4948=for hackers
4949Found in file utf8.c
4950
4951=item uvchr_to_utf8
4952
4953Adds the UTF8 representation of the Native codepoint C<uv> to the end
4954of the string C<d>; C<d> should be have at least C<UTF8_MAXLEN+1> free
4955bytes available. The return value is the pointer to the byte after the
4956end of the new character. In other words,
4957
4958 d = uvchr_to_utf8(d, uv);
4959
4960is the recommended wide native character-aware way of saying
4961
4962 *(d++) = uv;
4963
4964 U8* uvchr_to_utf8(U8 *d, UV uv)
eebe1485
SC
4965
4966=for hackers
4967Found in file utf8.c
4968
b851fbc1 4969=item uvuni_to_utf8_flags
eebe1485
SC
4970
4971Adds the UTF8 representation of the Unicode codepoint C<uv> to the end
4972of the string C<d>; C<d> should be have at least C<UTF8_MAXLEN+1> free
4973bytes available. The return value is the pointer to the byte after the
282f25c9 4974end of the new character. In other words,
eebe1485 4975
b851fbc1
JH
4976 d = uvuni_to_utf8_flags(d, uv, flags);
4977
4978or, in most cases,
4979
282f25c9 4980 d = uvuni_to_utf8(d, uv);
eebe1485 4981
b851fbc1
JH
4982(which is equivalent to)
4983
4984 d = uvuni_to_utf8_flags(d, uv, 0);
4985
eebe1485
SC
4986is the recommended Unicode-aware way of saying
4987
4988 *(d++) = uv;
4989
b851fbc1 4990 U8* uvuni_to_utf8_flags(U8 *d, UV uv, UV flags)
b6b716fe
SC
4991
4992=for hackers
4993Found in file utf8.c
4994
497711e7 4995
94bdecf9 4996=back
954c1994 4997
94bdecf9 4998=head1 Variables created by C<xsubpp> and C<xsubpp> internal functions
954c1994 4999
94bdecf9 5000=over 8
954c1994 5001
94bdecf9 5002=item ax
497711e7 5003
94bdecf9
JH
5004Variable which is setup by C<xsubpp> to indicate the stack base offset,
5005used by the C<ST>, C<XSprePUSH> and C<XSRETURN> macros. The C<dMARK> macro
5006must be called prior to setup the C<MARK> variable.
954c1994 5007
94bdecf9 5008 I32 ax
954c1994 5009
497711e7
GS
5010=for hackers
5011Found in file XSUB.h
5012
94bdecf9 5013=item CLASS
954c1994 5014
94bdecf9
JH
5015Variable which is setup by C<xsubpp> to indicate the
5016class name for a C++ XS constructor. This is always a C<char*>. See C<THIS>.
954c1994 5017
94bdecf9 5018 char* CLASS
954c1994 5019
497711e7
GS
5020=for hackers
5021Found in file XSUB.h
5022
94bdecf9 5023=item dAX
954c1994 5024
94bdecf9
JH
5025Sets up the C<ax> variable.
5026This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
954c1994 5027
94bdecf9 5028 dAX;
954c1994 5029
497711e7
GS
5030=for hackers
5031Found in file XSUB.h
5032
94bdecf9 5033=item dITEMS
954c1994 5034
94bdecf9
JH
5035Sets up the C<items> variable.
5036This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
954c1994 5037
94bdecf9 5038 dITEMS;
954c1994 5039
497711e7
GS
5040=for hackers
5041Found in file XSUB.h
5042
94bdecf9 5043=item dXSARGS
954c1994 5044
94bdecf9
JH
5045Sets up stack and mark pointers for an XSUB, calling dSP and dMARK.
5046Sets up the C<ax> and C<items> variables by calling C<dAX> and C<dITEMS>.
5047This is usually handled automatically by C<xsubpp>.
954c1994 5048
94bdecf9 5049 dXSARGS;
954c1994 5050
497711e7
GS
5051=for hackers
5052Found in file XSUB.h
5053
94bdecf9 5054=item dXSI32
954c1994 5055
94bdecf9
JH
5056Sets up the C<ix> variable for an XSUB which has aliases. This is usually
5057handled automatically by C<xsubpp>.
954c1994 5058
94bdecf9 5059 dXSI32;
954c1994 5060
497711e7
GS
5061=for hackers
5062Found in file XSUB.h
5063
94bdecf9 5064=item items
954c1994 5065
94bdecf9
JH
5066Variable which is setup by C<xsubpp> to indicate the number of
5067items on the stack. See L<perlxs/"Variable-length Parameter Lists">.
954c1994 5068
94bdecf9 5069 I32 items
954c1994 5070
497711e7
GS
5071=for hackers
5072Found in file XSUB.h
5073
94bdecf9 5074=item ix
954c1994 5075
94bdecf9
JH
5076Variable which is setup by C<xsubpp> to indicate which of an
5077XSUB's aliases was used to invoke it. See L<perlxs/"The ALIAS: Keyword">.
954c1994 5078
94bdecf9 5079 I32 ix
954c1994 5080
497711e7
GS
5081=for hackers
5082Found in file XSUB.h
5083
94bdecf9 5084=item newXSproto
954c1994 5085
94bdecf9
JH
5086Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to
5087the subs.
954c1994 5088
497711e7
GS
5089=for hackers
5090Found in file XSUB.h
5091
94bdecf9 5092=item RETVAL
954c1994 5093
94bdecf9
JH
5094Variable which is setup by C<xsubpp> to hold the return value for an
5095XSUB. This is always the proper type for the XSUB. See
5096L<perlxs/"The RETVAL Variable">.
954c1994 5097
94bdecf9 5098 (whatever) RETVAL
954c1994 5099
497711e7
GS
5100=for hackers
5101Found in file XSUB.h
5102
94bdecf9 5103=item ST
954c1994 5104
94bdecf9 5105Used to access elements on the XSUB's stack.
954c1994 5106
94bdecf9 5107 SV* ST(int ix)
954c1994 5108
497711e7
GS
5109=for hackers
5110Found in file XSUB.h
5111
94bdecf9 5112=item THIS
954c1994 5113
94bdecf9
JH
5114Variable which is setup by C<xsubpp> to designate the object in a C++
5115XSUB. This is always the proper type for the C++ object. See C<CLASS> and
5116L<perlxs/"Using XS With C++">.
954c1994 5117
94bdecf9 5118 (whatever) THIS
954c1994 5119
497711e7
GS
5120=for hackers
5121Found in file XSUB.h
5122
94bdecf9 5123=item XS
954c1994 5124
94bdecf9
JH
5125Macro to declare an XSUB and its C parameter list. This is handled by
5126C<xsubpp>.
954c1994 5127
497711e7
GS
5128=for hackers
5129Found in file XSUB.h
5130
94bdecf9 5131=item XSRETURN_EMPTY
497711e7 5132
94bdecf9 5133Return an empty list from an XSUB immediately.
954c1994 5134
954c1994 5135
94bdecf9 5136 XSRETURN_EMPTY;
954c1994 5137
497711e7
GS
5138=for hackers
5139Found in file XSUB.h
5140
954c1994
GS
5141=item XS_VERSION
5142
5143The version identifier for an XS module. This is usually
5144handled automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>.
5145
497711e7
GS
5146=for hackers
5147Found in file XSUB.h
5148
954c1994
GS
5149=item XS_VERSION_BOOTCHECK
5150
5151Macro to verify that a PM module's $VERSION variable matches the XS
5152module's C<XS_VERSION> variable. This is usually handled automatically by
5153C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">.
5154
5155 XS_VERSION_BOOTCHECK;
5156
497711e7
GS
5157=for hackers
5158Found in file XSUB.h
5159
954c1994 5160
94bdecf9 5161=back
954c1994 5162
94bdecf9
JH
5163=head1 Warning and Dieing
5164
5165=over 8
5166
5167=item croak
5168
5169This is the XSUB-writer's interface to Perl's C<die> function.
5170Normally use this function the same way you use the C C<printf>
5171function. See C<warn>.
5172
5173If you want to throw an exception object, assign the object to
5174C<$@> and then pass C<Nullch> to croak():
5175
5176 errsv = get_sv("@", TRUE);
5177 sv_setsv(errsv, exception_object);
5178 croak(Nullch);
5179
5180 void croak(const char* pat, ...)
954c1994 5181
497711e7 5182=for hackers
94bdecf9
JH
5183Found in file util.c
5184
5185=item warn
5186
5187This is the XSUB-writer's interface to Perl's C<warn> function. Use this
5188function the same way you use the C C<printf> function. See
5189C<croak>.
5190
5191 void warn(const char* pat, ...)
5192
5193=for hackers
5194Found in file util.c
5195
497711e7 5196
954c1994
GS
5197=back
5198
5199=head1 AUTHORS
5200
5201Until May 1997, this document was maintained by Jeff Okamoto
5202<okamoto@corp.hp.com>. It is now maintained as part of Perl itself.
5203
5204With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
5205Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
5206Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
5207Stephen McCamant, and Gurusamy Sarathy.
5208
5209API Listing originally by Dean Roehrich <roehrich@cray.com>.
5210
5211Updated to be autogenerated from comments in the source by Benjamin Stuhl.
5212
5213=head1 SEE ALSO
5214
5215perlguts(1), perlxs(1), perlxstut(1), perlintern(1)
5216