This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Integrate:
[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
cd0f72d4
NC
123deleted element. If C<flags> equals C<G_DISCARD>, the element is freed
124and null is returned.
f3b76584
SC
125
126 SV* av_delete(AV* ar, I32 key, I32 flags)
127
128=for hackers
129Found in file av.c
130
131=item av_exists
132
133Returns true if the element indexed by C<key> has been initialized.
134
135This relies on the fact that uninitialized array elements are set to
136C<&PL_sv_undef>.
137
138 bool av_exists(AV* ar, I32 key)
139
140=for hackers
141Found in file av.c
142
954c1994
GS
143=item av_extend
144
145Pre-extend an array. The C<key> is the index to which the array should be
146extended.
147
148 void av_extend(AV* ar, I32 key)
149
497711e7
GS
150=for hackers
151Found in file av.c
152
954c1994
GS
153=item av_fetch
154
155Returns the SV at the specified index in the array. The C<key> is the
156index. If C<lval> is set then the fetch will be part of a store. Check
157that the return value is non-null before dereferencing it to a C<SV*>.
158
96f1132b
GS
159See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for
160more information on how to use this function on tied arrays.
954c1994
GS
161
162 SV** av_fetch(AV* ar, I32 key, I32 lval)
163
497711e7
GS
164=for hackers
165Found in file av.c
166
f3b76584
SC
167=item av_fill
168
169Ensure than an array has a given number of elements, equivalent to
170Perl's C<$#array = $fill;>.
171
172 void av_fill(AV* ar, I32 fill)
173
174=for hackers
175Found in file av.c
176
954c1994
GS
177=item av_len
178
179Returns the highest index in the array. Returns -1 if the array is
180empty.
181
182 I32 av_len(AV* ar)
183
497711e7
GS
184=for hackers
185Found in file av.c
186
954c1994
GS
187=item av_make
188
189Creates a new AV and populates it with a list of SVs. The SVs are copied
190into the array, so they may be freed after the call to av_make. The new AV
191will have a reference count of 1.
192
193 AV* av_make(I32 size, SV** svp)
194
497711e7
GS
195=for hackers
196Found in file av.c
197
954c1994
GS
198=item av_pop
199
200Pops an SV off the end of the array. Returns C<&PL_sv_undef> if the array
201is empty.
202
203 SV* av_pop(AV* ar)
204
497711e7
GS
205=for hackers
206Found in file av.c
207
954c1994
GS
208=item av_push
209
210Pushes an SV onto the end of the array. The array will grow automatically
211to accommodate the addition.
212
213 void av_push(AV* ar, SV* val)
214
497711e7
GS
215=for hackers
216Found in file av.c
217
954c1994
GS
218=item av_shift
219
220Shifts an SV off the beginning of the array.
221
222 SV* av_shift(AV* ar)
223
497711e7
GS
224=for hackers
225Found in file av.c
226
954c1994
GS
227=item av_store
228
229Stores an SV in an array. The array index is specified as C<key>. The
230return value will be NULL if the operation failed or if the value did not
231need to be actually stored within the array (as in the case of tied
232arrays). Otherwise it can be dereferenced to get the original C<SV*>. Note
233that the caller is responsible for suitably incrementing the reference
234count of C<val> before the call, and decrementing it if the function
235returned NULL.
236
96f1132b 237See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for
954c1994
GS
238more information on how to use this function on tied arrays.
239
240 SV** av_store(AV* ar, I32 key, SV* val)
241
497711e7
GS
242=for hackers
243Found in file av.c
244
954c1994
GS
245=item av_undef
246
247Undefines the array. Frees the memory used by the array itself.
248
249 void av_undef(AV* ar)
250
497711e7
GS
251=for hackers
252Found in file av.c
253
954c1994
GS
254=item av_unshift
255
256Unshift the given number of C<undef> values onto the beginning of the
257array. The array will grow automatically to accommodate the addition. You
258must then use C<av_store> to assign values to these new elements.
259
260 void av_unshift(AV* ar, I32 num)
261
497711e7
GS
262=for hackers
263Found in file av.c
264
94bdecf9 265=item get_av
9f2ea798 266
94bdecf9
JH
267Returns the AV of the specified Perl array. If C<create> is set and the
268Perl variable does not exist then it will be created. If C<create> is not
269set and the variable does not exist then NULL is returned.
9f2ea798 270
94bdecf9
JH
271NOTE: the perl_ form of this function is deprecated.
272
273 AV* get_av(const char* name, I32 create)
9f2ea798
DM
274
275=for hackers
94bdecf9 276Found in file perl.c
9f2ea798 277
94bdecf9 278=item newAV
f9a63242 279
94bdecf9 280Creates a new AV. The reference count is set to 1.
f9a63242 281
94bdecf9
JH
282 AV* newAV()
283
284=for hackers
285Found in file av.c
286
94bdecf9 287=item sortsv
497711e7 288
94bdecf9 289Sort an array. Here is an example:
497711e7 290
94bdecf9 291 sortsv(AvARRAY(av), av_len(av)+1, Perl_sv_cmp_locale);
eebe1485 292
641d4181
JH
293See lib/sort.pm for details about controlling the sorting algorithm.
294
94bdecf9 295 void sortsv(SV ** array, size_t num_elts, SVCOMPARE_t cmp)
497711e7
GS
296
297=for hackers
94bdecf9
JH
298Found in file pp_sort.c
299
300
301=back
302
303=head1 Callback Functions
304
305=over 8
497711e7 306
954c1994
GS
307=item call_argv
308
309Performs a callback to the specified Perl sub. See L<perlcall>.
310
311NOTE: the perl_ form of this function is deprecated.
312
8348d08f 313 I32 call_argv(const char* sub_name, I32 flags, char** argv)
954c1994 314
497711e7
GS
315=for hackers
316Found in file perl.c
317
954c1994
GS
318=item call_method
319
320Performs a callback to the specified Perl method. The blessed object must
321be on the stack. See L<perlcall>.
322
323NOTE: the perl_ form of this function is deprecated.
324
325 I32 call_method(const char* methname, I32 flags)
326
497711e7
GS
327=for hackers
328Found in file perl.c
329
954c1994
GS
330=item call_pv
331
332Performs a callback to the specified Perl sub. See L<perlcall>.
333
334NOTE: the perl_ form of this function is deprecated.
335
336 I32 call_pv(const char* sub_name, I32 flags)
337
497711e7
GS
338=for hackers
339Found in file perl.c
340
954c1994
GS
341=item call_sv
342
343Performs a callback to the Perl sub whose name is in the SV. See
344L<perlcall>.
345
346NOTE: the perl_ form of this function is deprecated.
347
348 I32 call_sv(SV* sv, I32 flags)
349
497711e7
GS
350=for hackers
351Found in file perl.c
352
94bdecf9 353=item ENTER
954c1994 354
94bdecf9 355Opening bracket on a callback. See C<LEAVE> and L<perlcall>.
954c1994 356
94bdecf9 357 ENTER;
954c1994 358
497711e7 359=for hackers
94bdecf9 360Found in file scope.h
497711e7 361
94bdecf9 362=item eval_pv
954c1994 363
94bdecf9 364Tells Perl to C<eval> the given string and return an SV* result.
954c1994 365
94bdecf9 366NOTE: the perl_ form of this function is deprecated.
954c1994 367
94bdecf9 368 SV* eval_pv(const char* p, I32 croak_on_error)
497711e7 369
94bdecf9
JH
370=for hackers
371Found in file perl.c
954c1994 372
94bdecf9 373=item eval_sv
c9d5ac95 374
94bdecf9 375Tells Perl to C<eval> the string in the SV.
c9d5ac95 376
94bdecf9 377NOTE: the perl_ form of this function is deprecated.
954c1994 378
94bdecf9 379 I32 eval_sv(SV* sv, I32 flags)
954c1994 380
497711e7 381=for hackers
94bdecf9 382Found in file perl.c
497711e7 383
94bdecf9 384=item FREETMPS
954c1994 385
94bdecf9
JH
386Closing bracket for temporaries on a callback. See C<SAVETMPS> and
387L<perlcall>.
954c1994 388
94bdecf9 389 FREETMPS;
954c1994 390
497711e7 391=for hackers
94bdecf9 392Found in file scope.h
beab0874 393
94bdecf9 394=item LEAVE
beab0874 395
94bdecf9 396Closing bracket on a callback. See C<ENTER> and L<perlcall>.
beab0874 397
94bdecf9 398 LEAVE;
beab0874
JT
399
400=for hackers
94bdecf9 401Found in file scope.h
beab0874 402
94bdecf9 403=item SAVETMPS
9f2ea798 404
94bdecf9
JH
405Opening bracket for temporaries on a callback. See C<FREETMPS> and
406L<perlcall>.
9f2ea798 407
94bdecf9 408 SAVETMPS;
9f2ea798
DM
409
410=for hackers
94bdecf9 411Found in file scope.h
9f2ea798 412
9f2ea798 413
94bdecf9 414=back
9f2ea798 415
94bdecf9 416=head1 Character classes
9f2ea798 417
94bdecf9 418=over 8
9f2ea798 419
94bdecf9 420=item isALNUM
954c1994 421
94bdecf9
JH
422Returns a boolean indicating whether the C C<char> is an ASCII alphanumeric
423character (including underscore) or digit.
954c1994 424
94bdecf9 425 bool isALNUM(char ch)
954c1994 426
497711e7 427=for hackers
94bdecf9 428Found in file handy.h
497711e7 429
94bdecf9 430=item isALPHA
954c1994 431
94bdecf9
JH
432Returns a boolean indicating whether the C C<char> is an ASCII alphabetic
433character.
954c1994 434
94bdecf9 435 bool isALPHA(char ch)
954c1994 436
497711e7 437=for hackers
94bdecf9 438Found in file handy.h
497711e7 439
94bdecf9 440=item isDIGIT
954c1994 441
94bdecf9
JH
442Returns a boolean indicating whether the C C<char> is an ASCII
443digit.
954c1994 444
94bdecf9 445 bool isDIGIT(char ch)
954c1994 446
497711e7 447=for hackers
94bdecf9 448Found in file handy.h
497711e7 449
94bdecf9 450=item isLOWER
954c1994 451
94bdecf9
JH
452Returns a boolean indicating whether the C C<char> is a lowercase
453character.
954c1994 454
94bdecf9 455 bool isLOWER(char ch)
954c1994 456
497711e7 457=for hackers
94bdecf9 458Found in file handy.h
497711e7 459
94bdecf9 460=item isSPACE
954c1994 461
94bdecf9 462Returns a boolean indicating whether the C C<char> is whitespace.
954c1994 463
94bdecf9 464 bool isSPACE(char ch)
954c1994 465
497711e7 466=for hackers
94bdecf9 467Found in file handy.h
497711e7 468
94bdecf9 469=item isUPPER
954c1994 470
94bdecf9
JH
471Returns a boolean indicating whether the C C<char> is an uppercase
472character.
954c1994 473
94bdecf9 474 bool isUPPER(char ch)
954c1994 475
497711e7 476=for hackers
94bdecf9 477Found in file handy.h
497711e7 478
94bdecf9 479=item toLOWER
954c1994 480
94bdecf9 481Converts the specified character to lowercase.
954c1994 482
94bdecf9 483 char toLOWER(char ch)
954c1994 484
94bdecf9
JH
485=for hackers
486Found in file handy.h
487
488=item toUPPER
489
490Converts the specified character to uppercase.
491
492 char toUPPER(char ch)
954c1994 493
497711e7 494=for hackers
94bdecf9 495Found in file handy.h
497711e7 496
954c1994 497
94bdecf9 498=back
954c1994 499
94bdecf9 500=head1 Cloning an interpreter
954c1994 501
94bdecf9
JH
502=over 8
503
504=item perl_clone
505
506Create and return a new interpreter by cloning the current one.
507
ac388100 508perl_clone takes these flags as parameters:
4f4e7967
JH
509
510CLONEf_COPY_STACKS - is used to, well, copy the stacks also,
511without it we only clone the data and zero the stacks,
512with it we copy the stacks and the new perl interpreter is
513ready to run at the exact same point as the previous one.
514The pseudo-fork code uses COPY_STACKS while the
515threads->new doesn't.
516
517CLONEf_KEEP_PTR_TABLE
518perl_clone keeps a ptr_table with the pointer of the old
519variable as a key and the new variable as a value,
520this allows it to check if something has been cloned and not
521clone it again but rather just use the value and increase the
522refcount. If KEEP_PTR_TABLE is not set then perl_clone will kill
523the ptr_table using the function
524C<ptr_table_free(PL_ptr_table); PL_ptr_table = NULL;>,
525reason to keep it around is if you want to dup some of your own
526variable who are outside the graph perl scans, example of this
527code is in threads.xs create
528
529CLONEf_CLONE_HOST
530This is a win32 thing, it is ignored on unix, it tells perls
531win32host code (which is c++) to clone itself, this is needed on
532win32 if you want to run two threads at the same time,
533if you just want to do some stuff in a separate perl interpreter
534and then throw it away and return to the original one,
535you don't need to do anything.
536
94bdecf9 537 PerlInterpreter* perl_clone(PerlInterpreter* interp, UV flags)
954c1994 538
497711e7 539=for hackers
94bdecf9 540Found in file sv.c
497711e7 541
954c1994 542
94bdecf9 543=back
954c1994 544
94bdecf9
JH
545=head1 CV Manipulation Functions
546
547=over 8
548
549=item CvSTASH
550
551Returns the stash of the CV.
552
553 HV* CvSTASH(CV* cv)
954c1994 554
497711e7 555=for hackers
94bdecf9 556Found in file cv.h
497711e7 557
94bdecf9 558=item get_cv
954c1994 559
94bdecf9
JH
560Returns the CV of the specified Perl subroutine. If C<create> is set and
561the Perl subroutine does not exist then it will be declared (which has the
562same effect as saying C<sub name;>). If C<create> is not set and the
563subroutine does not exist then NULL is returned.
954c1994 564
94bdecf9
JH
565NOTE: the perl_ form of this function is deprecated.
566
567 CV* get_cv(const char* name, I32 create)
954c1994 568
497711e7 569=for hackers
94bdecf9 570Found in file perl.c
497711e7 571
7c9e965c 572
94bdecf9 573=back
7c9e965c 574
94bdecf9 575=head1 Embedding Functions
7c9e965c 576
94bdecf9 577=over 8
7c9e965c 578
d7afa7f5
JH
579=item cv_undef
580
581Clear out all the active components of a CV. This can happen either
582by an explicit C<undef &foo>, or by the reference count going to zero.
583In the former case, we keep the CvOUTSIDE pointer, so that any anonymous
584children can still follow the full lexical scope chain.
585
586 void cv_undef(CV* cv)
587
588=for hackers
589Found in file op.c
590
94bdecf9 591=item load_module
7c9e965c 592
94bdecf9
JH
593Loads the module whose name is pointed to by the string part of name.
594Note that the actual module name, not its filename, should be given.
595Eg, "Foo::Bar" instead of "Foo/Bar.pm". flags can be any of
596PERL_LOADMOD_DENY, PERL_LOADMOD_NOIMPORT, or PERL_LOADMOD_IMPORT_OPS
597(or 0 for no flags). ver, if specified, provides version semantics
598similar to C<use Foo::Bar VERSION>. The optional trailing SV*
599arguments can be used to specify arguments to the module's import()
600method, similar to C<use Foo::Bar VERSION LIST>.
7c9e965c 601
94bdecf9 602 void load_module(U32 flags, SV* name, SV* ver, ...)
7c9e965c
JP
603
604=for hackers
94bdecf9 605Found in file op.c
7c9e965c 606
62375a60
NIS
607=item nothreadhook
608
609Stub that provides thread hook for perl_destruct when there are
610no threads.
611
612 int nothreadhook()
613
614=for hackers
615Found in file perl.c
616
94bdecf9 617=item perl_alloc
954c1994 618
94bdecf9 619Allocates a new Perl interpreter. See L<perlembed>.
954c1994 620
94bdecf9 621 PerlInterpreter* perl_alloc()
954c1994 622
497711e7 623=for hackers
94bdecf9 624Found in file perl.c
497711e7 625
94bdecf9 626=item perl_construct
89423764 627
94bdecf9 628Initializes a new Perl interpreter. See L<perlembed>.
89423764 629
94bdecf9 630 void perl_construct(PerlInterpreter* interp)
89423764
GS
631
632=for hackers
94bdecf9 633Found in file perl.c
954c1994 634
94bdecf9 635=item perl_destruct
954c1994 636
94bdecf9 637Shuts down a Perl interpreter. See L<perlembed>.
954c1994 638
94bdecf9 639 int perl_destruct(PerlInterpreter* interp)
954c1994 640
497711e7
GS
641=for hackers
642Found in file perl.c
643
94bdecf9 644=item perl_free
954c1994 645
94bdecf9 646Releases a Perl interpreter. See L<perlembed>.
954c1994 647
94bdecf9 648 void perl_free(PerlInterpreter* interp)
954c1994 649
497711e7
GS
650=for hackers
651Found in file perl.c
652
94bdecf9 653=item perl_parse
954c1994 654
94bdecf9 655Tells a Perl interpreter to parse a Perl script. See L<perlembed>.
954c1994 656
94bdecf9 657 int perl_parse(PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env)
954c1994 658
94bdecf9
JH
659=for hackers
660Found in file perl.c
661
662=item perl_run
663
664Tells a Perl interpreter to run. See L<perlembed>.
665
666 int perl_run(PerlInterpreter* interp)
954c1994 667
497711e7
GS
668=for hackers
669Found in file perl.c
670
94bdecf9 671=item require_pv
954c1994 672
94bdecf9
JH
673Tells Perl to C<require> the file named by the string argument. It is
674analogous to the Perl code C<eval "require '$file'">. It's even
68da2b4b 675implemented that way; consider using load_module instead.
954c1994
GS
676
677NOTE: the perl_ form of this function is deprecated.
678
94bdecf9 679 void require_pv(const char* pv)
954c1994 680
497711e7
GS
681=for hackers
682Found in file perl.c
683
954c1994 684
94bdecf9 685=back
954c1994 686
6050d10e
JP
687=head1 Functions in file pp_pack.c
688
689
690=over 8
691
f3479639 692=item packlist
6050d10e
JP
693
694The engine implementing pack() Perl function.
695
f3479639
JH
696 void packlist(SV *cat, char *pat, char *patend, SV **beglist, SV **endlist)
697
698=for hackers
699Found in file pp_pack.c
700
701=item pack_cat
702
703The engine implementing pack() Perl function. Note: parameters next_in_list and
704flags are not used. This call should not be used; use packlist instead.
705
6050d10e
JP
706 void pack_cat(SV *cat, char *pat, char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags)
707
708=for hackers
709Found in file pp_pack.c
710
f3479639 711=item unpackstring
6050d10e 712
41b209cd
NC
713The engine implementing unpack() Perl function. C<unpackstring> puts the
714extracted list items on the stack and returns the number of elements.
715Issue C<PUTBACK> before and C<SPAGAIN> after the call to this function.
6050d10e 716
f3479639
JH
717 I32 unpackstring(char *pat, char *patend, char *s, char *strend, U32 flags)
718
719=for hackers
720Found in file pp_pack.c
721
722=item unpack_str
723
724The engine implementing unpack() Perl function. Note: parameters strbeg, new_s
725and ocnt are not used. This call should not be used, use unpackstring instead.
726
6050d10e
JP
727 I32 unpack_str(char *pat, char *patend, char *s, char *strbeg, char *strend, char **new_s, I32 ocnt, U32 flags)
728
729=for hackers
730Found in file pp_pack.c
731
732
733=back
734
94bdecf9 735=head1 Global Variables
954c1994 736
94bdecf9 737=over 8
497711e7 738
94bdecf9 739=item PL_modglobal
954c1994 740
94bdecf9
JH
741C<PL_modglobal> is a general purpose, interpreter global HV for use by
742extensions that need to keep information on a per-interpreter basis.
743In a pinch, it can also be used as a symbol table for extensions
744to share data among each other. It is a good idea to use keys
745prefixed by the package name of the extension that owns the data.
954c1994 746
94bdecf9 747 HV* PL_modglobal
954c1994 748
497711e7 749=for hackers
94bdecf9 750Found in file intrpvar.h
497711e7 751
94bdecf9 752=item PL_na
6e9d1081 753
94bdecf9
JH
754A convenience variable which is typically used with C<SvPV> when one
755doesn't care about the length of the string. It is usually more efficient
756to either declare a local variable and use that instead or to use the
757C<SvPV_nolen> macro.
6e9d1081 758
94bdecf9 759 STRLEN PL_na
6e9d1081 760
94bdecf9
JH
761=for hackers
762Found in file thrdvar.h
6e9d1081 763
94bdecf9 764=item PL_sv_no
6e9d1081 765
94bdecf9
JH
766This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
767C<&PL_sv_no>.
768
769 SV PL_sv_no
6e9d1081
NC
770
771=for hackers
94bdecf9 772Found in file intrpvar.h
6e9d1081 773
94bdecf9 774=item PL_sv_undef
6e9d1081 775
94bdecf9 776This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
6e9d1081 777
94bdecf9 778 SV PL_sv_undef
6e9d1081 779
94bdecf9
JH
780=for hackers
781Found in file intrpvar.h
6e9d1081 782
94bdecf9 783=item PL_sv_yes
6e9d1081 784
94bdecf9
JH
785This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
786C<&PL_sv_yes>.
787
788 SV PL_sv_yes
6e9d1081
NC
789
790=for hackers
94bdecf9 791Found in file intrpvar.h
6e9d1081 792
6e9d1081 793
94bdecf9 794=back
6e9d1081 795
94bdecf9 796=head1 GV Functions
6e9d1081 797
94bdecf9 798=over 8
6e9d1081 799
954c1994
GS
800=item GvSV
801
802Return the SV from the GV.
803
804 SV* GvSV(GV* gv)
805
497711e7
GS
806=for hackers
807Found in file gv.h
808
954c1994
GS
809=item gv_fetchmeth
810
811Returns the glob with the given C<name> and a defined subroutine or
812C<NULL>. The glob lives in the given C<stash>, or in the stashes
a453c169 813accessible via @ISA and UNIVERSAL::.
954c1994
GS
814
815The argument C<level> should be either 0 or -1. If C<level==0>, as a
816side-effect creates a glob with the given C<name> in the given C<stash>
817which in the case of success contains an alias for the subroutine, and sets
1c846c1f 818up caching info for this glob. Similarly for all the searched stashes.
954c1994
GS
819
820This function grants C<"SUPER"> token as a postfix of the stash name. The
821GV returned from C<gv_fetchmeth> may be a method cache entry, which is not
4929bf7b 822visible to Perl code. So when calling C<call_sv>, you should not use
954c1994 823the GV directly; instead, you should use the method's CV, which can be
1c846c1f 824obtained from the GV with the C<GvCV> macro.
954c1994
GS
825
826 GV* gv_fetchmeth(HV* stash, const char* name, STRLEN len, I32 level)
827
497711e7
GS
828=for hackers
829Found in file gv.c
830
954c1994
GS
831=item gv_fetchmethod
832
6d0f518e 833See L<gv_fetchmethod_autoload>.
954c1994
GS
834
835 GV* gv_fetchmethod(HV* stash, const char* name)
836
497711e7
GS
837=for hackers
838Found in file gv.c
839
954c1994
GS
840=item gv_fetchmethod_autoload
841
842Returns the glob which contains the subroutine to call to invoke the method
843on the C<stash>. In fact in the presence of autoloading this may be the
844glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is
1c846c1f 845already setup.
954c1994
GS
846
847The third parameter of C<gv_fetchmethod_autoload> determines whether
848AUTOLOAD lookup is performed if the given method is not present: non-zero
1c846c1f 849means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.
954c1994 850Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload>
1c846c1f 851with a non-zero C<autoload> parameter.
954c1994
GS
852
853These functions grant C<"SUPER"> token as a prefix of the method name. Note
854that if you want to keep the returned glob for a long time, you need to
855check for it being "AUTOLOAD", since at the later time the call may load a
856different subroutine due to $AUTOLOAD changing its value. Use the glob
1c846c1f 857created via a side effect to do this.
954c1994
GS
858
859These functions have the same side-effects and as C<gv_fetchmeth> with
860C<level==0>. C<name> should be writable if contains C<':'> or C<'
861''>. The warning against passing the GV returned by C<gv_fetchmeth> to
1c846c1f 862C<call_sv> apply equally to these functions.
954c1994
GS
863
864 GV* gv_fetchmethod_autoload(HV* stash, const char* name, I32 autoload)
865
497711e7
GS
866=for hackers
867Found in file gv.c
868
0c81b680
JH
869=item gv_fetchmeth_autoload
870
871Same as gv_fetchmeth(), but looks for autoloaded subroutines too.
872Returns a glob for the subroutine.
873
874For an autoloaded subroutine without a GV, will create a GV even
875if C<level < 0>. For an autoloaded subroutine without a stub, GvCV()
876of the result may be zero.
877
878 GV* gv_fetchmeth_autoload(HV* stash, const char* name, STRLEN len, I32 level)
879
880=for hackers
881Found in file gv.c
882
954c1994
GS
883=item gv_stashpv
884
386d01d6 885Returns a pointer to the stash for a specified package. C<name> should
0df18620
NC
886be a valid UTF-8 string and must be null-terminated. If C<create> is set
887then the package will be created if it does not already exist. If C<create>
888is not set and the package does not exist then NULL is returned.
889
890 HV* gv_stashpv(const char* name, I32 create)
891
892=for hackers
893Found in file gv.c
894
895=item gv_stashpvn
896
897Returns a pointer to the stash for a specified package. C<name> should
898be a valid UTF-8 string. The C<namelen> parameter indicates the length of
899the C<name>, in bytes. If C<create> is set then the package will be
386d01d6
GS
900created if it does not already exist. If C<create> is not set and the
901package does not exist then NULL is returned.
954c1994 902
0df18620 903 HV* gv_stashpvn(const char* name, U32 namelen, I32 create)
954c1994 904
497711e7
GS
905=for hackers
906Found in file gv.c
907
954c1994
GS
908=item gv_stashsv
909
386d01d6
GS
910Returns a pointer to the stash for a specified package, which must be a
911valid UTF-8 string. See C<gv_stashpv>.
954c1994
GS
912
913 HV* gv_stashsv(SV* sv, I32 create)
914
497711e7
GS
915=for hackers
916Found in file gv.c
917
954c1994 918
94bdecf9 919=back
954c1994 920
94bdecf9 921=head1 Handy Values
497711e7 922
94bdecf9 923=over 8
954c1994 924
24303b65 925=item Nullav
497711e7 926
24303b65 927Null AV pointer.
954c1994 928
94bdecf9 929=for hackers
24303b65 930Found in file av.h
954c1994 931
dd2155a4 932=item Nullch
94bdecf9
JH
933
934Null character pointer.
68da2b4b 935
497711e7 936=for hackers
94bdecf9 937Found in file handy.h
497711e7 938
24303b65
NC
939=item Nullcv
940
941Null CV pointer.
942
943=for hackers
944Found in file cv.h
945
946=item Nullhv
947
948Null HV pointer.
949
950=for hackers
951Found in file hv.h
952
94bdecf9 953=item Nullsv
954c1994 954
94bdecf9 955Null SV pointer.
954c1994 956
497711e7 957=for hackers
94bdecf9 958Found in file handy.h
497711e7 959
954c1994 960
94bdecf9 961=back
954c1994 962
94bdecf9 963=head1 Hash Manipulation Functions
497711e7 964
94bdecf9 965=over 8
954c1994 966
94bdecf9 967=item get_hv
954c1994 968
94bdecf9
JH
969Returns the HV of the specified Perl hash. If C<create> is set and the
970Perl variable does not exist then it will be created. If C<create> is not
971set and the variable does not exist then NULL is returned.
497711e7 972
94bdecf9 973NOTE: the perl_ form of this function is deprecated.
954c1994 974
94bdecf9 975 HV* get_hv(const char* name, I32 create)
954c1994 976
497711e7 977=for hackers
94bdecf9 978Found in file perl.c
497711e7 979
24303b65
NC
980=item HEf_SVKEY
981
982This flag, used in the length slot of hash entries and magic structures,
983specifies the structure contains an C<SV*> pointer where a C<char*> pointer
984is to be expected. (For information only--not to be used).
985
986=for hackers
987Found in file hv.h
988
954c1994
GS
989=item HeHASH
990
991Returns the computed hash stored in the hash entry.
992
993 U32 HeHASH(HE* he)
994
497711e7
GS
995=for hackers
996Found in file hv.h
997
954c1994
GS
998=item HeKEY
999
1000Returns the actual pointer stored in the key slot of the hash entry. The
1001pointer may be either C<char*> or C<SV*>, depending on the value of
1002C<HeKLEN()>. Can be assigned to. The C<HePV()> or C<HeSVKEY()> macros are
1003usually preferable for finding the value of a key.
1004
1005 void* HeKEY(HE* he)
1006
497711e7
GS
1007=for hackers
1008Found in file hv.h
1009
954c1994
GS
1010=item HeKLEN
1011
1012If this is negative, and amounts to C<HEf_SVKEY>, it indicates the entry
1013holds an C<SV*> key. Otherwise, holds the actual length of the key. Can
1014be assigned to. The C<HePV()> macro is usually preferable for finding key
1015lengths.
1016
1017 STRLEN HeKLEN(HE* he)
1018
497711e7
GS
1019=for hackers
1020Found in file hv.h
1021
954c1994
GS
1022=item HePV
1023
1024Returns the key slot of the hash entry as a C<char*> value, doing any
1025necessary dereferencing of possibly C<SV*> keys. The length of the string
1026is placed in C<len> (this is a macro, so do I<not> use C<&len>). If you do
1027not care about what the length of the key is, you may use the global
1028variable C<PL_na>, though this is rather less efficient than using a local
1029variable. Remember though, that hash keys in perl are free to contain
1030embedded nulls, so using C<strlen()> or similar is not a good way to find
1031the length of hash keys. This is very similar to the C<SvPV()> macro
1032described elsewhere in this document.
1033
1034 char* HePV(HE* he, STRLEN len)
1035
497711e7
GS
1036=for hackers
1037Found in file hv.h
1038
954c1994
GS
1039=item HeSVKEY
1040
1041Returns the key as an C<SV*>, or C<Nullsv> if the hash entry does not
1042contain an C<SV*> key.
1043
1044 SV* HeSVKEY(HE* he)
1045
497711e7
GS
1046=for hackers
1047Found in file hv.h
1048
954c1994
GS
1049=item HeSVKEY_force
1050
1051Returns the key as an C<SV*>. Will create and return a temporary mortal
1052C<SV*> if the hash entry contains only a C<char*> key.
1053
1054 SV* HeSVKEY_force(HE* he)
1055
497711e7
GS
1056=for hackers
1057Found in file hv.h
1058
954c1994
GS
1059=item HeSVKEY_set
1060
1061Sets the key to a given C<SV*>, taking care to set the appropriate flags to
1062indicate the presence of an C<SV*> key, and returns the same
1063C<SV*>.
1064
1065 SV* HeSVKEY_set(HE* he, SV* sv)
1066
497711e7
GS
1067=for hackers
1068Found in file hv.h
1069
954c1994
GS
1070=item HeVAL
1071
1072Returns the value slot (type C<SV*>) stored in the hash entry.
1073
1074 SV* HeVAL(HE* he)
1075
497711e7
GS
1076=for hackers
1077Found in file hv.h
1078
954c1994
GS
1079=item HvNAME
1080
1081Returns the package name of a stash. See C<SvSTASH>, C<CvSTASH>.
1082
1083 char* HvNAME(HV* stash)
1084
497711e7
GS
1085=for hackers
1086Found in file hv.h
1087
954c1994
GS
1088=item hv_clear
1089
1090Clears a hash, making it empty.
1091
1092 void hv_clear(HV* tb)
1093
497711e7
GS
1094=for hackers
1095Found in file hv.c
1096
704547c4
AB
1097=item hv_clear_placeholders
1098
1099Clears any placeholders from a hash. If a restricted hash has any of its keys
1100marked as readonly and the key is subsequently deleted, the key is not actually
1101deleted but is marked by assigning it a value of &PL_sv_placeholder. This tags
1102it so it will be ignored by future operations such as iterating over the hash,
e93457dc 1103but will still allow the hash to have a value reassigned to the key at some
704547c4
AB
1104future point. This function clears any such placeholder keys from the hash.
1105See Hash::Util::lock_keys() for an example of its use.
1106
1107 void hv_clear_placeholders(HV* hb)
1108
1109=for hackers
1110Found in file hv.c
1111
954c1994
GS
1112=item hv_delete
1113
1114Deletes a key/value pair in the hash. The value SV is removed from the
1c846c1f 1115hash and returned to the caller. The C<klen> is the length of the key.
954c1994
GS
1116The C<flags> value will normally be zero; if set to G_DISCARD then NULL
1117will be returned.
1118
da58a35d 1119 SV* hv_delete(HV* tb, const char* key, I32 klen, I32 flags)
954c1994 1120
497711e7
GS
1121=for hackers
1122Found in file hv.c
1123
954c1994
GS
1124=item hv_delete_ent
1125
1126Deletes a key/value pair in the hash. The value SV is removed from the
1127hash and returned to the caller. The C<flags> value will normally be zero;
1128if set to G_DISCARD then NULL will be returned. C<hash> can be a valid
1129precomputed hash value, or 0 to ask for it to be computed.
1130
1131 SV* hv_delete_ent(HV* tb, SV* key, I32 flags, U32 hash)
1132
497711e7
GS
1133=for hackers
1134Found in file hv.c
1135
954c1994
GS
1136=item hv_exists
1137
1138Returns a boolean indicating whether the specified hash key exists. The
1139C<klen> is the length of the key.
1140
da58a35d 1141 bool hv_exists(HV* tb, const char* key, I32 klen)
954c1994 1142
497711e7
GS
1143=for hackers
1144Found in file hv.c
1145
954c1994
GS
1146=item hv_exists_ent
1147
1148Returns a boolean indicating whether the specified hash key exists. C<hash>
1149can be a valid precomputed hash value, or 0 to ask for it to be
1150computed.
1151
1152 bool hv_exists_ent(HV* tb, SV* key, U32 hash)
1153
497711e7
GS
1154=for hackers
1155Found in file hv.c
1156
954c1994
GS
1157=item hv_fetch
1158
1159Returns the SV which corresponds to the specified key in the hash. The
1160C<klen> is the length of the key. If C<lval> is set then the fetch will be
1161part of a store. Check that the return value is non-null before
f4758303 1162dereferencing it to an C<SV*>.
954c1994 1163
96f1132b 1164See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994
GS
1165information on how to use this function on tied hashes.
1166
da58a35d 1167 SV** hv_fetch(HV* tb, const char* key, I32 klen, I32 lval)
954c1994 1168
497711e7
GS
1169=for hackers
1170Found in file hv.c
1171
954c1994
GS
1172=item hv_fetch_ent
1173
1174Returns the hash entry which corresponds to the specified key in the hash.
1175C<hash> must be a valid precomputed hash number for the given C<key>, or 0
1176if you want the function to compute it. IF C<lval> is set then the fetch
1177will be part of a store. Make sure the return value is non-null before
1178accessing it. The return value when C<tb> is a tied hash is a pointer to a
1179static location, so be sure to make a copy of the structure if you need to
1c846c1f 1180store it somewhere.
954c1994 1181
96f1132b 1182See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994
GS
1183information on how to use this function on tied hashes.
1184
1185 HE* hv_fetch_ent(HV* tb, SV* key, I32 lval, U32 hash)
1186
497711e7
GS
1187=for hackers
1188Found in file hv.c
1189
954c1994
GS
1190=item hv_iterinit
1191
1192Prepares a starting point to traverse a hash table. Returns the number of
1193keys in the hash (i.e. the same as C<HvKEYS(tb)>). The return value is
1c846c1f 1194currently only meaningful for hashes without tie magic.
954c1994
GS
1195
1196NOTE: Before version 5.004_65, C<hv_iterinit> used to return the number of
1197hash buckets that happen to be in use. If you still need that esoteric
1198value, you can get it through the macro C<HvFILL(tb)>.
1199
641d4181 1200
954c1994
GS
1201 I32 hv_iterinit(HV* tb)
1202
497711e7
GS
1203=for hackers
1204Found in file hv.c
1205
954c1994
GS
1206=item hv_iterkey
1207
1208Returns the key from the current position of the hash iterator. See
1209C<hv_iterinit>.
1210
1211 char* hv_iterkey(HE* entry, I32* retlen)
1212
497711e7
GS
1213=for hackers
1214Found in file hv.c
1215
954c1994
GS
1216=item hv_iterkeysv
1217
1218Returns the key as an C<SV*> from the current position of the hash
1219iterator. The return value will always be a mortal copy of the key. Also
1220see C<hv_iterinit>.
1221
1222 SV* hv_iterkeysv(HE* entry)
1223
497711e7
GS
1224=for hackers
1225Found in file hv.c
1226
954c1994
GS
1227=item hv_iternext
1228
1229Returns entries from a hash iterator. See C<hv_iterinit>.
1230
641d4181
JH
1231You may call C<hv_delete> or C<hv_delete_ent> on the hash entry that the
1232iterator currently points to, without losing your place or invalidating your
1233iterator. Note that in this case the current entry is deleted from the hash
1234with your iterator holding the last reference to it. Your iterator is flagged
1235to free the entry on the next call to C<hv_iternext>, so you must not discard
1236your iterator immediately else the entry will leak - call C<hv_iternext> to
1237trigger the resource deallocation.
1238
954c1994
GS
1239 HE* hv_iternext(HV* tb)
1240
497711e7
GS
1241=for hackers
1242Found in file hv.c
1243
954c1994
GS
1244=item hv_iternextsv
1245
1246Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one
1247operation.
1248
1249 SV* hv_iternextsv(HV* hv, char** key, I32* retlen)
1250
497711e7
GS
1251=for hackers
1252Found in file hv.c
1253
641d4181
JH
1254=item hv_iternext_flags
1255
1256Returns entries from a hash iterator. See C<hv_iterinit> and C<hv_iternext>.
1257The C<flags> value will normally be zero; if HV_ITERNEXT_WANTPLACEHOLDERS is
1258set the placeholders keys (for restricted hashes) will be returned in addition
1259to normal keys. By default placeholders are automatically skipped over.
ae60962e
JH
1260Currently a placeholder is implemented with a value that is
1261C<&Perl_sv_placeholder>. Note that the implementation of placeholders and
641d4181
JH
1262restricted hashes may change, and the implementation currently is
1263insufficiently abstracted for any change to be tidy.
1264
1265NOTE: this function is experimental and may change or be
1266removed without notice.
1267
1268 HE* hv_iternext_flags(HV* tb, I32 flags)
1269
1270=for hackers
1271Found in file hv.c
1272
954c1994
GS
1273=item hv_iterval
1274
1275Returns the value from the current position of the hash iterator. See
1276C<hv_iterkey>.
1277
1278 SV* hv_iterval(HV* tb, HE* entry)
1279
497711e7
GS
1280=for hackers
1281Found in file hv.c
1282
954c1994
GS
1283=item hv_magic
1284
1285Adds magic to a hash. See C<sv_magic>.
1286
1287 void hv_magic(HV* hv, GV* gv, int how)
1288
497711e7
GS
1289=for hackers
1290Found in file hv.c
1291
59679316
TP
1292=item hv_scalar
1293
1294Evaluates the hash in scalar context and returns the result. Handles magic when the hash is tied.
1295
1296 SV* hv_scalar(HV* hv)
1297
1298=for hackers
1299Found in file hv.c
1300
954c1994
GS
1301=item hv_store
1302
1303Stores an SV in a hash. The hash key is specified as C<key> and C<klen> is
1304the length of the key. The C<hash> parameter is the precomputed hash
1305value; if it is zero then Perl will compute it. The return value will be
1306NULL if the operation failed or if the value did not need to be actually
1307stored within the hash (as in the case of tied hashes). Otherwise it can
1308be dereferenced to get the original C<SV*>. Note that the caller is
1309responsible for suitably incrementing the reference count of C<val> before
cbe7329c
JH
1310the call, and decrementing it if the function returned NULL. Effectively
1311a successful hv_store takes ownership of one reference to C<val>. This is
1312usually what you want; a newly created SV has a reference count of one, so
1313if all your code does is create SVs then store them in a hash, hv_store
1314will own the only reference to the new SV, and your code doesn't need to do
1315anything further to tidy up. hv_store is not implemented as a call to
1316hv_store_ent, and does not create a temporary SV for the key, so if your
1317key data is not already in SV form then use hv_store in preference to
1318hv_store_ent.
954c1994 1319
96f1132b 1320See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994
GS
1321information on how to use this function on tied hashes.
1322
da58a35d 1323 SV** hv_store(HV* tb, const char* key, I32 klen, SV* val, U32 hash)
954c1994 1324
497711e7
GS
1325=for hackers
1326Found in file hv.c
1327
954c1994
GS
1328=item hv_store_ent
1329
1330Stores C<val> in a hash. The hash key is specified as C<key>. The C<hash>
1331parameter is the precomputed hash value; if it is zero then Perl will
1332compute it. The return value is the new hash entry so created. It will be
1333NULL if the operation failed or if the value did not need to be actually
1334stored within the hash (as in the case of tied hashes). Otherwise the
f22d8e4b 1335contents of the return value can be accessed using the C<He?> macros
954c1994
GS
1336described here. Note that the caller is responsible for suitably
1337incrementing the reference count of C<val> before the call, and
cbe7329c
JH
1338decrementing it if the function returned NULL. Effectively a successful
1339hv_store_ent takes ownership of one reference to C<val>. This is
1340usually what you want; a newly created SV has a reference count of one, so
1341if all your code does is create SVs then store them in a hash, hv_store
1342will own the only reference to the new SV, and your code doesn't need to do
1343anything further to tidy up. Note that hv_store_ent only reads the C<key>;
1344unlike C<val> it does not take ownership of it, so maintaining the correct
1345reference count on C<key> is entirely the caller's responsibility. hv_store
1346is not implemented as a call to hv_store_ent, and does not create a temporary
1347SV for the key, so if your key data is not already in SV form then use
1348hv_store in preference to hv_store_ent.
954c1994 1349
96f1132b 1350See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more
954c1994
GS
1351information on how to use this function on tied hashes.
1352
1353 HE* hv_store_ent(HV* tb, SV* key, SV* val, U32 hash)
1354
497711e7
GS
1355=for hackers
1356Found in file hv.c
1357
954c1994
GS
1358=item hv_undef
1359
1360Undefines the hash.
1361
1362 void hv_undef(HV* tb)
1363
497711e7
GS
1364=for hackers
1365Found in file hv.c
1366
94bdecf9 1367=item newHV
d2cc3551 1368
94bdecf9 1369Creates a new HV. The reference count is set to 1.
d2cc3551 1370
94bdecf9 1371 HV* newHV()
d2cc3551
JH
1372
1373=for hackers
94bdecf9 1374Found in file hv.c
d2cc3551 1375
954c1994 1376
94bdecf9 1377=back
954c1994 1378
94bdecf9 1379=head1 Magical Functions
954c1994 1380
94bdecf9 1381=over 8
497711e7 1382
94bdecf9 1383=item mg_clear
954c1994 1384
94bdecf9 1385Clear something magical that the SV represents. See C<sv_magic>.
954c1994 1386
94bdecf9 1387 int mg_clear(SV* sv)
954c1994 1388
497711e7 1389=for hackers
94bdecf9 1390Found in file mg.c
497711e7 1391
94bdecf9 1392=item mg_copy
954c1994 1393
94bdecf9 1394Copies the magic from one SV to another. See C<sv_magic>.
954c1994 1395
94bdecf9 1396 int mg_copy(SV* sv, SV* nsv, const char* key, I32 klen)
954c1994 1397
497711e7 1398=for hackers
94bdecf9 1399Found in file mg.c
497711e7 1400
94bdecf9 1401=item mg_find
954c1994 1402
94bdecf9 1403Finds the magic pointer for type matching the SV. See C<sv_magic>.
954c1994 1404
94bdecf9 1405 MAGIC* mg_find(SV* sv, int type)
954c1994 1406
497711e7 1407=for hackers
94bdecf9 1408Found in file mg.c
497711e7 1409
94bdecf9 1410=item mg_free
954c1994 1411
94bdecf9 1412Free any magic storage used by the SV. See C<sv_magic>.
954c1994 1413
94bdecf9 1414 int mg_free(SV* sv)
954c1994 1415
497711e7 1416=for hackers
94bdecf9 1417Found in file mg.c
497711e7 1418
94bdecf9 1419=item mg_get
eebe1485 1420
94bdecf9 1421Do magic after a value is retrieved from the SV. See C<sv_magic>.
282f25c9 1422
94bdecf9 1423 int mg_get(SV* sv)
eebe1485
SC
1424
1425=for hackers
94bdecf9 1426Found in file mg.c
eebe1485 1427
94bdecf9 1428=item mg_length
eebe1485 1429
94bdecf9 1430Report on the SV's length. See C<sv_magic>.
eebe1485 1431
94bdecf9 1432 U32 mg_length(SV* sv)
eebe1485
SC
1433
1434=for hackers
94bdecf9 1435Found in file mg.c
eebe1485 1436
94bdecf9 1437=item mg_magical
954c1994 1438
94bdecf9 1439Turns on the magical status of an SV. See C<sv_magic>.
954c1994 1440
94bdecf9 1441 void mg_magical(SV* sv)
954c1994 1442
497711e7 1443=for hackers
94bdecf9 1444Found in file mg.c
497711e7 1445
94bdecf9 1446=item mg_set
954c1994 1447
94bdecf9 1448Do magic after a value is assigned to the SV. See C<sv_magic>.
954c1994 1449
94bdecf9 1450 int mg_set(SV* sv)
954c1994 1451
497711e7 1452=for hackers
94bdecf9 1453Found in file mg.c
497711e7 1454
94bdecf9 1455=item SvGETMAGIC
954c1994 1456
94bdecf9
JH
1457Invokes C<mg_get> on an SV if it has 'get' magic. This macro evaluates its
1458argument more than once.
954c1994 1459
94bdecf9 1460 void SvGETMAGIC(SV* sv)
954c1994 1461
497711e7 1462=for hackers
94bdecf9 1463Found in file sv.h
497711e7 1464
a4f1a029
NIS
1465=item SvLOCK
1466
1467Arranges for a mutual exclusion lock to be obtained on sv if a suitable module
1468has been loaded.
1469
1470 void SvLOCK(SV* sv)
1471
1472=for hackers
1473Found in file sv.h
1474
94bdecf9 1475=item SvSETMAGIC
7d3fb230 1476
94bdecf9
JH
1477Invokes C<mg_set> on an SV if it has 'set' magic. This macro evaluates its
1478argument more than once.
7d3fb230 1479
94bdecf9 1480 void SvSETMAGIC(SV* sv)
7d3fb230
BS
1481
1482=for hackers
94bdecf9 1483Found in file sv.h
7d3fb230 1484
94bdecf9 1485=item SvSetMagicSV
954c1994 1486
94bdecf9 1487Like C<SvSetSV>, but does any set magic required afterwards.
954c1994 1488
94bdecf9 1489 void SvSetMagicSV(SV* dsb, SV* ssv)
954c1994 1490
497711e7 1491=for hackers
94bdecf9 1492Found in file sv.h
497711e7 1493
a4f1a029
NIS
1494=item SvSetMagicSV_nosteal
1495
40d34c0d 1496Like C<SvSetSV_nosteal>, but does any set magic required afterwards.
a4f1a029
NIS
1497
1498 void SvSetMagicSV_nosteal(SV* dsv, SV* ssv)
1499
1500=for hackers
1501Found in file sv.h
1502
94bdecf9 1503=item SvSetSV
954c1994 1504
94bdecf9
JH
1505Calls C<sv_setsv> if dsv is not the same as ssv. May evaluate arguments
1506more than once.
1507
1508 void SvSetSV(SV* dsb, SV* ssv)
954c1994 1509
497711e7 1510=for hackers
94bdecf9 1511Found in file sv.h
497711e7 1512
94bdecf9 1513=item SvSetSV_nosteal
954c1994 1514
94bdecf9
JH
1515Calls a non-destructive version of C<sv_setsv> if dsv is not the same as
1516ssv. May evaluate arguments more than once.
954c1994 1517
94bdecf9 1518 void SvSetSV_nosteal(SV* dsv, SV* ssv)
954c1994 1519
497711e7 1520=for hackers
94bdecf9 1521Found in file sv.h
497711e7 1522
a4f1a029
NIS
1523=item SvSHARE
1524
1525Arranges for sv to be shared between threads if a suitable module
1526has been loaded.
1527
1528 void SvSHARE(SV* sv)
1529
1530=for hackers
1531Found in file sv.h
1532
24303b65
NC
1533=item SvUNLOCK
1534
1535Releases a mutual exclusion lock on sv if a suitable module
1536has been loaded.
1537
1538 void SvUNLOCK(SV* sv)
1539
1540=for hackers
1541Found in file sv.h
1542
954c1994 1543
94bdecf9 1544=back
954c1994 1545
94bdecf9 1546=head1 Memory Management
954c1994 1547
94bdecf9 1548=over 8
497711e7 1549
94bdecf9 1550=item Copy
954c1994 1551
94bdecf9
JH
1552The XSUB-writer's interface to the C C<memcpy> function. The C<src> is the
1553source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is
1554the type. May fail on overlapping copies. See also C<Move>.
954c1994 1555
94bdecf9 1556 void Copy(void* src, void* dest, int nitems, type)
954c1994 1557
497711e7 1558=for hackers
94bdecf9 1559Found in file handy.h
497711e7 1560
735fe74b
NC
1561=item CopyD
1562
1563Like C<Copy> but returns dest. Useful for encouraging compilers to tail-call
1564optimise.
1565
1566 void * CopyD(void* src, void* dest, int nitems, type)
1567
1568=for hackers
1569Found in file handy.h
1570
94bdecf9 1571=item Move
954c1994 1572
94bdecf9
JH
1573The XSUB-writer's interface to the C C<memmove> function. The C<src> is the
1574source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is
1575the type. Can do overlapping moves. See also C<Copy>.
954c1994 1576
94bdecf9 1577 void Move(void* src, void* dest, int nitems, type)
954c1994 1578
497711e7 1579=for hackers
94bdecf9 1580Found in file handy.h
497711e7 1581
735fe74b
NC
1582=item MoveD
1583
1584Like C<Move> but returns dest. Useful for encouraging compilers to tail-call
1585optimise.
1586
1587 void * MoveD(void* src, void* dest, int nitems, type)
1588
1589=for hackers
1590Found in file handy.h
1591
94bdecf9 1592=item New
954c1994 1593
94bdecf9 1594The XSUB-writer's interface to the C C<malloc> function.
954c1994 1595
94bdecf9 1596 void New(int id, void* ptr, int nitems, type)
954c1994 1597
497711e7 1598=for hackers
94bdecf9 1599Found in file handy.h
497711e7 1600
94bdecf9 1601=item Newc
954c1994 1602
94bdecf9
JH
1603The XSUB-writer's interface to the C C<malloc> function, with
1604cast.
954c1994 1605
94bdecf9 1606 void Newc(int id, void* ptr, int nitems, type, cast)
954c1994 1607
497711e7 1608=for hackers
94bdecf9 1609Found in file handy.h
954c1994 1610
94bdecf9 1611=item Newz
954c1994 1612
94bdecf9
JH
1613The XSUB-writer's interface to the C C<malloc> function. The allocated
1614memory is zeroed with C<memzero>.
954c1994 1615
94bdecf9 1616 void Newz(int id, void* ptr, int nitems, type)
954c1994 1617
497711e7
GS
1618=for hackers
1619Found in file handy.h
1620
9965345d
JH
1621=item Poison
1622
1623Fill up memory with a pattern (byte 0xAB over and over again) that
1624hopefully catches attempts to access uninitialized memory.
1625
1626 void Poison(void* dest, int nitems, type)
1627
1628=for hackers
1629Found in file handy.h
1630
94bdecf9 1631=item Renew
954c1994 1632
94bdecf9 1633The XSUB-writer's interface to the C C<realloc> function.
954c1994 1634
94bdecf9 1635 void Renew(void* ptr, int nitems, type)
954c1994 1636
497711e7
GS
1637=for hackers
1638Found in file handy.h
1639
94bdecf9 1640=item Renewc
954c1994 1641
94bdecf9
JH
1642The XSUB-writer's interface to the C C<realloc> function, with
1643cast.
954c1994 1644
94bdecf9 1645 void Renewc(void* ptr, int nitems, type, cast)
954c1994 1646
497711e7 1647=for hackers
94bdecf9 1648Found in file handy.h
497711e7 1649
94bdecf9 1650=item Safefree
954c1994 1651
94bdecf9 1652The XSUB-writer's interface to the C C<free> function.
954c1994 1653
94bdecf9 1654 void Safefree(void* ptr)
954c1994 1655
497711e7
GS
1656=for hackers
1657Found in file handy.h
1658
94bdecf9 1659=item savepv
954c1994 1660
641d4181
JH
1661Perl's version of C<strdup()>. Returns a pointer to a newly allocated
1662string which is a duplicate of C<pv>. The size of the string is
1663determined by C<strlen()>. The memory allocated for the new string can
1664be freed with the C<Safefree()> function.
954c1994 1665
641d4181 1666 char* savepv(const char* pv)
954c1994 1667
497711e7 1668=for hackers
94bdecf9 1669Found in file util.c
497711e7 1670
94bdecf9 1671=item savepvn
954c1994 1672
641d4181
JH
1673Perl's version of what C<strndup()> would be if it existed. Returns a
1674pointer to a newly allocated string which is a duplicate of the first
1675C<len> bytes from C<pv>. The memory allocated for the new string can be
1676freed with the C<Safefree()> function.
954c1994 1677
641d4181 1678 char* savepvn(const char* pv, I32 len)
954c1994 1679
497711e7 1680=for hackers
94bdecf9 1681Found in file util.c
497711e7 1682
a4f1a029
NIS
1683=item savesharedpv
1684
641d4181
JH
1685A version of C<savepv()> which allocates the duplicate string in memory
1686which is shared between threads.
a4f1a029 1687
641d4181 1688 char* savesharedpv(const char* pv)
a4f1a029
NIS
1689
1690=for hackers
1691Found in file util.c
1692
a563e516
NC
1693=item savesvpv
1694
16ac37f7 1695A version of C<savepv()>/C<savepvn()> which gets the string to duplicate from
a563e516
NC
1696the passed in SV using C<SvPV()>
1697
1698 char* savesvpv(SV* sv)
1699
1700=for hackers
1701Found in file util.c
1702
94bdecf9 1703=item StructCopy
954c1994 1704
94bdecf9 1705This is an architecture-independent macro to copy one structure to another.
954c1994 1706
94bdecf9 1707 void StructCopy(type src, type dest, type)
954c1994 1708
497711e7 1709=for hackers
94bdecf9 1710Found in file handy.h
497711e7 1711
94bdecf9 1712=item Zero
954c1994 1713
94bdecf9
JH
1714The XSUB-writer's interface to the C C<memzero> function. The C<dest> is the
1715destination, C<nitems> is the number of items, and C<type> is the type.
954c1994 1716
94bdecf9 1717 void Zero(void* dest, int nitems, type)
954c1994 1718
497711e7 1719=for hackers
94bdecf9 1720Found in file handy.h
497711e7 1721
735fe74b
NC
1722=item ZeroD
1723
1724Like C<Zero> but returns dest. Useful for encouraging compilers to tail-call
1725optimise.
1726
1727 void * ZeroD(void* dest, int nitems, type)
1728
1729=for hackers
1730Found in file handy.h
1731
954c1994 1732
94bdecf9 1733=back
954c1994 1734
94bdecf9 1735=head1 Miscellaneous Functions
954c1994 1736
94bdecf9 1737=over 8
497711e7 1738
94bdecf9 1739=item fbm_compile
8b4ac5a4 1740
94bdecf9
JH
1741Analyses the string in order to make fast searches on it using fbm_instr()
1742-- the Boyer-Moore algorithm.
8b4ac5a4 1743
94bdecf9 1744 void fbm_compile(SV* sv, U32 flags)
8b4ac5a4
JH
1745
1746=for hackers
94bdecf9 1747Found in file util.c
8b4ac5a4 1748
94bdecf9 1749=item fbm_instr
954c1994 1750
94bdecf9
JH
1751Returns the location of the SV in the string delimited by C<str> and
1752C<strend>. It returns C<Nullch> if the string can't be found. The C<sv>
1753does not have to be fbm_compiled, but the search will not be as fast
1754then.
954c1994 1755
94bdecf9 1756 char* fbm_instr(unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags)
954c1994 1757
497711e7 1758=for hackers
94bdecf9 1759Found in file util.c
497711e7 1760
94bdecf9 1761=item form
954c1994 1762
94bdecf9
JH
1763Takes a sprintf-style format pattern and conventional
1764(non-SV) arguments and returns the formatted string.
954c1994 1765
94bdecf9 1766 (char *) Perl_form(pTHX_ const char* pat, ...)
954c1994 1767
94bdecf9 1768can be used any place a string (char *) is required:
497711e7 1769
94bdecf9 1770 char * s = Perl_form("%d.%d",major,minor);
954c1994 1771
94bdecf9
JH
1772Uses a single private buffer so if you want to format several strings you
1773must explicitly copy the earlier strings away (and free the copies when you
1774are done).
954c1994 1775
94bdecf9 1776 char* form(const char* pat, ...)
954c1994 1777
497711e7 1778=for hackers
94bdecf9 1779Found in file util.c
497711e7 1780
94bdecf9 1781=item getcwd_sv
954c1994 1782
94bdecf9 1783Fill the sv with current working directory
954c1994 1784
94bdecf9 1785 int getcwd_sv(SV* sv)
954c1994 1786
497711e7 1787=for hackers
94bdecf9 1788Found in file util.c
497711e7 1789
94bdecf9 1790=item strEQ
954c1994 1791
94bdecf9 1792Test two strings to see if they are equal. Returns true or false.
954c1994 1793
94bdecf9 1794 bool strEQ(char* s1, char* s2)
954c1994 1795
497711e7 1796=for hackers
94bdecf9 1797Found in file handy.h
497711e7 1798
94bdecf9 1799=item strGE
1c846c1f 1800
94bdecf9
JH
1801Test two strings to see if the first, C<s1>, is greater than or equal to
1802the second, C<s2>. Returns true or false.
1c846c1f 1803
94bdecf9 1804 bool strGE(char* s1, char* s2)
1c846c1f
NIS
1805
1806=for hackers
94bdecf9 1807Found in file handy.h
1c846c1f 1808
94bdecf9 1809=item strGT
954c1994 1810
94bdecf9
JH
1811Test two strings to see if the first, C<s1>, is greater than the second,
1812C<s2>. Returns true or false.
954c1994 1813
94bdecf9 1814 bool strGT(char* s1, char* s2)
954c1994 1815
497711e7 1816=for hackers
94bdecf9 1817Found in file handy.h
497711e7 1818
94bdecf9 1819=item strLE
954c1994 1820
94bdecf9
JH
1821Test two strings to see if the first, C<s1>, is less than or equal to the
1822second, C<s2>. Returns true or false.
954c1994 1823
94bdecf9 1824 bool strLE(char* s1, char* s2)
954c1994 1825
497711e7 1826=for hackers
94bdecf9 1827Found in file handy.h
497711e7 1828
94bdecf9 1829=item strLT
1a3327fb 1830
94bdecf9
JH
1831Test two strings to see if the first, C<s1>, is less than the second,
1832C<s2>. Returns true or false.
1a3327fb 1833
94bdecf9 1834 bool strLT(char* s1, char* s2)
1a3327fb 1835
497711e7 1836=for hackers
94bdecf9 1837Found in file handy.h
497711e7 1838
94bdecf9 1839=item strNE
954c1994 1840
94bdecf9
JH
1841Test two strings to see if they are different. Returns true or
1842false.
1843
1844 bool strNE(char* s1, char* s2)
954c1994 1845
497711e7 1846=for hackers
94bdecf9 1847Found in file handy.h
497711e7 1848
94bdecf9 1849=item strnEQ
954c1994 1850
94bdecf9
JH
1851Test two strings to see if they are equal. The C<len> parameter indicates
1852the number of bytes to compare. Returns true or false. (A wrapper for
1853C<strncmp>).
1854
1855 bool strnEQ(char* s1, char* s2, STRLEN len)
954c1994 1856
497711e7 1857=for hackers
94bdecf9 1858Found in file handy.h
497711e7 1859
94bdecf9 1860=item strnNE
954c1994 1861
94bdecf9
JH
1862Test two strings to see if they are different. The C<len> parameter
1863indicates the number of bytes to compare. Returns true or false. (A
1864wrapper for C<strncmp>).
954c1994 1865
94bdecf9 1866 bool strnNE(char* s1, char* s2, STRLEN len)
954c1994 1867
497711e7
GS
1868=for hackers
1869Found in file handy.h
1870
faa4807d
JP
1871=item sv_nolocking
1872
1873Dummy routine which "locks" an SV when there is no locking module present.
1874Exists to avoid test for a NULL function pointer and because it could potentially warn under
1875some level of strict-ness.
1876
1877 void sv_nolocking(SV *)
1878
1879=for hackers
1880Found in file util.c
1881
1882=item sv_nosharing
1883
1884Dummy routine which "shares" an SV when there is no sharing module present.
1885Exists to avoid test for a NULL function pointer and because it could potentially warn under
1886some level of strict-ness.
1887
1888 void sv_nosharing(SV *)
1889
1890=for hackers
1891Found in file util.c
1892
1893=item sv_nounlocking
1894
1895Dummy routine which "unlocks" an SV when there is no locking module present.
1896Exists to avoid test for a NULL function pointer and because it could potentially warn under
1897some level of strict-ness.
1898
1899 void sv_nounlocking(SV *)
1900
1901=for hackers
1902Found in file util.c
1903
f4758303 1904
94bdecf9 1905=back
7207e29d 1906
94bdecf9 1907=head1 Numeric functions
7207e29d 1908
94bdecf9 1909=over 8
f4758303 1910
94bdecf9 1911=item grok_bin
f4758303 1912
94bdecf9
JH
1913converts a string representing a binary number to numeric form.
1914
1915On entry I<start> and I<*len> give the string to scan, I<*flags> gives
1916conversion flags, and I<result> should be NULL or a pointer to an NV.
1917The scan stops at the end of the string, or the first invalid character.
40d34c0d
SB
1918Unless C<PERL_SCAN_SILENT_ILLDIGIT> is set in I<*flags>, encountering an
1919invalid character will also trigger a warning.
1920On return I<*len> is set to the length of the scanned string,
1921and I<*flags> gives output flags.
94bdecf9 1922
1f49be52 1923If the value is <= C<UV_MAX> it is returned as a UV, the output flags are clear,
94bdecf9
JH
1924and nothing is written to I<*result>. If the value is > UV_MAX C<grok_bin>
1925returns UV_MAX, sets C<PERL_SCAN_GREATER_THAN_UV_MAX> in the output flags,
1926and writes the value to I<*result> (or the value is discarded if I<result>
1927is NULL).
1928
40d34c0d 1929The binary number may optionally be prefixed with "0b" or "b" unless
94bdecf9
JH
1930C<PERL_SCAN_DISALLOW_PREFIX> is set in I<*flags> on entry. If
1931C<PERL_SCAN_ALLOW_UNDERSCORES> is set in I<*flags> then the binary
1932number may use '_' characters to separate digits.
1933
8c18bf38 1934 UV grok_bin(char* start, STRLEN* len_p, I32* flags, NV *result)
f4758303
JP
1935
1936=for hackers
94bdecf9 1937Found in file numeric.c
f4758303 1938
94bdecf9 1939=item grok_hex
954c1994 1940
94bdecf9
JH
1941converts a string representing a hex number to numeric form.
1942
1943On entry I<start> and I<*len> give the string to scan, I<*flags> gives
1944conversion flags, and I<result> should be NULL or a pointer to an NV.
40d34c0d
SB
1945The scan stops at the end of the string, or the first invalid character.
1946Unless C<PERL_SCAN_SILENT_ILLDIGIT> is set in I<*flags>, encountering an
1947invalid character will also trigger a warning.
1948On return I<*len> is set to the length of the scanned string,
1949and I<*flags> gives output flags.
94bdecf9
JH
1950
1951If the value is <= UV_MAX it is returned as a UV, the output flags are clear,
1952and nothing is written to I<*result>. If the value is > UV_MAX C<grok_hex>
1953returns UV_MAX, sets C<PERL_SCAN_GREATER_THAN_UV_MAX> in the output flags,
1954and writes the value to I<*result> (or the value is discarded if I<result>
1955is NULL).
1956
1957The hex number may optionally be prefixed with "0x" or "x" unless
1958C<PERL_SCAN_DISALLOW_PREFIX> is set in I<*flags> on entry. If
1959C<PERL_SCAN_ALLOW_UNDERSCORES> is set in I<*flags> then the hex
1960number may use '_' characters to separate digits.
1961
8c18bf38 1962 UV grok_hex(char* start, STRLEN* len_p, I32* flags, NV *result)
954c1994 1963
497711e7 1964=for hackers
94bdecf9 1965Found in file numeric.c
497711e7 1966
94bdecf9 1967=item grok_number
954c1994 1968
94bdecf9
JH
1969Recognise (or not) a number. The type of the number is returned
1970(0 if unrecognised), otherwise it is a bit-ORed combination of
1971IS_NUMBER_IN_UV, IS_NUMBER_GREATER_THAN_UV_MAX, IS_NUMBER_NOT_INT,
1972IS_NUMBER_NEG, IS_NUMBER_INFINITY, IS_NUMBER_NAN (defined in perl.h).
1973
1974If the value of the number can fit an in UV, it is returned in the *valuep
1975IS_NUMBER_IN_UV will be set to indicate that *valuep is valid, IS_NUMBER_IN_UV
1976will never be set unless *valuep is valid, but *valuep may have been assigned
1977to during processing even though IS_NUMBER_IN_UV is not set on return.
1978If valuep is NULL, IS_NUMBER_IN_UV will be set for the same cases as when
1979valuep is non-NULL, but no actual assignment (or SEGV) will occur.
1980
1981IS_NUMBER_NOT_INT will be set with IS_NUMBER_IN_UV if trailing decimals were
1982seen (in which case *valuep gives the true value truncated to an integer), and
1983IS_NUMBER_NEG if the number is negative (in which case *valuep holds the
1984absolute value). IS_NUMBER_IN_UV is not set if e notation was used or the
1985number is larger than a UV.
1986
1987 int grok_number(const char *pv, STRLEN len, UV *valuep)
954c1994 1988
497711e7 1989=for hackers
94bdecf9 1990Found in file numeric.c
497711e7 1991
94bdecf9 1992=item grok_numeric_radix
954c1994 1993
94bdecf9
JH
1994Scan and skip for a numeric decimal separator (radix).
1995
1996 bool grok_numeric_radix(const char **sp, const char *send)
954c1994 1997
497711e7 1998=for hackers
94bdecf9 1999Found in file numeric.c
497711e7 2000
94bdecf9 2001=item grok_oct
954c1994 2002
40d34c0d
SB
2003converts a string representing an octal number to numeric form.
2004
2005On entry I<start> and I<*len> give the string to scan, I<*flags> gives
2006conversion flags, and I<result> should be NULL or a pointer to an NV.
2007The scan stops at the end of the string, or the first invalid character.
2008Unless C<PERL_SCAN_SILENT_ILLDIGIT> is set in I<*flags>, encountering an
2009invalid character will also trigger a warning.
2010On return I<*len> is set to the length of the scanned string,
2011and I<*flags> gives output flags.
2012
2013If the value is <= UV_MAX it is returned as a UV, the output flags are clear,
2014and nothing is written to I<*result>. If the value is > UV_MAX C<grok_oct>
2015returns UV_MAX, sets C<PERL_SCAN_GREATER_THAN_UV_MAX> in the output flags,
2016and writes the value to I<*result> (or the value is discarded if I<result>
2017is NULL).
2018
2019If C<PERL_SCAN_ALLOW_UNDERSCORES> is set in I<*flags> then the octal
2020number may use '_' characters to separate digits.
94bdecf9 2021
8c18bf38 2022 UV grok_oct(char* start, STRLEN* len_p, I32* flags, NV *result)
954c1994 2023
497711e7 2024=for hackers
94bdecf9 2025Found in file numeric.c
497711e7 2026
94bdecf9 2027=item scan_bin
954c1994 2028
94bdecf9
JH
2029For backwards compatibility. Use C<grok_bin> instead.
2030
ec6f298e 2031 NV scan_bin(char* start, STRLEN len, STRLEN* retlen)
954c1994 2032
497711e7 2033=for hackers
94bdecf9 2034Found in file numeric.c
497711e7 2035
94bdecf9 2036=item scan_hex
954c1994 2037
94bdecf9
JH
2038For backwards compatibility. Use C<grok_hex> instead.
2039
ec6f298e 2040 NV scan_hex(char* start, STRLEN len, STRLEN* retlen)
954c1994 2041
497711e7 2042=for hackers
94bdecf9 2043Found in file numeric.c
497711e7 2044
94bdecf9 2045=item scan_oct
954c1994 2046
94bdecf9 2047For backwards compatibility. Use C<grok_oct> instead.
954c1994 2048
ec6f298e 2049 NV scan_oct(char* start, STRLEN len, STRLEN* retlen)
954c1994 2050
497711e7 2051=for hackers
94bdecf9 2052Found in file numeric.c
497711e7 2053
645c22ef 2054
94bdecf9 2055=back
645c22ef 2056
94bdecf9
JH
2057=head1 Optree Manipulation Functions
2058
2059=over 8
2060
2061=item cv_const_sv
2062
2063If C<cv> is a constant sub eligible for inlining. returns the constant
2064value returned by the sub. Otherwise, returns NULL.
2065
2066Constant subs can be created with C<newCONSTSUB> or as described in
2067L<perlsub/"Constant Functions">.
2068
2069 SV* cv_const_sv(CV* cv)
645c22ef
DM
2070
2071=for hackers
94bdecf9 2072Found in file op.c
645c22ef 2073
94bdecf9 2074=item newCONSTSUB
954c1994 2075
94bdecf9
JH
2076Creates a constant sub equivalent to Perl C<sub FOO () { 123 }> which is
2077eligible for inlining at compile-time.
954c1994 2078
ec6f298e 2079 CV* newCONSTSUB(HV* stash, char* name, SV* sv)
954c1994 2080
497711e7 2081=for hackers
94bdecf9 2082Found in file op.c
497711e7 2083
94bdecf9 2084=item newXS
954c1994 2085
94bdecf9 2086Used by C<xsubpp> to hook up XSUBs as Perl subs.
954c1994 2087
94bdecf9
JH
2088=for hackers
2089Found in file op.c
2090
2091
2092=back
2093
d7afa7f5
JH
2094=head1 Pad Data Structures
2095
2096=over 8
2097
2098=item pad_sv
2099
2100Get the value at offset po in the current pad.
2101Use macro PAD_SV instead of calling this function directly.
2102
2103 SV* pad_sv(PADOFFSET po)
2104
2105=for hackers
2106Found in file pad.c
2107
2108
2109=back
2110
94bdecf9
JH
2111=head1 Stack Manipulation Macros
2112
2113=over 8
2114
2115=item dMARK
954c1994 2116
94bdecf9
JH
2117Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and
2118C<dORIGMARK>.
954c1994 2119
94bdecf9 2120 dMARK;
954c1994 2121
497711e7 2122=for hackers
94bdecf9 2123Found in file pp.h
497711e7 2124
94bdecf9 2125=item dORIGMARK
954c1994 2126
94bdecf9 2127Saves the original stack mark for the XSUB. See C<ORIGMARK>.
954c1994 2128
94bdecf9 2129 dORIGMARK;
954c1994 2130
497711e7 2131=for hackers
94bdecf9 2132Found in file pp.h
497711e7 2133
94bdecf9 2134=item dSP
954c1994 2135
94bdecf9
JH
2136Declares a local copy of perl's stack pointer for the XSUB, available via
2137the C<SP> macro. See C<SP>.
954c1994 2138
94bdecf9 2139 dSP;
954c1994 2140
497711e7 2141=for hackers
94bdecf9 2142Found in file pp.h
497711e7 2143
94bdecf9 2144=item EXTEND
954c1994 2145
94bdecf9
JH
2146Used to extend the argument stack for an XSUB's return values. Once
2147used, guarantees that there is room for at least C<nitems> to be pushed
2148onto the stack.
954c1994 2149
94bdecf9 2150 void EXTEND(SP, int nitems)
954c1994 2151
497711e7 2152=for hackers
94bdecf9 2153Found in file pp.h
954c1994 2154
94bdecf9 2155=item MARK
954c1994 2156
94bdecf9 2157Stack marker variable for the XSUB. See C<dMARK>.
954c1994 2158
497711e7 2159=for hackers
94bdecf9 2160Found in file pp.h
954c1994 2161
fb7377f8
NC
2162=item mPUSHi
2163
2164Push an integer onto the stack. The stack must have room for this element.
2165Handles 'set' magic. Does not use C<TARG>. See also C<PUSHi>, C<mXPUSHi>
2166and C<XPUSHi>.
2167
2168 void mPUSHi(IV iv)
2169
2170=for hackers
2171Found in file pp.h
2172
2173=item mPUSHn
2174
2175Push a double onto the stack. The stack must have room for this element.
2176Handles 'set' magic. Does not use C<TARG>. See also C<PUSHn>, C<mXPUSHn>
2177and C<XPUSHn>.
2178
2179 void mPUSHn(NV nv)
2180
2181=for hackers
2182Found in file pp.h
2183
2184=item mPUSHp
2185
2186Push a string onto the stack. The stack must have room for this element.
2187The C<len> indicates the length of the string. Handles 'set' magic. Does
2188not use C<TARG>. See also C<PUSHp>, C<mXPUSHp> and C<XPUSHp>.
2189
2190 void mPUSHp(char* str, STRLEN len)
2191
2192=for hackers
2193Found in file pp.h
2194
2195=item mPUSHu
2196
2197Push an unsigned integer onto the stack. The stack must have room for this
2198element. Handles 'set' magic. Does not use C<TARG>. See also C<PUSHu>,
2199C<mXPUSHu> and C<XPUSHu>.
2200
2201 void mPUSHu(UV uv)
2202
2203=for hackers
2204Found in file pp.h
2205
2206=item mXPUSHi
2207
2208Push an integer onto the stack, extending the stack if necessary. Handles
2209'set' magic. Does not use C<TARG>. See also C<XPUSHi>, C<mPUSHi> and
2210C<PUSHi>.
2211
2212 void mXPUSHi(IV iv)
2213
2214=for hackers
2215Found in file pp.h
2216
2217=item mXPUSHn
2218
2219Push a double onto the stack, extending the stack if necessary. Handles
2220'set' magic. Does not use C<TARG>. See also C<XPUSHn>, C<mPUSHn> and
2221C<PUSHn>.
2222
2223 void mXPUSHn(NV nv)
2224
2225=for hackers
2226Found in file pp.h
2227
2228=item mXPUSHp
2229
2230Push a string onto the stack, extending the stack if necessary. The C<len>
2231indicates the length of the string. Handles 'set' magic. Does not use
2232C<TARG>. See also C<XPUSHp>, C<mPUSHp> and C<PUSHp>.
2233
2234 void mXPUSHp(char* str, STRLEN len)
2235
2236=for hackers
2237Found in file pp.h
2238
2239=item mXPUSHu
2240
2241Push an unsigned integer onto the stack, extending the stack if necessary.
2242Handles 'set' magic. Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu>
2243and C<PUSHu>.
2244
2245 void mXPUSHu(UV uv)
2246
2247=for hackers
2248Found in file pp.h
2249
94bdecf9 2250=item ORIGMARK
954c1994 2251
94bdecf9 2252The original stack mark for the XSUB. See C<dORIGMARK>.
954c1994 2253
497711e7 2254=for hackers
94bdecf9 2255Found in file pp.h
497711e7 2256
954c1994
GS
2257=item POPi
2258
2259Pops an integer off the stack.
2260
2261 IV POPi
2262
497711e7
GS
2263=for hackers
2264Found in file pp.h
2265
954c1994
GS
2266=item POPl
2267
2268Pops a long off the stack.
2269
2270 long POPl
2271
497711e7
GS
2272=for hackers
2273Found in file pp.h
2274
954c1994
GS
2275=item POPn
2276
2277Pops a double off the stack.
2278
2279 NV POPn
2280
497711e7
GS
2281=for hackers
2282Found in file pp.h
2283
954c1994
GS
2284=item POPp
2285
fa519979
JH
2286Pops a string off the stack. Deprecated. New code should provide
2287a STRLEN n_a and use POPpx.
954c1994
GS
2288
2289 char* POPp
2290
497711e7
GS
2291=for hackers
2292Found in file pp.h
2293
fa519979
JH
2294=item POPpbytex
2295
2296Pops a string off the stack which must consist of bytes i.e. characters < 256.
2297Requires a variable STRLEN n_a in scope.
2298
2299 char* POPpbytex
2300
2301=for hackers
2302Found in file pp.h
2303
2304=item POPpx
2305
2306Pops a string off the stack.
2307Requires a variable STRLEN n_a in scope.
2308
2309 char* POPpx
2310
2311=for hackers
2312Found in file pp.h
2313
954c1994
GS
2314=item POPs
2315
2316Pops an SV off the stack.
2317
2318 SV* POPs
2319
497711e7
GS
2320=for hackers
2321Found in file pp.h
2322
954c1994
GS
2323=item PUSHi
2324
2325Push an integer onto the stack. The stack must have room for this element.
fb7377f8
NC
2326Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be
2327called to declare it. Do not call multiple C<TARG>-oriented macros to
2328return lists from XSUB's - see C<mPUSHi> instead. See also C<XPUSHi> and
2329C<mXPUSHi>.
954c1994
GS
2330
2331 void PUSHi(IV iv)
2332
497711e7
GS
2333=for hackers
2334Found in file pp.h
2335
954c1994
GS
2336=item PUSHMARK
2337
2338Opening bracket for arguments on a callback. See C<PUTBACK> and
2339L<perlcall>.
2340
611e9550 2341 void PUSHMARK(SP)
954c1994 2342
497711e7
GS
2343=for hackers
2344Found in file pp.h
2345
fb7377f8
NC
2346=item PUSHmortal
2347
2348Push a new mortal SV onto the stack. The stack must have room for this
2349element. Does not handle 'set' magic. Does not use C<TARG>. See also
2350C<PUSHs>, C<XPUSHmortal> and C<XPUSHs>.
2351
2352 void PUSHmortal()
2353
2354=for hackers
2355Found in file pp.h
2356
954c1994
GS
2357=item PUSHn
2358
2359Push a double onto the stack. The stack must have room for this element.
fb7377f8
NC
2360Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be
2361called to declare it. Do not call multiple C<TARG>-oriented macros to
2362return lists from XSUB's - see C<mPUSHn> instead. See also C<XPUSHn> and
2363C<mXPUSHn>.
954c1994
GS
2364
2365 void PUSHn(NV nv)
2366
497711e7
GS
2367=for hackers
2368Found in file pp.h
2369
954c1994
GS
2370=item PUSHp
2371
2372Push a string onto the stack. The stack must have room for this element.
fb7377f8
NC
2373The C<len> indicates the length of the string. Handles 'set' magic. Uses
2374C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to declare it. Do not
2375call multiple C<TARG>-oriented macros to return lists from XSUB's - see
2376C<mPUSHp> instead. See also C<XPUSHp> and C<mXPUSHp>.
954c1994
GS
2377
2378 void PUSHp(char* str, STRLEN len)
2379
497711e7
GS
2380=for hackers
2381Found in file pp.h
2382
954c1994
GS
2383=item PUSHs
2384
1c846c1f 2385Push an SV onto the stack. The stack must have room for this element.
fb7377f8
NC
2386Does not handle 'set' magic. Does not use C<TARG>. See also C<PUSHmortal>,
2387C<XPUSHs> and C<XPUSHmortal>.
954c1994
GS
2388
2389 void PUSHs(SV* sv)
2390
497711e7
GS
2391=for hackers
2392Found in file pp.h
2393
954c1994
GS
2394=item PUSHu
2395
2396Push an unsigned integer onto the stack. The stack must have room for this
fb7377f8
NC
2397element. Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG>
2398should be called to declare it. Do not call multiple C<TARG>-oriented
2399macros to return lists from XSUB's - see C<mPUSHu> instead. See also
2400C<XPUSHu> and C<mXPUSHu>.
954c1994
GS
2401
2402 void PUSHu(UV uv)
2403
497711e7
GS
2404=for hackers
2405Found in file pp.h
2406
954c1994
GS
2407=item PUTBACK
2408
2409Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>.
2410See C<PUSHMARK> and L<perlcall> for other uses.
2411
2412 PUTBACK;
2413
497711e7
GS
2414=for hackers
2415Found in file pp.h
2416
94bdecf9 2417=item SP
d2cc3551 2418
94bdecf9
JH
2419Stack pointer. This is usually handled by C<xsubpp>. See C<dSP> and
2420C<SPAGAIN>.
d2cc3551 2421
94bdecf9
JH
2422=for hackers
2423Found in file pp.h
2424
2425=item SPAGAIN
2426
2427Refetch the stack pointer. Used after a callback. See L<perlcall>.
2428
2429 SPAGAIN;
d2cc3551
JH
2430
2431=for hackers
94bdecf9 2432Found in file pp.h
d2cc3551 2433
94bdecf9 2434=item XPUSHi
954c1994 2435
94bdecf9 2436Push an integer onto the stack, extending the stack if necessary. Handles
fb7377f8
NC
2437'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to
2438declare it. Do not call multiple C<TARG>-oriented macros to return lists
2439from XSUB's - see C<mXPUSHi> instead. See also C<PUSHi> and C<mPUSHi>.
954c1994 2440
94bdecf9 2441 void XPUSHi(IV iv)
954c1994 2442
497711e7 2443=for hackers
94bdecf9 2444Found in file pp.h
497711e7 2445
fb7377f8
NC
2446=item XPUSHmortal
2447
2448Push a new mortal SV onto the stack, extending the stack if necessary. Does
2449not handle 'set' magic. Does not use C<TARG>. See also C<XPUSHs>,
2450C<PUSHmortal> and C<PUSHs>.
2451
2452 void XPUSHmortal()
2453
2454=for hackers
2455Found in file pp.h
2456
94bdecf9 2457=item XPUSHn
954c1994 2458
94bdecf9 2459Push a double onto the stack, extending the stack if necessary. Handles
fb7377f8
NC
2460'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to
2461declare it. Do not call multiple C<TARG>-oriented macros to return lists
2462from XSUB's - see C<mXPUSHn> instead. See also C<PUSHn> and C<mPUSHn>.
954c1994 2463
94bdecf9 2464 void XPUSHn(NV nv)
954c1994 2465
497711e7 2466=for hackers
94bdecf9 2467Found in file pp.h
497711e7 2468
94bdecf9 2469=item XPUSHp
954c1994 2470
94bdecf9 2471Push a string onto the stack, extending the stack if necessary. The C<len>
fb7377f8
NC
2472indicates the length of the string. Handles 'set' magic. Uses C<TARG>, so
2473C<dTARGET> or C<dXSTARG> should be called to declare it. Do not call
2474multiple C<TARG>-oriented macros to return lists from XSUB's - see
2475C<mXPUSHp> instead. See also C<PUSHp> and C<mPUSHp>.
954c1994 2476
94bdecf9 2477 void XPUSHp(char* str, STRLEN len)
954c1994 2478
94bdecf9
JH
2479=for hackers
2480Found in file pp.h
2481
2482=item XPUSHs
2483
2484Push an SV onto the stack, extending the stack if necessary. Does not
fb7377f8
NC
2485handle 'set' magic. Does not use C<TARG>. See also C<XPUSHmortal>,
2486C<PUSHs> and C<PUSHmortal>.
94bdecf9
JH
2487
2488 void XPUSHs(SV* sv)
954c1994 2489
497711e7 2490=for hackers
94bdecf9 2491Found in file pp.h
497711e7 2492
94bdecf9 2493=item XPUSHu
954c1994 2494
94bdecf9 2495Push an unsigned integer onto the stack, extending the stack if necessary.
fb7377f8
NC
2496Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be
2497called to declare it. Do not call multiple C<TARG>-oriented macros to
2498return lists from XSUB's - see C<mXPUSHu> instead. See also C<PUSHu> and
2499C<mPUSHu>.
954c1994 2500
94bdecf9
JH
2501 void XPUSHu(UV uv)
2502
2503=for hackers
2504Found in file pp.h
2505
2506=item XSRETURN
2507
2508Return from XSUB, indicating number of items on the stack. This is usually
2509handled by C<xsubpp>.
2510
2511 void XSRETURN(int nitems)
954c1994 2512
497711e7
GS
2513=for hackers
2514Found in file XSUB.h
2515
24303b65
NC
2516=item XSRETURN_EMPTY
2517
2518Return an empty list from an XSUB immediately.
2519
2520 XSRETURN_EMPTY;
2521
2522=for hackers
2523Found in file XSUB.h
2524
94bdecf9 2525=item XSRETURN_IV
954c1994 2526
94bdecf9 2527Return an integer from an XSUB immediately. Uses C<XST_mIV>.
954c1994 2528
94bdecf9 2529 void XSRETURN_IV(IV iv)
954c1994 2530
497711e7 2531=for hackers
94bdecf9 2532Found in file XSUB.h
497711e7 2533
94bdecf9 2534=item XSRETURN_NO
954c1994 2535
94bdecf9 2536Return C<&PL_sv_no> from an XSUB immediately. Uses C<XST_mNO>.
954c1994 2537
94bdecf9 2538 XSRETURN_NO;
954c1994 2539
497711e7 2540=for hackers
94bdecf9 2541Found in file XSUB.h
497711e7 2542
94bdecf9 2543=item XSRETURN_NV
954c1994 2544
94bdecf9 2545Return a double from an XSUB immediately. Uses C<XST_mNV>.
954c1994 2546
94bdecf9 2547 void XSRETURN_NV(NV nv)
954c1994 2548
497711e7 2549=for hackers
94bdecf9
JH
2550Found in file XSUB.h
2551
2552=item XSRETURN_PV
2553
2554Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>.
2555
2556 void XSRETURN_PV(char* str)
2557
2558=for hackers
2559Found in file XSUB.h
2560
2561=item XSRETURN_UNDEF
2562
2563Return C<&PL_sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>.
2564
2565 XSRETURN_UNDEF;
2566
2567=for hackers
2568Found in file XSUB.h
2569
5aa55526
EM
2570=item XSRETURN_UV
2571
2572Return an integer from an XSUB immediately. Uses C<XST_mUV>.
2573
2574 void XSRETURN_UV(IV uv)
2575
2576=for hackers
2577Found in file XSUB.h
2578
94bdecf9
JH
2579=item XSRETURN_YES
2580
2581Return C<&PL_sv_yes> from an XSUB immediately. Uses C<XST_mYES>.
2582
2583 XSRETURN_YES;
2584
2585=for hackers
2586Found in file XSUB.h
2587
2588=item XST_mIV
2589
2590Place an integer into the specified position C<pos> on the stack. The
2591value is stored in a new mortal SV.
2592
2593 void XST_mIV(int pos, IV iv)
2594
2595=for hackers
2596Found in file XSUB.h
2597
2598=item XST_mNO
2599
2600Place C<&PL_sv_no> into the specified position C<pos> on the
2601stack.
2602
2603 void XST_mNO(int pos)
2604
2605=for hackers
2606Found in file XSUB.h
2607
2608=item XST_mNV
2609
2610Place a double into the specified position C<pos> on the stack. The value
2611is stored in a new mortal SV.
2612
2613 void XST_mNV(int pos, NV nv)
2614
2615=for hackers
2616Found in file XSUB.h
2617
2618=item XST_mPV
2619
2620Place a copy of a string into the specified position C<pos> on the stack.
2621The value is stored in a new mortal SV.
2622
2623 void XST_mPV(int pos, char* str)
2624
2625=for hackers
2626Found in file XSUB.h
2627
2628=item XST_mUNDEF
2629
2630Place C<&PL_sv_undef> into the specified position C<pos> on the
2631stack.
2632
2633 void XST_mUNDEF(int pos)
2634
2635=for hackers
2636Found in file XSUB.h
2637
2638=item XST_mYES
2639
2640Place C<&PL_sv_yes> into the specified position C<pos> on the
2641stack.
2642
2643 void XST_mYES(int pos)
2644
2645=for hackers
2646Found in file XSUB.h
2647
2648
2649=back
2650
2651=head1 SV Flags
497711e7 2652
94bdecf9 2653=over 8
954c1994 2654
94bdecf9 2655=item svtype
954c1994 2656
94bdecf9
JH
2657An enum of flags for Perl types. These are found in the file B<sv.h>
2658in the C<svtype> enum. Test these flags with the C<SvTYPE> macro.
954c1994 2659
497711e7 2660=for hackers
94bdecf9 2661Found in file sv.h
6e9d1081 2662
94bdecf9 2663=item SVt_IV
6e9d1081 2664
94bdecf9 2665Integer type flag for scalars. See C<svtype>.
6e9d1081
NC
2666
2667=for hackers
94bdecf9 2668Found in file sv.h
6e9d1081 2669
94bdecf9 2670=item SVt_NV
6e9d1081 2671
94bdecf9 2672Double type flag for scalars. See C<svtype>.
6e9d1081
NC
2673
2674=for hackers
94bdecf9 2675Found in file sv.h
6e9d1081 2676
94bdecf9 2677=item SVt_PV
6e9d1081 2678
94bdecf9 2679Pointer type flag for scalars. See C<svtype>.
6e9d1081
NC
2680
2681=for hackers
94bdecf9 2682Found in file sv.h
cd1ee231 2683
94bdecf9 2684=item SVt_PVAV
cd1ee231 2685
94bdecf9 2686Type flag for arrays. See C<svtype>.
cd1ee231
JH
2687
2688=for hackers
94bdecf9 2689Found in file sv.h
cd1ee231 2690
94bdecf9 2691=item SVt_PVCV
cd1ee231 2692
94bdecf9 2693Type flag for code refs. See C<svtype>.
cd1ee231
JH
2694
2695=for hackers
94bdecf9 2696Found in file sv.h
cd1ee231 2697
94bdecf9 2698=item SVt_PVHV
cd1ee231 2699
94bdecf9 2700Type flag for hashes. See C<svtype>.
cd1ee231
JH
2701
2702=for hackers
94bdecf9 2703Found in file sv.h
cd1ee231 2704
94bdecf9 2705=item SVt_PVMG
cd1ee231 2706
94bdecf9 2707Type flag for blessed scalars. See C<svtype>.
cd1ee231
JH
2708
2709=for hackers
94bdecf9 2710Found in file sv.h
cd1ee231 2711
cd1ee231 2712
94bdecf9 2713=back
cd1ee231 2714
94bdecf9 2715=head1 SV Manipulation Functions
cd1ee231 2716
94bdecf9 2717=over 8
cd1ee231 2718
94bdecf9 2719=item get_sv
cd1ee231 2720
94bdecf9
JH
2721Returns the SV of the specified Perl scalar. If C<create> is set and the
2722Perl variable does not exist then it will be created. If C<create> is not
2723set and the variable does not exist then NULL is returned.
2724
2725NOTE: the perl_ form of this function is deprecated.
2726
2727 SV* get_sv(const char* name, I32 create)
cd1ee231
JH
2728
2729=for hackers
94bdecf9 2730Found in file perl.c
cd1ee231 2731
94bdecf9 2732=item looks_like_number
cd1ee231 2733
94bdecf9
JH
2734Test if the content of an SV looks like a number (or is a number).
2735C<Inf> and C<Infinity> are treated as numbers (so will not issue a
2736non-numeric warning), even if your atof() doesn't grok them.
cd1ee231 2737
94bdecf9 2738 I32 looks_like_number(SV* sv)
cd1ee231
JH
2739
2740=for hackers
94bdecf9 2741Found in file sv.c
2a5a0c38 2742
94bdecf9 2743=item newRV_inc
2a5a0c38 2744
94bdecf9
JH
2745Creates an RV wrapper for an SV. The reference count for the original SV is
2746incremented.
2a5a0c38 2747
94bdecf9 2748 SV* newRV_inc(SV* sv)
2a5a0c38
JH
2749
2750=for hackers
94bdecf9 2751Found in file sv.h
2a5a0c38 2752
94bdecf9 2753=item newRV_noinc
954c1994 2754
94bdecf9
JH
2755Creates an RV wrapper for an SV. The reference count for the original
2756SV is B<not> incremented.
2757
2758 SV* newRV_noinc(SV *sv)
954c1994 2759
497711e7 2760=for hackers
94bdecf9 2761Found in file sv.c
497711e7 2762
24303b65
NC
2763=item NEWSV
2764
2765Creates a new SV. A non-zero C<len> parameter indicates the number of
2766bytes of preallocated string space the SV should have. An extra byte for a
2767tailing NUL is also reserved. (SvPOK is not set for the SV even if string
2768space is allocated.) The reference count for the new SV is set to 1.
2769C<id> is an integer id between 0 and 1299 (used to identify leaks).
2770
2771 SV* NEWSV(int id, STRLEN len)
2772
2773=for hackers
2774Found in file handy.h
2775
94bdecf9 2776=item newSV
954c1994 2777
94bdecf9
JH
2778Create a new null SV, or if len > 0, create a new empty SVt_PV type SV
2779with an initial PV allocation of len+1. Normally accessed via the C<NEWSV>
2780macro.
954c1994 2781
94bdecf9 2782 SV* newSV(STRLEN len)
954c1994 2783
497711e7 2784=for hackers
94bdecf9 2785Found in file sv.c
497711e7 2786
94bdecf9 2787=item newSViv
954c1994 2788
94bdecf9
JH
2789Creates a new SV and copies an integer into it. The reference count for the
2790SV is set to 1.
954c1994 2791
94bdecf9 2792 SV* newSViv(IV i)
954c1994 2793
497711e7 2794=for hackers
94bdecf9 2795Found in file sv.c
497711e7 2796
94bdecf9 2797=item newSVnv
954c1994 2798
94bdecf9
JH
2799Creates a new SV and copies a floating point value into it.
2800The reference count for the SV is set to 1.
954c1994 2801
94bdecf9 2802 SV* newSVnv(NV n)
954c1994 2803
497711e7 2804=for hackers
94bdecf9 2805Found in file sv.c
497711e7 2806
94bdecf9 2807=item newSVpv
954c1994 2808
94bdecf9
JH
2809Creates a new SV and copies a string into it. The reference count for the
2810SV is set to 1. If C<len> is zero, Perl will compute the length using
2811strlen(). For efficiency, consider using C<newSVpvn> instead.
954c1994 2812
94bdecf9 2813 SV* newSVpv(const char* s, STRLEN len)
954c1994 2814
497711e7 2815=for hackers
94bdecf9 2816Found in file sv.c
497711e7 2817
94bdecf9 2818=item newSVpvf
954c1994 2819
94bdecf9
JH
2820Creates a new SV and initializes it with the string formatted like
2821C<sprintf>.
954c1994 2822
94bdecf9 2823 SV* newSVpvf(const char* pat, ...)
954c1994 2824
497711e7 2825=for hackers
94bdecf9 2826Found in file sv.c
497711e7 2827
94bdecf9 2828=item newSVpvn
954c1994 2829
94bdecf9
JH
2830Creates a new SV and copies a string into it. The reference count for the
2831SV is set to 1. Note that if C<len> is zero, Perl will create a zero length
2832string. You are responsible for ensuring that the source string is at least
611e9550 2833C<len> bytes long. If the C<s> argument is NULL the new SV will be undefined.
954c1994 2834
94bdecf9 2835 SV* newSVpvn(const char* s, STRLEN len)
954c1994 2836
497711e7 2837=for hackers
94bdecf9 2838Found in file sv.c
497711e7 2839
94bdecf9 2840=item newSVpvn_share
954c1994 2841
94bdecf9
JH
2842Creates a new SV with its SvPVX pointing to a shared string in the string
2843table. If the string does not already exist in the table, it is created
2844first. Turns on READONLY and FAKE. The string's hash is stored in the UV
2845slot of the SV; if the C<hash> parameter is non-zero, that value is used;
2846otherwise the hash is computed. The idea here is that as the string table
2847is used for shared hash keys these strings will have SvPVX == HeKEY and
2848hash lookup will avoid string compare.
954c1994 2849
94bdecf9 2850 SV* newSVpvn_share(const char* s, I32 len, U32 hash)
954c1994 2851
497711e7 2852=for hackers
94bdecf9 2853Found in file sv.c
497711e7 2854
94bdecf9 2855=item newSVrv
954c1994 2856
94bdecf9
JH
2857Creates a new SV for the RV, C<rv>, to point to. If C<rv> is not an RV then
2858it will be upgraded to one. If C<classname> is non-null then the new SV will
2859be blessed in the specified package. The new SV is returned and its
2860reference count is 1.
954c1994 2861
94bdecf9 2862 SV* newSVrv(SV* rv, const char* classname)
954c1994 2863
497711e7 2864=for hackers
94bdecf9 2865Found in file sv.c
497711e7 2866
94bdecf9 2867=item newSVsv
954c1994 2868
94bdecf9
JH
2869Creates a new SV which is an exact duplicate of the original SV.
2870(Uses C<sv_setsv>).
954c1994 2871
94bdecf9 2872 SV* newSVsv(SV* old)
954c1994 2873
497711e7 2874=for hackers
94bdecf9 2875Found in file sv.c
497711e7 2876
94bdecf9 2877=item newSVuv
954c1994 2878
94bdecf9
JH
2879Creates a new SV and copies an unsigned integer into it.
2880The reference count for the SV is set to 1.
954c1994 2881
94bdecf9 2882 SV* newSVuv(UV u)
954c1994 2883
497711e7 2884=for hackers
94bdecf9 2885Found in file sv.c
497711e7 2886
954c1994
GS
2887=item SvCUR
2888
2889Returns the length of the string which is in the SV. See C<SvLEN>.
2890
2891 STRLEN SvCUR(SV* sv)
2892
497711e7
GS
2893=for hackers
2894Found in file sv.h
2895
954c1994
GS
2896=item SvCUR_set
2897
5e7e76a3 2898Set the current length of the string which is in the SV. See C<SvCUR>.
954c1994
GS
2899
2900 void SvCUR_set(SV* sv, STRLEN len)
2901
497711e7
GS
2902=for hackers
2903Found in file sv.h
2904
94bdecf9 2905=item SvEND
954c1994 2906
94bdecf9
JH
2907Returns a pointer to the last character in the string which is in the SV.
2908See C<SvCUR>. Access the character as *(SvEND(sv)).
954c1994 2909
94bdecf9 2910 char* SvEND(SV* sv)
954c1994 2911
497711e7
GS
2912=for hackers
2913Found in file sv.h
2914
954c1994
GS
2915=item SvGROW
2916
2917Expands the character buffer in the SV so that it has room for the
2918indicated number of bytes (remember to reserve space for an extra trailing
8cf8f3d1 2919NUL character). Calls C<sv_grow> to perform the expansion if necessary.
954c1994
GS
2920Returns a pointer to the character buffer.
2921
679ac26e 2922 char * SvGROW(SV* sv, STRLEN len)
954c1994 2923
497711e7
GS
2924=for hackers
2925Found in file sv.h
2926
954c1994
GS
2927=item SvIOK
2928
2929Returns a boolean indicating whether the SV contains an integer.
2930
2931 bool SvIOK(SV* sv)
2932
497711e7
GS
2933=for hackers
2934Found in file sv.h
2935
954c1994
GS
2936=item SvIOKp
2937
2938Returns a boolean indicating whether the SV contains an integer. Checks
2939the B<private> setting. Use C<SvIOK>.
2940
2941 bool SvIOKp(SV* sv)
2942
497711e7
GS
2943=for hackers
2944Found in file sv.h
2945
e331fc52
JH
2946=item SvIOK_notUV
2947
f4758303 2948Returns a boolean indicating whether the SV contains a signed integer.
e331fc52 2949
2ef4a045 2950 bool SvIOK_notUV(SV* sv)
e331fc52
JH
2951
2952=for hackers
2953Found in file sv.h
2954
954c1994
GS
2955=item SvIOK_off
2956
2957Unsets the IV status of an SV.
2958
2959 void SvIOK_off(SV* sv)
2960
497711e7
GS
2961=for hackers
2962Found in file sv.h
2963
954c1994
GS
2964=item SvIOK_on
2965
2966Tells an SV that it is an integer.
2967
2968 void SvIOK_on(SV* sv)
2969
497711e7
GS
2970=for hackers
2971Found in file sv.h
2972
954c1994
GS
2973=item SvIOK_only
2974
2975Tells an SV that it is an integer and disables all other OK bits.
2976
2977 void SvIOK_only(SV* sv)
2978
497711e7
GS
2979=for hackers
2980Found in file sv.h
2981
e331fc52
JH
2982=item SvIOK_only_UV
2983
2984Tells and SV that it is an unsigned integer and disables all other OK bits.
2985
2986 void SvIOK_only_UV(SV* sv)
2987
2988=for hackers
2989Found in file sv.h
2990
2991=item SvIOK_UV
2992
2993Returns a boolean indicating whether the SV contains an unsigned integer.
2994
2ef4a045 2995 bool SvIOK_UV(SV* sv)
e331fc52
JH
2996
2997=for hackers
2998Found in file sv.h
2999
fd4f854d
NC
3000=item SvIsCOW
3001
3002Returns a boolean indicating whether the SV is Copy-On-Write. (either shared
3003hash key scalars, or full Copy On Write scalars if 5.9.0 is configured for
3004COW)
3005
3006 bool SvIsCOW(SV* sv)
3007
3008=for hackers
3009Found in file sv.h
3010
3011=item SvIsCOW_shared_hash
3012
3013Returns a boolean indicating whether the SV is Copy-On-Write shared hash key
3014scalar.
3015
3016 bool SvIsCOW_shared_hash(SV* sv)
3017
3018=for hackers
3019Found in file sv.h
3020
954c1994
GS
3021=item SvIV
3022
645c22ef
DM
3023Coerces the given SV to an integer and returns it. See C<SvIVx> for a
3024version which guarantees to evaluate sv only once.
954c1994
GS
3025
3026 IV SvIV(SV* sv)
3027
497711e7
GS
3028=for hackers
3029Found in file sv.h
3030
59c61330 3031=item SvIVX
954c1994 3032
59c61330
NC
3033Returns the raw value in the SV's IV slot, without checks or conversions.
3034Only use when you are sure SvIOK is true. See also C<SvIV()>.
954c1994 3035
59c61330 3036 IV SvIVX(SV* sv)
954c1994 3037
497711e7
GS
3038=for hackers
3039Found in file sv.h
3040
59c61330 3041=item SvIVx
645c22ef 3042
59c61330
NC
3043Coerces the given SV to an integer and returns it. Guarantees to evaluate
3044sv only once. Use the more efficient C<SvIV> otherwise.
645c22ef 3045
59c61330 3046 IV SvIVx(SV* sv)
645c22ef
DM
3047
3048=for hackers
3049Found in file sv.h
3050
5e7e76a3
SP
3051=item SvIV_set
3052
3053Set the value of the IV pointer in sv to val.
3054
3055 void SvIV_set(SV* sv, IV val)
3056
3057=for hackers
3058Found in file sv.h
3059
954c1994
GS
3060=item SvLEN
3061
91e74348
JH
3062Returns the size of the string buffer in the SV, not including any part
3063attributable to C<SvOOK>. See C<SvCUR>.
954c1994
GS
3064
3065 STRLEN SvLEN(SV* sv)
3066
497711e7
GS
3067=for hackers
3068Found in file sv.h
3069
5e7e76a3
SP
3070=item SvLEN_set
3071
3072Set the actual length of the string which is in the SV.
3073
3074 void SvLEN_set(SV* sv, STRLEN len)
3075
3076=for hackers
3077Found in file sv.h
3078
3079=item SvMAGIC_set
3080
3081Set the value of the MAGIC pointer in sv to val.
3082
3083 void SvMAGIC_set(SV* sv, MAGIC* val)
3084
3085=for hackers
3086Found in file sv.h
3087
954c1994
GS
3088=item SvNIOK
3089
3090Returns a boolean indicating whether the SV contains a number, integer or
3091double.
3092
3093 bool SvNIOK(SV* sv)
3094
497711e7
GS
3095=for hackers
3096Found in file sv.h
3097
954c1994
GS
3098=item SvNIOKp
3099
3100Returns a boolean indicating whether the SV contains a number, integer or
3101double. Checks the B<private> setting. Use C<SvNIOK>.
3102
3103 bool SvNIOKp(SV* sv)
3104
497711e7
GS
3105=for hackers
3106Found in file sv.h
3107
954c1994
GS
3108=item SvNIOK_off
3109
3110Unsets the NV/IV status of an SV.
3111
3112 void SvNIOK_off(SV* sv)
3113
497711e7
GS
3114=for hackers
3115Found in file sv.h
3116
954c1994
GS
3117=item SvNOK
3118
3119Returns a boolean indicating whether the SV contains a double.
3120
3121 bool SvNOK(SV* sv)
3122
497711e7
GS
3123=for hackers
3124Found in file sv.h
3125
954c1994
GS
3126=item SvNOKp
3127
3128Returns a boolean indicating whether the SV contains a double. Checks the
3129B<private> setting. Use C<SvNOK>.
3130
3131 bool SvNOKp(SV* sv)
3132
497711e7
GS
3133=for hackers
3134Found in file sv.h
3135
954c1994
GS
3136=item SvNOK_off
3137
3138Unsets the NV status of an SV.
3139
3140 void SvNOK_off(SV* sv)
3141
497711e7
GS
3142=for hackers
3143Found in file sv.h
3144
954c1994
GS
3145=item SvNOK_on
3146
3147Tells an SV that it is a double.
3148
3149 void SvNOK_on(SV* sv)
3150
497711e7
GS
3151=for hackers
3152Found in file sv.h
3153
954c1994
GS
3154=item SvNOK_only
3155
3156Tells an SV that it is a double and disables all other OK bits.
3157
3158 void SvNOK_only(SV* sv)
3159
497711e7
GS
3160=for hackers
3161Found in file sv.h
3162
954c1994
GS
3163=item SvNV
3164
645c22ef
DM
3165Coerce the given SV to a double and return it. See C<SvNVx> for a version
3166which guarantees to evaluate sv only once.
954c1994
GS
3167
3168 NV SvNV(SV* sv)
3169
497711e7
GS
3170=for hackers
3171Found in file sv.h
3172
59c61330 3173=item SvNVX
645c22ef 3174
59c61330
NC
3175Returns the raw value in the SV's NV slot, without checks or conversions.
3176Only use when you are sure SvNOK is true. See also C<SvNV()>.
645c22ef 3177
59c61330 3178 NV SvNVX(SV* sv)
645c22ef
DM
3179
3180=for hackers
3181Found in file sv.h
3182
59c61330 3183=item SvNVx
954c1994 3184
59c61330
NC
3185Coerces the given SV to a double and returns it. Guarantees to evaluate
3186sv only once. Use the more efficient C<SvNV> otherwise.
954c1994 3187
59c61330 3188 NV SvNVx(SV* sv)
954c1994 3189
497711e7
GS
3190=for hackers
3191Found in file sv.h
3192
5e7e76a3
SP
3193=item SvNV_set
3194
3195Set the value of the IV pointer in sv to val.
3196
3197 void SvNV_set(SV* sv, NV val)
3198
3199=for hackers
3200Found in file sv.h
3201
954c1994
GS
3202=item SvOK
3203
a1e5c4b6
NC
3204Returns a boolean indicating whether the value is an SV. It also tells
3205whether the value is defined or not.
954c1994
GS
3206
3207 bool SvOK(SV* sv)
3208
497711e7
GS
3209=for hackers
3210Found in file sv.h
3211
954c1994
GS
3212=item SvOOK
3213
3214Returns a boolean indicating whether the SvIVX is a valid offset value for
3215the SvPVX. This hack is used internally to speed up removal of characters
3216from the beginning of a SvPV. When SvOOK is true, then the start of the
3217allocated string buffer is really (SvPVX - SvIVX).
3218
3219 bool SvOOK(SV* sv)
3220
497711e7
GS
3221=for hackers
3222Found in file sv.h
3223
954c1994
GS
3224=item SvPOK
3225
3226Returns a boolean indicating whether the SV contains a character
3227string.
3228
3229 bool SvPOK(SV* sv)
3230
497711e7
GS
3231=for hackers
3232Found in file sv.h
3233
954c1994
GS
3234=item SvPOKp
3235
3236Returns a boolean indicating whether the SV contains a character string.
3237Checks the B<private> setting. Use C<SvPOK>.
3238
3239 bool SvPOKp(SV* sv)
3240
497711e7
GS
3241=for hackers
3242Found in file sv.h
3243
954c1994
GS
3244=item SvPOK_off
3245
3246Unsets the PV status of an SV.
3247
3248 void SvPOK_off(SV* sv)
3249
497711e7
GS
3250=for hackers
3251Found in file sv.h
3252
954c1994
GS
3253=item SvPOK_on
3254
3255Tells an SV that it is a string.
3256
3257 void SvPOK_on(SV* sv)
3258
497711e7
GS
3259=for hackers
3260Found in file sv.h
3261
954c1994
GS
3262=item SvPOK_only
3263
3264Tells an SV that it is a string and disables all other OK bits.
cd458e05 3265Will also turn off the UTF-8 status.
954c1994
GS
3266
3267 void SvPOK_only(SV* sv)
3268
497711e7
GS
3269=for hackers
3270Found in file sv.h
3271
914184e1
JH
3272=item SvPOK_only_UTF8
3273
d5ce4a7c 3274Tells an SV that it is a string and disables all other OK bits,
cd458e05 3275and leaves the UTF-8 status as it was.
f1a1024e 3276
914184e1
JH
3277 void SvPOK_only_UTF8(SV* sv)
3278
3279=for hackers
3280Found in file sv.h
3281
954c1994
GS
3282=item SvPV
3283
12b7c5c7
JH
3284Returns a pointer to the string in the SV, or a stringified form of
3285the SV if the SV does not contain a string. The SV may cache the
3286stringified version becoming C<SvPOK>. Handles 'get' magic. See also
645c22ef 3287C<SvPVx> for a version which guarantees to evaluate sv only once.
954c1994
GS
3288
3289 char* SvPV(SV* sv, STRLEN len)
3290
497711e7
GS
3291=for hackers
3292Found in file sv.h
3293
645c22ef
DM
3294=item SvPVbyte
3295
3296Like C<SvPV>, but converts sv to byte representation first if necessary.
3297
3298 char* SvPVbyte(SV* sv, STRLEN len)
3299
3300=for hackers
3301Found in file sv.h
3302
3303=item SvPVbytex
3304
3305Like C<SvPV>, but converts sv to byte representation first if necessary.
d1be9408 3306Guarantees to evaluate sv only once; use the more efficient C<SvPVbyte>
645c22ef
DM
3307otherwise.
3308
645c22ef
DM
3309 char* SvPVbytex(SV* sv, STRLEN len)
3310
3311=for hackers
3312Found in file sv.h
3313
3314=item SvPVbytex_force
3315
3316Like C<SvPV_force>, but converts sv to byte representation first if necessary.
d1be9408 3317Guarantees to evaluate sv only once; use the more efficient C<SvPVbyte_force>
645c22ef
DM
3318otherwise.
3319
3320 char* SvPVbytex_force(SV* sv, STRLEN len)
3321
3322=for hackers
3323Found in file sv.h
3324
3325=item SvPVbyte_force
3326
3327Like C<SvPV_force>, but converts sv to byte representation first if necessary.
3328
3329 char* SvPVbyte_force(SV* sv, STRLEN len)
3330
3331=for hackers
3332Found in file sv.h
3333
3334=item SvPVbyte_nolen
3335
3336Like C<SvPV_nolen>, but converts sv to byte representation first if necessary.
3337
1fdc5aa6 3338 char* SvPVbyte_nolen(SV* sv)
645c22ef
DM
3339
3340=for hackers
3341Found in file sv.h
3342
3343=item SvPVutf8
3344
1fdc5aa6 3345Like C<SvPV>, but converts sv to utf8 first if necessary.
645c22ef
DM
3346
3347 char* SvPVutf8(SV* sv, STRLEN len)
3348
3349=for hackers
3350Found in file sv.h
3351
3352=item SvPVutf8x
3353
1fdc5aa6 3354Like C<SvPV>, but converts sv to utf8 first if necessary.
d1be9408 3355Guarantees to evaluate sv only once; use the more efficient C<SvPVutf8>
645c22ef
DM
3356otherwise.
3357
3358 char* SvPVutf8x(SV* sv, STRLEN len)
3359
3360=for hackers
3361Found in file sv.h
3362
3363=item SvPVutf8x_force
3364
1fdc5aa6 3365Like C<SvPV_force>, but converts sv to utf8 first if necessary.
d1be9408 3366Guarantees to evaluate sv only once; use the more efficient C<SvPVutf8_force>
645c22ef
DM
3367otherwise.
3368
3369 char* SvPVutf8x_force(SV* sv, STRLEN len)
3370
3371=for hackers
3372Found in file sv.h
3373
3374=item SvPVutf8_force
3375
1fdc5aa6 3376Like C<SvPV_force>, but converts sv to utf8 first if necessary.
645c22ef
DM
3377
3378 char* SvPVutf8_force(SV* sv, STRLEN len)
3379
3380=for hackers
3381Found in file sv.h
3382
3383=item SvPVutf8_nolen
3384
1fdc5aa6 3385Like C<SvPV_nolen>, but converts sv to utf8 first if necessary.
645c22ef 3386
1fdc5aa6 3387 char* SvPVutf8_nolen(SV* sv)
645c22ef
DM
3388
3389=for hackers
3390Found in file sv.h
3391
59c61330 3392=item SvPVX
645c22ef 3393
59c61330
NC
3394Returns a pointer to the physical string in the SV. The SV must contain a
3395string.
645c22ef 3396
59c61330 3397 char* SvPVX(SV* sv)
645c22ef
DM
3398
3399=for hackers
3400Found in file sv.h
3401
59c61330 3402=item SvPVx
954c1994 3403
59c61330 3404A version of C<SvPV> which guarantees to evaluate sv only once.
954c1994 3405
59c61330 3406 char* SvPVx(SV* sv, STRLEN len)
954c1994 3407
497711e7
GS
3408=for hackers
3409Found in file sv.h
3410
954c1994
GS
3411=item SvPV_force
3412
12b7c5c7
JH
3413Like C<SvPV> but will force the SV into containing just a string
3414(C<SvPOK_only>). You want force if you are going to update the C<SvPVX>
3415directly.
954c1994
GS
3416
3417 char* SvPV_force(SV* sv, STRLEN len)
3418
497711e7
GS
3419=for hackers
3420Found in file sv.h
3421
645c22ef
DM
3422=item SvPV_force_nomg
3423
12b7c5c7
JH
3424Like C<SvPV> but will force the SV into containing just a string
3425(C<SvPOK_only>). You want force if you are going to update the C<SvPVX>
3426directly. Doesn't process magic.
645c22ef
DM
3427
3428 char* SvPV_force_nomg(SV* sv, STRLEN len)
3429
3430=for hackers
3431Found in file sv.h
3432
954c1994
GS
3433=item SvPV_nolen
3434
12b7c5c7
JH
3435Returns a pointer to the string in the SV, or a stringified form of
3436the SV if the SV does not contain a string. The SV may cache the
3437stringified form becoming C<SvPOK>. Handles 'get' magic.
954c1994
GS
3438
3439 char* SvPV_nolen(SV* sv)
3440
497711e7
GS
3441=for hackers
3442Found in file sv.h
3443
5e7e76a3
SP
3444=item SvPV_set
3445
3446Set the value of the PV pointer in sv to val.
3447
3448 void SvPV_set(SV* sv, char* val)
3449
3450=for hackers
3451Found in file sv.h
3452
954c1994
GS
3453=item SvREFCNT
3454
3455Returns the value of the object's reference count.
3456
3457 U32 SvREFCNT(SV* sv)
3458
497711e7
GS
3459=for hackers
3460Found in file sv.h
3461
954c1994
GS
3462=item SvREFCNT_dec
3463
3464Decrements the reference count of the given SV.
3465
3466 void SvREFCNT_dec(SV* sv)
3467
497711e7
GS
3468=for hackers
3469Found in file sv.h
3470
954c1994
GS
3471=item SvREFCNT_inc
3472
3473Increments the reference count of the given SV.
3474
3475 SV* SvREFCNT_inc(SV* sv)
3476
497711e7
GS
3477=for hackers
3478Found in file sv.h
3479
954c1994
GS
3480=item SvROK
3481
3482Tests if the SV is an RV.
3483
3484 bool SvROK(SV* sv)
3485
497711e7
GS
3486=for hackers
3487Found in file sv.h
3488
954c1994
GS
3489=item SvROK_off
3490
3491Unsets the RV status of an SV.
3492
3493 void SvROK_off(SV* sv)
3494
497711e7
GS
3495=for hackers
3496Found in file sv.h
3497
954c1994
GS
3498=item SvROK_on
3499
3500Tells an SV that it is an RV.
3501
3502 void SvROK_on(SV* sv)
3503
497711e7
GS
3504=for hackers
3505Found in file sv.h
3506
954c1994
GS
3507=item SvRV
3508
3509Dereferences an RV to return the SV.
3510
3511 SV* SvRV(SV* sv)
3512
497711e7
GS
3513=for hackers
3514Found in file sv.h
3515
5e7e76a3
SP
3516=item SvRV_set
3517
3518Set the value of the RV pointer in sv to val.
3519
3520 void SvRV_set(SV* sv, SV* val)
3521
3522=for hackers
3523Found in file sv.h
3524
954c1994
GS
3525=item SvSTASH
3526
3527Returns the stash of the SV.
3528
3529 HV* SvSTASH(SV* sv)
3530
497711e7
GS
3531=for hackers
3532Found in file sv.h
3533
5e7e76a3
SP
3534=item SvSTASH_set
3535
3536Set the value of the STASH pointer in sv to val.
3537
3538 void SvSTASH_set(SV* sv, STASH* val)
3539
3540=for hackers
3541Found in file sv.h
3542
954c1994
GS
3543=item SvTAINT
3544
702faa49 3545Taints an SV if tainting is enabled.
954c1994
GS
3546
3547 void SvTAINT(SV* sv)
3548
497711e7
GS
3549=for hackers
3550Found in file sv.h
3551
954c1994
GS
3552=item SvTAINTED
3553
3554Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if
3555not.
3556
3557 bool SvTAINTED(SV* sv)
3558
497711e7
GS
3559=for hackers
3560Found in file sv.h
3561
954c1994
GS
3562=item SvTAINTED_off
3563
3564Untaints an SV. Be I<very> careful with this routine, as it short-circuits
3565some of Perl's fundamental security features. XS module authors should not
3566use this function unless they fully understand all the implications of
3567unconditionally untainting the value. Untainting should be done in the
3568standard perl fashion, via a carefully crafted regexp, rather than directly
3569untainting variables.
3570
3571 void SvTAINTED_off(SV* sv)
3572
497711e7
GS
3573=for hackers
3574Found in file sv.h
3575
954c1994
GS
3576=item SvTAINTED_on
3577
702faa49 3578Marks an SV as tainted if tainting is enabled.
954c1994
GS
3579
3580 void SvTAINTED_on(SV* sv)
3581
497711e7
GS
3582=for hackers
3583Found in file sv.h
3584
954c1994
GS
3585=item SvTRUE
3586
3587Returns a boolean indicating whether Perl would evaluate the SV as true or
3588false, defined or undefined. Does not handle 'get' magic.
3589
3590 bool SvTRUE(SV* sv)
3591
497711e7
GS
3592=for hackers
3593Found in file sv.h
3594
9f4817db 3595=item SvTYPE
af3c7592 3596
9f4817db
JH
3597Returns the type of the SV. See C<svtype>.
3598
3599 svtype SvTYPE(SV* sv)
954c1994 3600
497711e7
GS
3601=for hackers
3602Found in file sv.h
3603
a8586c98
JH
3604=item SvUOK
3605
3606Returns a boolean indicating whether the SV contains an unsigned integer.
3607
3608 void SvUOK(SV* sv)
3609
3610=for hackers
3611Found in file sv.h
3612
954c1994
GS
3613=item SvUPGRADE
3614
3615Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to
3616perform the upgrade if necessary. See C<svtype>.
3617
3618 void SvUPGRADE(SV* sv, svtype type)
3619
497711e7
GS
3620=for hackers
3621Found in file sv.h
3622
914184e1
JH
3623=item SvUTF8
3624
3625Returns a boolean indicating whether the SV contains UTF-8 encoded data.
3626
2ef4a045 3627 bool SvUTF8(SV* sv)
914184e1
JH
3628
3629=for hackers
3630Found in file sv.h
3631
3632=item SvUTF8_off
3633
cd458e05 3634Unsets the UTF-8 status of an SV.
914184e1
JH
3635
3636 void SvUTF8_off(SV *sv)
3637
3638=for hackers
3639Found in file sv.h
3640
3641=item SvUTF8_on
3642
cd458e05 3643Turn on the UTF-8 status of an SV (the data is not changed, just the flag).
d5ce4a7c 3644Do not use frivolously.
914184e1
JH
3645
3646 void SvUTF8_on(SV *sv)
3647
3648=for hackers
3649Found in file sv.h
3650
954c1994
GS
3651=item SvUV
3652
645c22ef
DM
3653Coerces the given SV to an unsigned integer and returns it. See C<SvUVx>
3654for a version which guarantees to evaluate sv only once.
954c1994
GS
3655
3656 UV SvUV(SV* sv)
3657
497711e7
GS
3658=for hackers
3659Found in file sv.h
3660
59c61330 3661=item SvUVX
954c1994 3662
59c61330
NC
3663Returns the raw value in the SV's UV slot, without checks or conversions.
3664Only use when you are sure SvIOK is true. See also C<SvUV()>.
954c1994 3665
59c61330 3666 UV SvUVX(SV* sv)
954c1994 3667
497711e7
GS
3668=for hackers
3669Found in file sv.h
3670
59c61330 3671=item SvUVx
645c22ef 3672
59c61330
NC
3673Coerces the given SV to an unsigned integer and returns it. Guarantees to
3674evaluate sv only once. Use the more efficient C<SvUV> otherwise.
645c22ef 3675
59c61330 3676 UV SvUVx(SV* sv)
645c22ef
DM
3677
3678=for hackers
3679Found in file sv.h
3680
3681=item sv_2bool
3682
3683This function is only called on magical items, and is only used by
8cf8f3d1 3684sv_true() or its macro equivalent.
645c22ef
DM
3685
3686 bool sv_2bool(SV* sv)
3687
3688=for hackers
3689Found in file sv.c
3690
3691=item sv_2cv
3692
3693Using various gambits, try to get a CV from an SV; in addition, try if
3694possible to set C<*st> and C<*gvp> to the stash and GV associated with it.
3695
3696 CV* sv_2cv(SV* sv, HV** st, GV** gvp, I32 lref)
3697
3698=for hackers
3699Found in file sv.c
3700
3701=item sv_2io
3702
3703Using various gambits, try to get an IO from an SV: the IO slot if its a
3704GV; or the recursive result if we're an RV; or the IO slot of the symbol
3705named after the PV if we're a string.
3706
3707 IO* sv_2io(SV* sv)
3708
3709=for hackers
3710Found in file sv.c
3711
3712=item sv_2iv
3713
3714Return the integer value of an SV, doing any necessary string conversion,
3715magic etc. Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros.
3716
3717 IV sv_2iv(SV* sv)
3718
3719=for hackers
3720Found in file sv.c
3721
954c1994
GS
3722=item sv_2mortal
3723
793edb8a
JH
3724Marks an existing SV as mortal. The SV will be destroyed "soon", either
3725by an explicit call to FREETMPS, or by an implicit call at places such as
cd0f72d4
NC
3726statement boundaries. SvTEMP() is turned on which means that the SV's
3727string buffer can be "stolen" if this SV is copied. See also C<sv_newmortal>
3728and C<sv_mortalcopy>.
954c1994
GS
3729
3730 SV* sv_2mortal(SV* sv)
3731
497711e7
GS
3732=for hackers
3733Found in file sv.c
3734
645c22ef
DM
3735=item sv_2nv
3736
3737Return the num value of an SV, doing any necessary string or integer
3738conversion, magic etc. Normally used via the C<SvNV(sv)> and C<SvNVx(sv)>
3739macros.
3740
3741 NV sv_2nv(SV* sv)
3742
3743=for hackers
3744Found in file sv.c
3745
451be7b1
DM
3746=item sv_2pvbyte
3747
3748Return a pointer to the byte-encoded representation of the SV, and set *lp
cd458e05 3749to its length. May cause the SV to be downgraded from UTF-8 as a
451be7b1
DM
3750side-effect.
3751
3752Usually accessed via the C<SvPVbyte> macro.
3753
3754 char* sv_2pvbyte(SV* sv, STRLEN* lp)
3755
3756=for hackers
3757Found in file sv.c
3758
645c22ef
DM
3759=item sv_2pvbyte_nolen
3760
3761Return a pointer to the byte-encoded representation of the SV.
cd458e05 3762May cause the SV to be downgraded from UTF-8 as a side-effect.
645c22ef
DM
3763
3764Usually accessed via the C<SvPVbyte_nolen> macro.
3765
3766 char* sv_2pvbyte_nolen(SV* sv)
3767
3768=for hackers
3769Found in file sv.c
3770
451be7b1
DM
3771=item sv_2pvutf8
3772
cd458e05
JH
3773Return a pointer to the UTF-8-encoded representation of the SV, and set *lp
3774to its length. May cause the SV to be upgraded to UTF-8 as a side-effect.
451be7b1
DM
3775
3776Usually accessed via the C<SvPVutf8> macro.
3777
3778 char* sv_2pvutf8(SV* sv, STRLEN* lp)
3779
3780=for hackers
3781Found in file sv.c
3782
645c22ef
DM
3783=item sv_2pvutf8_nolen
3784
cd458e05
JH
3785Return a pointer to the UTF-8-encoded representation of the SV.
3786May cause the SV to be upgraded to UTF-8 as a side-effect.
645c22ef
DM
3787
3788Usually accessed via the C<SvPVutf8_nolen> macro.
3789
3790 char* sv_2pvutf8_nolen(SV* sv)
3791
3792=for hackers
3793Found in file sv.c
3794
3795=item sv_2pv_flags
3796
ff276b08 3797Returns a pointer to the string value of an SV, and sets *lp to its length.
645c22ef
DM
3798If flags includes SV_GMAGIC, does an mg_get() first. Coerces sv to a string
3799if necessary.
3800Normally invoked via the C<SvPV_flags> macro. C<sv_2pv()> and C<sv_2pv_nomg>
3801usually end up here too.
3802
3803 char* sv_2pv_flags(SV* sv, STRLEN* lp, I32 flags)
3804
3805=for hackers
3806Found in file sv.c
3807
3808=item sv_2pv_nolen
3809
3810Like C<sv_2pv()>, but doesn't return the length too. You should usually
3811use the macro wrapper C<SvPV_nolen(sv)> instead.
3812 char* sv_2pv_nolen(SV* sv)
3813
3814=for hackers
3815Found in file sv.c
3816
3817=item sv_2uv
3818
3819Return the unsigned integer value of an SV, doing any necessary string
3820conversion, magic etc. Normally used via the C<SvUV(sv)> and C<SvUVx(sv)>
3821macros.
3822
3823 UV sv_2uv(SV* sv)
3824
3825=for hackers
3826Found in file sv.c
3827
3828=item sv_backoff
3829
3830Remove any string offset. You should normally use the C<SvOOK_off> macro
3831wrapper instead.
3832
3833 int sv_backoff(SV* sv)
3834
3835=for hackers
3836Found in file sv.c
3837
954c1994
GS
3838=item sv_bless
3839
3840Blesses an SV into a specified package. The SV must be an RV. The package
3841must be designated by its stash (see C<gv_stashpv()>). The reference count
3842of the SV is unaffected.
3843
3844 SV* sv_bless(SV* sv, HV* stash)
3845
497711e7
GS
3846=for hackers
3847Found in file sv.c
3848
954c1994
GS
3849=item sv_catpv
3850
3851Concatenates the string onto the end of the string which is in the SV.
cd458e05
JH
3852If the SV has the UTF-8 status set, then the bytes appended should be
3853valid UTF-8. Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>.
954c1994
GS
3854
3855 void sv_catpv(SV* sv, const char* ptr)
3856
497711e7
GS
3857=for hackers
3858Found in file sv.c
3859
954c1994
GS
3860=item sv_catpvf
3861
d5ce4a7c
GA
3862Processes its arguments like C<sprintf> and appends the formatted
3863output to an SV. If the appended data contains "wide" characters
3864(including, but not limited to, SVs with a UTF-8 PV formatted with %s,
3865and characters >255 formatted with %c), the original SV might get
c4a661a8 3866upgraded to UTF-8. Handles 'get' magic, but not 'set' magic. See
a8e989f8
RB
3867C<sv_catpvf_mg>. If the original SV was UTF-8, the pattern should be
3868valid UTF-8; if the original SV was bytes, the pattern should be too.
954c1994
GS
3869
3870 void sv_catpvf(SV* sv, const char* pat, ...)
3871
497711e7
GS
3872=for hackers
3873Found in file sv.c
3874
954c1994
GS
3875=item sv_catpvf_mg
3876
3877Like C<sv_catpvf>, but also handles 'set' magic.
3878
3879 void sv_catpvf_mg(SV *sv, const char* pat, ...)
3880
497711e7
GS
3881=for hackers
3882Found in file sv.c
3883
954c1994
GS
3884=item sv_catpvn
3885
3886Concatenates the string onto the end of the string which is in the SV. The
cd458e05
JH
3887C<len> indicates number of bytes to copy. If the SV has the UTF-8
3888status set, then the bytes appended should be valid UTF-8.
d5ce4a7c 3889Handles 'get' magic, but not 'set' magic. See C<sv_catpvn_mg>.
954c1994
GS
3890
3891 void sv_catpvn(SV* sv, const char* ptr, STRLEN len)
3892
497711e7
GS
3893=for hackers
3894Found in file sv.c
3895
8d6d96c1
HS
3896=item sv_catpvn_flags
3897
3898Concatenates the string onto the end of the string which is in the SV. The
cd458e05
JH
3899C<len> indicates number of bytes to copy. If the SV has the UTF-8
3900status set, then the bytes appended should be valid UTF-8.
8d6d96c1
HS
3901If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<dsv> if
3902appropriate, else not. C<sv_catpvn> and C<sv_catpvn_nomg> are implemented
3903in terms of this function.
3904
3905 void sv_catpvn_flags(SV* sv, const char* ptr, STRLEN len, I32 flags)
3906
3907=for hackers
3908Found in file sv.c
3909
954c1994
GS
3910=item sv_catpvn_mg
3911
3912Like C<sv_catpvn>, but also handles 'set' magic.
3913
3914 void sv_catpvn_mg(SV *sv, const char *ptr, STRLEN len)
3915
497711e7
GS
3916=for hackers
3917Found in file sv.c
3918
40d34c0d
SB
3919=item sv_catpvn_nomg
3920
3921Like C<sv_catpvn> but doesn't process magic.
3922
3923 void sv_catpvn_nomg(SV* sv, const char* ptr, STRLEN len)
3924
3925=for hackers
3926Found in file sv.h
3927
954c1994
GS
3928=item sv_catpv_mg
3929
3930Like C<sv_catpv>, but also handles 'set' magic.
3931
3932 void sv_catpv_mg(SV *sv, const char *ptr)
3933
497711e7
GS
3934=for hackers
3935Found in file sv.c
3936
954c1994
GS
3937=item sv_catsv
3938
1aa99e6b
IH
3939Concatenates the string from SV C<ssv> onto the end of the string in
3940SV C<dsv>. Modifies C<dsv> but not C<ssv>. Handles 'get' magic, but
3941not 'set' magic. See C<sv_catsv_mg>.
954c1994
GS
3942
3943 void sv_catsv(SV* dsv, SV* ssv)
3944
497711e7
GS
3945=for hackers
3946Found in file sv.c
3947
8d6d96c1
HS
3948=item sv_catsv_flags
3949
3950Concatenates the string from SV C<ssv> onto the end of the string in
3951SV C<dsv>. Modifies C<dsv> but not C<ssv>. If C<flags> has C<SV_GMAGIC>
3952bit set, will C<mg_get> on the SVs if appropriate, else not. C<sv_catsv>
3953and C<sv_catsv_nomg> are implemented in terms of this function.
3954
3955 void sv_catsv_flags(SV* dsv, SV* ssv, I32 flags)
3956
3957=for hackers
3958Found in file sv.c
3959
954c1994
GS
3960=item sv_catsv_mg
3961
3962Like C<sv_catsv>, but also handles 'set' magic.
3963
3964 void sv_catsv_mg(SV *dstr, SV *sstr)
3965
497711e7
GS
3966=for hackers
3967Found in file sv.c
3968
40d34c0d
SB
3969=item sv_catsv_nomg
3970
3971Like C<sv_catsv> but doesn't process magic.
3972
3973 void sv_catsv_nomg(SV* dsv, SV* ssv)
3974
3975=for hackers
3976Found in file sv.h
3977
954c1994
GS
3978=item sv_chop
3979
1c846c1f 3980Efficient removal of characters from the beginning of the string buffer.
954c1994
GS
3981SvPOK(sv) must be true and the C<ptr> must be a pointer to somewhere inside
3982the string buffer. The C<ptr> becomes the first character of the adjusted
645c22ef 3983string. Uses the "OOK hack".
b9219079
JH
3984Beware: after this function returns, C<ptr> and SvPVX(sv) may no longer
3985refer to the same chunk of data.
954c1994
GS
3986
3987 void sv_chop(SV* sv, char* ptr)
3988
497711e7
GS
3989=for hackers
3990Found in file sv.c
3991
c461cf8f
JH
3992=item sv_clear
3993
645c22ef
DM
3994Clear an SV: call any destructors, free up any memory used by the body,
3995and free the body itself. The SV's head is I<not> freed, although
3996its type is set to all 1's so that it won't inadvertently be assumed
3997to be live during global destruction etc.
3998This function should only be called when REFCNT is zero. Most of the time
3999you'll want to call C<sv_free()> (or its macro wrapper C<SvREFCNT_dec>)
4000instead.
c461cf8f
JH
4001
4002 void sv_clear(SV* sv)
4003
4004=for hackers
4005Found in file sv.c
4006
954c1994
GS
4007=item sv_cmp
4008
4009Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the
4010string in C<sv1> is less than, equal to, or greater than the string in
645c22ef
DM
4011C<sv2>. Is UTF-8 and 'use bytes' aware, handles get magic, and will
4012coerce its args to strings if necessary. See also C<sv_cmp_locale>.
954c1994
GS
4013
4014 I32 sv_cmp(SV* sv1, SV* sv2)
4015
497711e7
GS
4016=for hackers
4017Found in file sv.c
4018
c461cf8f
JH
4019=item sv_cmp_locale
4020
645c22ef
DM
4021Compares the strings in two SVs in a locale-aware manner. Is UTF-8 and
4022'use bytes' aware, handles get magic, and will coerce its args to strings
4023if necessary. See also C<sv_cmp_locale>. See also C<sv_cmp>.
c461cf8f
JH
4024
4025 I32 sv_cmp_locale(SV* sv1, SV* sv2)
4026
4027=for hackers
4028Found in file sv.c
4029
645c22ef
DM
4030=item sv_collxfrm
4031
4032Add Collate Transform magic to an SV if it doesn't already have it.
4033
4034Any scalar variable may carry PERL_MAGIC_collxfrm magic that contains the
4035scalar data of the variable, but transformed to such a format that a normal
4036memory comparison can be used to compare the data according to the locale
4037settings.
4038
4039 char* sv_collxfrm(SV* sv, STRLEN* nxp)
4040
4041=for hackers
4042Found in file sv.c
4043
6050d10e
JP
4044=item sv_copypv
4045
4046Copies a stringified representation of the source SV into the
4047destination SV. Automatically performs any necessary mg_get and
9ede5bc8 4048coercion of numeric values into strings. Guaranteed to preserve
6050d10e 4049UTF-8 flag even from overloaded objects. Similar in nature to
9ede5bc8
DM
4050sv_2pv[_flags] but operates directly on an SV instead of just the
4051string. Mostly uses sv_2pv_flags to do its work, except when that
6050d10e
JP
4052would lose the UTF-8'ness of the PV.
4053
4054 void sv_copypv(SV* dsv, SV* ssv)
4055
4056=for hackers
4057Found in file sv.c
4058
954c1994
GS
4059=item sv_dec
4060
645c22ef
DM
4061Auto-decrement of the value in the SV, doing string to numeric conversion
4062if necessary. Handles 'get' magic.
954c1994
GS
4063
4064 void sv_dec(SV* sv)
4065
497711e7
GS
4066=for hackers
4067Found in file sv.c
4068
954c1994
GS
4069=item sv_derived_from
4070
4071Returns a boolean indicating whether the SV is derived from the specified
4072class. This is the function that implements C<UNIVERSAL::isa>. It works
4073for class names as well as for objects.
4074
4075 bool sv_derived_from(SV* sv, const char* name)
4076
497711e7
GS
4077=for hackers
4078Found in file universal.c
4079
954c1994
GS
4080=item sv_eq
4081
4082Returns a boolean indicating whether the strings in the two SVs are
645c22ef
DM
4083identical. Is UTF-8 and 'use bytes' aware, handles get magic, and will
4084coerce its args to strings if necessary.
954c1994
GS
4085
4086 I32 sv_eq(SV* sv1, SV* sv2)
4087
497711e7
GS
4088=for hackers
4089Found in file sv.c
4090
645c22ef
DM
4091=item sv_force_normal
4092
4093Undo various types of fakery on an SV: if the PV is a shared string, make
4094a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
4095an xpvmg. See also C<sv_force_normal_flags>.
4096
4097 void sv_force_normal(SV *sv)
4098
4099=for hackers
4100Found in file sv.c
4101
4102=item sv_force_normal_flags
4103
4104Undo various types of fakery on an SV: if the PV is a shared string, make
4105a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
4106an xpvmg. The C<flags> parameter gets passed to C<sv_unref_flags()>
4107when unrefing. C<sv_force_normal> calls this function with flags set to 0.
4108
4109 void sv_force_normal_flags(SV *sv, U32 flags)
4110
4111=for hackers
4112Found in file sv.c
4113
c461cf8f
JH
4114=item sv_free
4115
645c22ef
DM
4116Decrement an SV's reference count, and if it drops to zero, call
4117C<sv_clear> to invoke destructors and free up any memory used by
4118the body; finally, deallocate the SV's head itself.
4119Normally called via a wrapper macro C<SvREFCNT_dec>.
c461cf8f
JH
4120
4121 void sv_free(SV* sv)
4122
4123=for hackers
4124Found in file sv.c
4125
4126=item sv_gets
4127
4128Get a line from the filehandle and store it into the SV, optionally
4129appending to the currently-stored string.
4130
4131 char* sv_gets(SV* sv, PerlIO* fp, I32 append)
4132
4133=for hackers
4134Found in file sv.c
4135
954c1994
GS
4136=item sv_grow
4137
645c22ef
DM
4138Expands the character buffer in the SV. If necessary, uses C<sv_unref> and
4139upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer.
4140Use the C<SvGROW> wrapper instead.
954c1994
GS
4141
4142 char* sv_grow(SV* sv, STRLEN newlen)
4143
497711e7
GS
4144=for hackers
4145Found in file sv.c
4146
954c1994
GS
4147=item sv_inc
4148
645c22ef
DM
4149Auto-increment of the value in the SV, doing string to numeric conversion
4150if necessary. Handles 'get' magic.
954c1994
GS
4151
4152 void sv_inc(SV* sv)
4153
497711e7
GS
4154=for hackers
4155Found in file sv.c
4156
954c1994
GS
4157=item sv_insert
4158
4159Inserts a string at the specified offset/length within the SV. Similar to
4160the Perl substr() function.
4161
ec6f298e 4162 void sv_insert(SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen)
954c1994 4163
497711e7
GS
4164=for hackers
4165Found in file sv.c
4166
954c1994
GS
4167=item sv_isa
4168
4169Returns a boolean indicating whether the SV is blessed into the specified
4170class. This does not check for subtypes; use C<sv_derived_from> to verify
4171an inheritance relationship.
4172
4173 int sv_isa(SV* sv, const char* name)
4174
497711e7
GS
4175=for hackers
4176Found in file sv.c
4177
954c1994
GS
4178=item sv_isobject
4179
4180Returns a boolean indicating whether the SV is an RV pointing to a blessed
4181object. If the SV is not an RV, or if the object is not blessed, then this
4182will return false.
4183
4184 int sv_isobject(SV* sv)
4185
497711e7
GS
4186=for hackers
4187Found in file sv.c
4188
645c22ef
DM
4189=item sv_iv
4190
4191A private implementation of the C<SvIVx> macro for compilers which can't
4192cope with complex macro expressions. Always use the macro instead.
4193
4194 IV sv_iv(SV* sv)
4195
4196=for hackers
4197Found in file sv.c
4198
954c1994
GS
4199=item sv_len
4200
645c22ef
DM
4201Returns the length of the string in the SV. Handles magic and type
4202coercion. See also C<SvCUR>, which gives raw access to the xpv_cur slot.
954c1994
GS
4203
4204 STRLEN sv_len(SV* sv)
4205
497711e7
GS
4206=for hackers
4207Found in file sv.c
4208
c461cf8f
JH
4209=item sv_len_utf8
4210
4211Returns the number of characters in the string in an SV, counting wide
cd458e05 4212UTF-8 bytes as a single character. Handles magic and type coercion.
c461cf8f
JH
4213
4214 STRLEN sv_len_utf8(SV* sv)
4215
4216=for hackers
4217Found in file sv.c
4218
954c1994
GS
4219=item sv_magic
4220
645c22ef
DM
4221Adds magic to an SV. First upgrades C<sv> to type C<SVt_PVMG> if necessary,
4222then adds a new magic item of type C<how> to the head of the magic list.
4223
af70ddd4
NC
4224See C<sv_magicext> (which C<sv_magic> now calls) for a description of the
4225handling of the C<name> and C<namlen> arguments.
4226
0df18620
NC
4227You need to use C<sv_magicext> to add magic to SvREADONLY SVs and also
4228to add more than one instance of the same 'how'.
4229
954c1994
GS
4230 void sv_magic(SV* sv, SV* obj, int how, const char* name, I32 namlen)
4231
497711e7
GS
4232=for hackers
4233Found in file sv.c
4234
a4f1a029
NIS
4235=item sv_magicext
4236
4237Adds magic to an SV, upgrading it if necessary. Applies the
af70ddd4 4238supplied vtable and returns a pointer to the magic added.
a4f1a029 4239
af70ddd4
NC
4240Note that C<sv_magicext> will allow things that C<sv_magic> will not.
4241In particular, you can add magic to SvREADONLY SVs, and add more than
4242one instance of the same 'how'.
a4f1a029 4243
af70ddd4
NC
4244If C<namlen> is greater than zero then a C<savepvn> I<copy> of C<name> is
4245stored, if C<namlen> is zero then C<name> is stored as-is and - as another
4246special case - if C<(name && namlen == HEf_SVKEY)> then C<name> is assumed
4247to contain an C<SV*> and is stored as-is with its REFCNT incremented.
a4f1a029 4248
af70ddd4 4249(This is now used as a subroutine by C<sv_magic>.)
a4f1a029 4250
ec6f298e 4251 MAGIC * sv_magicext(SV* sv, SV* obj, int how, MGVTBL *vtbl, const char* name, I32 namlen)
a4f1a029
NIS
4252
4253=for hackers
4254Found in file sv.c
4255
954c1994
GS
4256=item sv_mortalcopy
4257
645c22ef 4258Creates a new SV which is a copy of the original SV (using C<sv_setsv>).
793edb8a
JH
4259The new SV is marked as mortal. It will be destroyed "soon", either by an
4260explicit call to FREETMPS, or by an implicit call at places such as
4261statement boundaries. See also C<sv_newmortal> and C<sv_2mortal>.
954c1994
GS
4262
4263 SV* sv_mortalcopy(SV* oldsv)
4264
497711e7
GS
4265=for hackers
4266Found in file sv.c
4267
954c1994
GS
4268=item sv_newmortal
4269
645c22ef 4270Creates a new null SV which is mortal. The reference count of the SV is
793edb8a
JH
4271set to 1. It will be destroyed "soon", either by an explicit call to
4272FREETMPS, or by an implicit call at places such as statement boundaries.
4273See also C<sv_mortalcopy> and C<sv_2mortal>.
954c1994
GS
4274
4275 SV* sv_newmortal()
4276
497711e7
GS
4277=for hackers
4278Found in file sv.c
4279
645c22ef
DM
4280=item sv_newref
4281
4282Increment an SV's reference count. Use the C<SvREFCNT_inc()> wrapper
4283instead.
4284
4285 SV* sv_newref(SV* sv)
4286
4287=for hackers
4288Found in file sv.c
4289
4290=item sv_nv
4291
4292A private implementation of the C<SvNVx> macro for compilers which can't
4293cope with complex macro expressions. Always use the macro instead.
4294
4295 NV sv_nv(SV* sv)
4296
4297=for hackers
4298Found in file sv.c
4299
4300=item sv_pos_b2u
4301
4302Converts the value pointed to by offsetp from a count of bytes from the
cd458e05 4303start of the string, to a count of the equivalent number of UTF-8 chars.
645c22ef
DM
4304Handles magic and type coercion.
4305
4306 void sv_pos_b2u(SV* sv, I32* offsetp)
4307
4308=for hackers
4309Found in file sv.c
4310
4311=item sv_pos_u2b
4312
cd458e05 4313Converts the value pointed to by offsetp from a count of UTF-8 chars from
645c22ef
DM
4314the start of the string, to a count of the equivalent number of bytes; if
4315lenp is non-zero, it does the same to lenp, but this time starting from
4316the offset, rather than from the start of the string. Handles magic and
4317type coercion.
4318
4319 void sv_pos_u2b(SV* sv, I32* offsetp, I32* lenp)
4320
4321=for hackers
4322Found in file sv.c
4323
451be7b1
DM
4324=item sv_pv
4325
baca2b92 4326Use the C<SvPV_nolen> macro instead
451be7b1
DM
4327
4328 char* sv_pv(SV *sv)
4329
4330=for hackers
4331Found in file sv.c
4332
645c22ef
DM
4333=item sv_pvbyte
4334
baca2b92 4335Use C<SvPVbyte_nolen> instead.
645c22ef
DM
4336
4337 char* sv_pvbyte(SV *sv)
4338
4339=for hackers
4340Found in file sv.c
4341
4342=item sv_pvbyten
4343
4344A private implementation of the C<SvPVbyte> macro for compilers
4345which can't cope with complex macro expressions. Always use the macro
4346instead.
4347
4348 char* sv_pvbyten(SV *sv, STRLEN *len)
4349
4350=for hackers
4351Found in file sv.c
4352
4353=item sv_pvbyten_force
4354
4355A private implementation of the C<SvPVbytex_force> macro for compilers
4356which can't cope with complex macro expressions. Always use the macro
4357instead.
4358
4359 char* sv_pvbyten_force(SV* sv, STRLEN* lp)
4360
4361=for hackers
4362Found in file sv.c
4363
451be7b1
DM
4364=item sv_pvn
4365
4366A private implementation of the C<SvPV> macro for compilers which can't
4367cope with complex macro expressions. Always use the macro instead.
4368
4369 char* sv_pvn(SV *sv, STRLEN *len)
4370
4371=for hackers
4372Found in file sv.c
4373
c461cf8f
JH
4374=item sv_pvn_force
4375
4376Get a sensible string out of the SV somehow.
645c22ef
DM
4377A private implementation of the C<SvPV_force> macro for compilers which
4378can't cope with complex macro expressions. Always use the macro instead.
c461cf8f
JH
4379
4380 char* sv_pvn_force(SV* sv, STRLEN* lp)
4381
4382=for hackers
4383Found in file sv.c
4384
8d6d96c1
HS
4385=item sv_pvn_force_flags
4386
4387Get a sensible string out of the SV somehow.
4388If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<sv> if
4389appropriate, else not. C<sv_pvn_force> and C<sv_pvn_force_nomg> are
4390implemented in terms of this function.
645c22ef
DM
4391You normally want to use the various wrapper macros instead: see
4392C<SvPV_force> and C<SvPV_force_nomg>
8d6d96c1
HS
4393
4394 char* sv_pvn_force_flags(SV* sv, STRLEN* lp, I32 flags)
4395
4396=for hackers
4397Found in file sv.c
4398
645c22ef
DM
4399=item sv_pvutf8
4400
baca2b92 4401Use the C<SvPVutf8_nolen> macro instead
645c22ef
DM
4402
4403 char* sv_pvutf8(SV *sv)
4404
4405=for hackers
4406Found in file sv.c
4407
4408=item sv_pvutf8n
4409
4410A private implementation of the C<SvPVutf8> macro for compilers
4411which can't cope with complex macro expressions. Always use the macro
4412instead.
4413
4414 char* sv_pvutf8n(SV *sv, STRLEN *len)
4415
4416=for hackers
4417Found in file sv.c
4418
c461cf8f
JH
4419=item sv_pvutf8n_force
4420
645c22ef
DM
4421A private implementation of the C<SvPVutf8_force> macro for compilers
4422which can't cope with complex macro expressions. Always use the macro
4423instead.
c461cf8f
JH
4424
4425 char* sv_pvutf8n_force(SV* sv, STRLEN* lp)
4426
4427=for hackers
4428Found in file sv.c
4429
4430=item sv_reftype
4431
4432Returns a string describing what the SV is a reference to.
4433
4434 char* sv_reftype(SV* sv, int ob)
4435
4436=for hackers
4437Found in file sv.c
4438
4439=item sv_replace
4440
4441Make the first argument a copy of the second, then delete the original.
645c22ef
DM
4442The target SV physically takes over ownership of the body of the source SV
4443and inherits its flags; however, the target keeps any magic it owns,
4444and any magic in the source is discarded.
ff276b08 4445Note that this is a rather specialist SV copying operation; most of the
645c22ef 4446time you'll want to use C<sv_setsv> or one of its many macro front-ends.
c461cf8f
JH
4447
4448 void sv_replace(SV* sv, SV* nsv)
4449
4450=for hackers
4451Found in file sv.c
4452
645c22ef
DM
4453=item sv_report_used
4454
4455Dump the contents of all SVs not yet freed. (Debugging aid).
4456
4457 void sv_report_used()
4458
4459=for hackers
4460Found in file sv.c
4461
451be7b1
DM
4462=item sv_reset
4463
4464Underlying implementation for the C<reset> Perl function.
4465Note that the perl-level function is vaguely deprecated.
4466
ec6f298e 4467 void sv_reset(char* s, HV* stash)
451be7b1
DM
4468
4469=for hackers
4470Found in file sv.c
4471
c461cf8f
JH
4472=item sv_rvweaken
4473
645c22ef
DM
4474Weaken a reference: set the C<SvWEAKREF> flag on this RV; give the
4475referred-to SV C<PERL_MAGIC_backref> magic if it hasn't already; and
4476push a back-reference to this RV onto the array of backreferences
4477associated with that magic.
c461cf8f
JH
4478
4479 SV* sv_rvweaken(SV *sv)
4480
4481=for hackers
4482Found in file sv.c
4483
954c1994
GS
4484=item sv_setiv
4485
645c22ef
DM
4486Copies an integer into the given SV, upgrading first if necessary.
4487Does not handle 'set' magic. See also C<sv_setiv_mg>.
954c1994
GS
4488
4489 void sv_setiv(SV* sv, IV num)
4490
497711e7
GS
4491=for hackers
4492Found in file sv.c
4493
954c1994
GS
4494=item sv_setiv_mg
4495
4496Like C<sv_setiv>, but also handles 'set' magic.
4497
4498 void sv_setiv_mg(SV *sv, IV i)
4499
497711e7
GS
4500=for hackers
4501Found in file sv.c
4502
954c1994
GS
4503=item sv_setnv
4504
645c22ef
DM
4505Copies a double into the given SV, upgrading first if necessary.
4506Does not handle 'set' magic. See also C<sv_setnv_mg>.
954c1994
GS
4507
4508 void sv_setnv(SV* sv, NV num)
4509
497711e7
GS
4510=for hackers
4511Found in file sv.c
4512
954c1994
GS
4513=item sv_setnv_mg
4514
4515Like C<sv_setnv>, but also handles 'set' magic.
4516
4517 void sv_setnv_mg(SV *sv, NV num)
4518
497711e7
GS
4519=for hackers
4520Found in file sv.c
4521
954c1994
GS
4522=item sv_setpv
4523
4524Copies a string into an SV. The string must be null-terminated. Does not
4525handle 'set' magic. See C<sv_setpv_mg>.
4526
4527 void sv_setpv(SV* sv, const char* ptr)
4528
497711e7
GS
4529=for hackers
4530Found in file sv.c
4531
954c1994
GS
4532=item sv_setpvf
4533
c4a661a8
NC
4534Works like C<sv_catpvf> but copies the text into the SV instead of
4535appending it. Does not handle 'set' magic. See C<sv_setpvf_mg>.
954c1994
GS
4536
4537 void sv_setpvf(SV* sv, const char* pat, ...)
4538
497711e7
GS
4539=for hackers
4540Found in file sv.c
4541
954c1994
GS
4542=item sv_setpvf_mg
4543
4544Like C<sv_setpvf>, but also handles 'set' magic.
4545
4546 void sv_setpvf_mg(SV *sv, const char* pat, ...)
4547
497711e7
GS
4548=for hackers
4549Found in file sv.c
4550
46ccc27f
JH
4551=item sv_setpviv
4552
4553Copies an integer into the given SV, also updating its string value.
4554Does not handle 'set' magic. See C<sv_setpviv_mg>.
4555
4556 void sv_setpviv(SV* sv, IV num)
4557
4558=for hackers
4559Found in file sv.c
4560
4561=item sv_setpviv_mg
4562
4563Like C<sv_setpviv>, but also handles 'set' magic.
4564
4565 void sv_setpviv_mg(SV *sv, IV iv)
4566
4567=for hackers
4568Found in file sv.c
4569
954c1994
GS
4570=item sv_setpvn
4571
4572Copies a string into an SV. The C<len> parameter indicates the number of
611e9550
NC
4573bytes to be copied. If the C<ptr> argument is NULL the SV will become
4574undefined. Does not handle 'set' magic. See C<sv_setpvn_mg>.
954c1994
GS
4575
4576 void sv_setpvn(SV* sv, const char* ptr, STRLEN len)
4577
497711e7
GS
4578=for hackers
4579Found in file sv.c
4580
954c1994
GS
4581=item sv_setpvn_mg
4582
4583Like C<sv_setpvn>, but also handles 'set' magic.
4584
4585 void sv_setpvn_mg(SV *sv, const char *ptr, STRLEN len)
4586
497711e7
GS
4587=for hackers
4588Found in file sv.c
4589
954c1994
GS
4590=item sv_setpv_mg
4591
4592Like C<sv_setpv>, but also handles 'set' magic.
4593
4594 void sv_setpv_mg(SV *sv, const char *ptr)
4595
497711e7
GS
4596=for hackers
4597Found in file sv.c
4598
954c1994
GS
4599=item sv_setref_iv
4600
4601Copies an integer into a new SV, optionally blessing the SV. The C<rv>
4602argument will be upgraded to an RV. That RV will be modified to point to
4603the new SV. The C<classname> argument indicates the package for the
4604blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
89e79dea 4605will have a reference count of 1, and the RV will be returned.
954c1994
GS
4606
4607 SV* sv_setref_iv(SV* rv, const char* classname, IV iv)
4608
497711e7
GS
4609=for hackers
4610Found in file sv.c
4611
954c1994
GS
4612=item sv_setref_nv
4613
4614Copies a double into a new SV, optionally blessing the SV. The C<rv>
4615argument will be upgraded to an RV. That RV will be modified to point to
4616the new SV. The C<classname> argument indicates the package for the
4617blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
89e79dea 4618will have a reference count of 1, and the RV will be returned.
954c1994
GS
4619
4620 SV* sv_setref_nv(SV* rv, const char* classname, NV nv)
4621
497711e7
GS
4622=for hackers
4623Found in file sv.c
4624
954c1994
GS
4625=item sv_setref_pv
4626
4627Copies a pointer into a new SV, optionally blessing the SV. The C<rv>
4628argument will be upgraded to an RV. That RV will be modified to point to
4629the new SV. If the C<pv> argument is NULL then C<PL_sv_undef> will be placed
4630into the SV. The C<classname> argument indicates the package for the
4631blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
89e79dea 4632will have a reference count of 1, and the RV will be returned.
954c1994
GS
4633
4634Do not use with other Perl types such as HV, AV, SV, CV, because those
4635objects will become corrupted by the pointer copy process.
4636
4637Note that C<sv_setref_pvn> copies the string while this copies the pointer.
4638
4639 SV* sv_setref_pv(SV* rv, const char* classname, void* pv)
4640
497711e7
GS
4641=for hackers
4642Found in file sv.c
4643
954c1994
GS
4644=item sv_setref_pvn
4645
4646Copies a string into a new SV, optionally blessing the SV. The length of the
4647string must be specified with C<n>. The C<rv> argument will be upgraded to
4648an RV. That RV will be modified to point to the new SV. The C<classname>
4649argument indicates the package for the blessing. Set C<classname> to
89e79dea
JH
4650C<Nullch> to avoid the blessing. The new SV will have a reference count
4651of 1, and the RV will be returned.
954c1994
GS
4652
4653Note that C<sv_setref_pv> copies the pointer while this copies the string.
4654
4655 SV* sv_setref_pvn(SV* rv, const char* classname, char* pv, STRLEN n)
4656
497711e7
GS
4657=for hackers
4658Found in file sv.c
4659
e1c57cef
JH
4660=item sv_setref_uv
4661
4662Copies an unsigned integer into a new SV, optionally blessing the SV. The C<rv>
4663argument will be upgraded to an RV. That RV will be modified to point to
4664the new SV. The C<classname> argument indicates the package for the
4665blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
89e79dea 4666will have a reference count of 1, and the RV will be returned.
e1c57cef
JH
4667
4668 SV* sv_setref_uv(SV* rv, const char* classname, UV uv)
4669
4670=for hackers
4671Found in file sv.c
4672
954c1994
GS
4673=item sv_setsv
4674
645c22ef
DM
4675Copies the contents of the source SV C<ssv> into the destination SV
4676C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
4677function if the source SV needs to be reused. Does not handle 'set' magic.
4678Loosely speaking, it performs a copy-by-value, obliterating any previous
4679content of the destination.
4680
4681You probably want to use one of the assortment of wrappers, such as
4682C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
4683C<SvSetMagicSV_nosteal>.
4684
954c1994
GS
4685 void sv_setsv(SV* dsv, SV* ssv)
4686
497711e7
GS
4687=for hackers
4688Found in file sv.c
4689
8d6d96c1
HS
4690=item sv_setsv_flags
4691
645c22ef
DM
4692Copies the contents of the source SV C<ssv> into the destination SV
4693C<dsv>. The source SV may be destroyed if it is mortal, so don't use this
4694function if the source SV needs to be reused. Does not handle 'set' magic.
4695Loosely speaking, it performs a copy-by-value, obliterating any previous
4696content of the destination.
4697If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on
cd0f72d4
NC
4698C<ssv> if appropriate, else not. If the C<flags> parameter has the
4699C<NOSTEAL> bit set then the buffers of temps will not be stolen. <sv_setsv>
4700and C<sv_setsv_nomg> are implemented in terms of this function.
645c22ef
DM
4701
4702You probably want to use one of the assortment of wrappers, such as
4703C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and
4704C<SvSetMagicSV_nosteal>.
4705
4706This is the primary function for copying scalars, and most other
4707copy-ish functions and macros use this underneath.
8d6d96c1
HS
4708
4709 void sv_setsv_flags(SV* dsv, SV* ssv, I32 flags)
4710
4711=for hackers
4712Found in file sv.c
4713
954c1994
GS
4714=item sv_setsv_mg
4715
4716Like C<sv_setsv>, but also handles 'set' magic.
4717
4718 void sv_setsv_mg(SV *dstr, SV *sstr)
4719
497711e7
GS
4720=for hackers
4721Found in file sv.c
4722
40d34c0d
SB
4723=item sv_setsv_nomg
4724
4725Like C<sv_setsv> but doesn't process magic.
4726
4727 void sv_setsv_nomg(SV* dsv, SV* ssv)
4728
4729=for hackers
4730Found in file sv.h
4731
954c1994
GS
4732=item sv_setuv
4733
645c22ef
DM
4734Copies an unsigned integer into the given SV, upgrading first if necessary.
4735Does not handle 'set' magic. See also C<sv_setuv_mg>.
954c1994
GS
4736
4737 void sv_setuv(SV* sv, UV num)
4738
497711e7
GS
4739=for hackers
4740Found in file sv.c
4741
954c1994
GS
4742=item sv_setuv_mg
4743
4744Like C<sv_setuv>, but also handles 'set' magic.
4745
4746 void sv_setuv_mg(SV *sv, UV u)
4747
497711e7
GS
4748=for hackers
4749Found in file sv.c
4750
645c22ef
DM
4751=item sv_taint
4752
4753Taint an SV. Use C<SvTAINTED_on> instead.
4754 void sv_taint(SV* sv)
4755
4756=for hackers
4757Found in file sv.c
4758
451be7b1
DM
4759=item sv_tainted
4760
4761Test an SV for taintedness. Use C<SvTAINTED> instead.
4762 bool sv_tainted(SV* sv)
4763
4764=for hackers
4765Found in file sv.c
4766
c461cf8f
JH
4767=item sv_true
4768
4769Returns true if the SV has a true value by Perl's rules.
645c22ef
DM
4770Use the C<SvTRUE> macro instead, which may call C<sv_true()> or may
4771instead use an in-line version.
c461cf8f
JH
4772
4773 I32 sv_true(SV *sv)
4774
4775=for hackers
4776Found in file sv.c
4777
4778=item sv_unmagic
4779
645c22ef 4780Removes all magic of type C<type> from an SV.
c461cf8f
JH
4781
4782 int sv_unmagic(SV* sv, int type)
4783
4784=for hackers
4785Found in file sv.c
4786
954c1994
GS
4787=item sv_unref
4788
4789Unsets the RV status of the SV, and decrements the reference count of
4790whatever was being referenced by the RV. This can almost be thought of
b06226ff 4791as a reversal of C<newSVrv>. This is C<sv_unref_flags> with the C<flag>
ae154d6d 4792being zero. See C<SvROK_off>.
954c1994
GS
4793
4794 void sv_unref(SV* sv)
4795
497711e7
GS
4796=for hackers
4797Found in file sv.c
4798
840a7b70
IZ
4799=item sv_unref_flags
4800
4801Unsets the RV status of the SV, and decrements the reference count of
4802whatever was being referenced by the RV. This can almost be thought of
4803as a reversal of C<newSVrv>. The C<cflags> argument can contain
4804C<SV_IMMEDIATE_UNREF> to force the reference count to be decremented
4805(otherwise the decrementing is conditional on the reference count being
4806different from one or the reference being a readonly SV).
ae154d6d 4807See C<SvROK_off>.
840a7b70
IZ
4808
4809 void sv_unref_flags(SV* sv, U32 flags)
4810
4811=for hackers
4812Found in file sv.c
4813
451be7b1
DM
4814=item sv_untaint
4815
4816Untaint an SV. Use C<SvTAINTED_off> instead.
4817 void sv_untaint(SV* sv)
4818
4819=for hackers
4820Found in file sv.c
4821
954c1994
GS
4822=item sv_upgrade
4823
ff276b08 4824Upgrade an SV to a more complex form. Generally adds a new body type to the
645c22ef 4825SV, then copies across as much information as possible from the old body.
ff276b08 4826You generally want to use the C<SvUPGRADE> macro wrapper. See also C<svtype>.
954c1994
GS
4827
4828 bool sv_upgrade(SV* sv, U32 mt)
4829
497711e7
GS
4830=for hackers
4831Found in file sv.c
4832
954c1994
GS
4833=item sv_usepvn
4834
4835Tells an SV to use C<ptr> to find its string value. Normally the string is
1c846c1f 4836stored inside the SV but sv_usepvn allows the SV to use an outside string.
954c1994
GS
4837The C<ptr> should point to memory that was allocated by C<malloc>. The
4838string length, C<len>, must be supplied. This function will realloc the
4839memory pointed to by C<ptr>, so that pointer should not be freed or used by
4840the programmer after giving it to sv_usepvn. Does not handle 'set' magic.
4841See C<sv_usepvn_mg>.
4842
4843 void sv_usepvn(SV* sv, char* ptr, STRLEN len)
4844
497711e7
GS
4845=for hackers
4846Found in file sv.c
4847
954c1994
GS
4848=item sv_usepvn_mg
4849
4850Like C<sv_usepvn>, but also handles 'set' magic.
4851
4852 void sv_usepvn_mg(SV *sv, char *ptr, STRLEN len)
4853
497711e7
GS
4854=for hackers
4855Found in file sv.c
4856
2457d041
JH
4857=item sv_utf8_decode
4858
a48bc54f
TS
4859If the PV of the SV is an octet sequence in UTF-8
4860and contains a multiple-byte character, the C<SvUTF8> flag is turned on
4861so that it looks like a character. If the PV contains only single-byte
4862characters, the C<SvUTF8> flag stays being off.
4863Scans PV for validity and returns false if the PV is invalid UTF-8.
2457d041
JH
4864
4865NOTE: this function is experimental and may change or be
4866removed without notice.
4867
4868 bool sv_utf8_decode(SV *sv)
4869
4870=for hackers
4871Found in file sv.c
4872
c461cf8f
JH
4873=item sv_utf8_downgrade
4874
a48bc54f
TS
4875Attempts to convert the PV of an SV from characters to bytes.
4876If the PV contains a character beyond byte, this conversion will fail;
4877in this case, either returns false or, if C<fail_ok> is not
c461cf8f
JH
4878true, croaks.
4879
9ede5bc8
DM
4880This is not as a general purpose Unicode to byte encoding interface:
4881use the Encode extension for that.
4882
c461cf8f
JH
4883NOTE: this function is experimental and may change or be
4884removed without notice.
4885
4886 bool sv_utf8_downgrade(SV *sv, bool fail_ok)
4887
4888=for hackers
4889Found in file sv.c
4890
4891=item sv_utf8_encode
4892
a48bc54f
TS
4893Converts the PV of an SV to UTF-8, but then turns the C<SvUTF8>
4894flag off so that it looks like octets again.
c461cf8f
JH
4895
4896 void sv_utf8_encode(SV *sv)
4897
4898=for hackers
4899Found in file sv.c
4900
4901=item sv_utf8_upgrade
4902
a48bc54f 4903Converts the PV of an SV to its UTF-8-encoded form.
645c22ef 4904Forces the SV to string form if it is not already.
2457d041
JH
4905Always sets the SvUTF8 flag to avoid future validity checks even
4906if all the bytes have hibit clear.
c461cf8f 4907
9ede5bc8
DM
4908This is not as a general purpose byte encoding to Unicode interface:
4909use the Encode extension for that.
4910
2457d041 4911 STRLEN sv_utf8_upgrade(SV *sv)
c461cf8f
JH
4912
4913=for hackers
4914Found in file sv.c
4915
8d6d96c1
HS
4916=item sv_utf8_upgrade_flags
4917
a48bc54f 4918Converts the PV of an SV to its UTF-8-encoded form.
645c22ef 4919Forces the SV to string form if it is not already.
8d6d96c1
HS
4920Always sets the SvUTF8 flag to avoid future validity checks even
4921if all the bytes have hibit clear. If C<flags> has C<SV_GMAGIC> bit set,
4922will C<mg_get> on C<sv> if appropriate, else not. C<sv_utf8_upgrade> and
4923C<sv_utf8_upgrade_nomg> are implemented in terms of this function.
4924
9ede5bc8
DM
4925This is not as a general purpose byte encoding to Unicode interface:
4926use the Encode extension for that.
4927
8d6d96c1
HS
4928 STRLEN sv_utf8_upgrade_flags(SV *sv, I32 flags)
4929
4930=for hackers
4931Found in file sv.c
4932
645c22ef
DM
4933=item sv_uv
4934
4935A private implementation of the C<SvUVx> macro for compilers which can't
4936cope with complex macro expressions. Always use the macro instead.
4937
4938 UV sv_uv(SV* sv)
4939
4940=for hackers
4941Found in file sv.c
4942
c4a661a8
NC
4943=item sv_vcatpvf
4944
4945Processes its arguments like C<vsprintf> and appends the formatted output
4946to an SV. Does not handle 'set' magic. See C<sv_vcatpvf_mg>.
4947
4948Usually used via its frontend C<sv_catpvf>.
4949
4950 void sv_vcatpvf(SV* sv, const char* pat, va_list* args)
4951
4952=for hackers
4953Found in file sv.c
4954
954c1994
GS
4955=item sv_vcatpvfn
4956
4957Processes its arguments like C<vsprintf> and appends the formatted output
4958to an SV. Uses an array of SVs if the C style variable argument list is
4959missing (NULL). When running with taint checks enabled, indicates via
4960C<maybe_tainted> if results are untrustworthy (often due to the use of
4961locales).
4962
e2b56717
AL
4963XXX Except that it maybe_tainted is never assigned to.
4964
c4a661a8 4965Usually used via one of its frontends C<sv_vcatpvf> and C<sv_vcatpvf_mg>.
645c22ef 4966
954c1994
GS
4967 void sv_vcatpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
4968
497711e7
GS
4969=for hackers
4970Found in file sv.c
4971
c4a661a8
NC
4972=item sv_vcatpvf_mg
4973
4974Like C<sv_vcatpvf>, but also handles 'set' magic.
4975
4976Usually used via its frontend C<sv_catpvf_mg>.
4977
4978 void sv_vcatpvf_mg(SV* sv, const char* pat, va_list* args)
4979
4980=for hackers
4981Found in file sv.c
4982
4983=item sv_vsetpvf
4984
4985Works like C<sv_vcatpvf> but copies the text into the SV instead of
4986appending it. Does not handle 'set' magic. See C<sv_vsetpvf_mg>.
4987
4988Usually used via its frontend C<sv_setpvf>.
4989
4990 void sv_vsetpvf(SV* sv, const char* pat, va_list* args)
4991
4992=for hackers
4993Found in file sv.c
4994
954c1994
GS
4995=item sv_vsetpvfn
4996
c4a661a8 4997Works like C<sv_vcatpvfn> but copies the text into the SV instead of
954c1994
GS
4998appending it.
4999
c4a661a8 5000Usually used via one of its frontends C<sv_vsetpvf> and C<sv_vsetpvf_mg>.
645c22ef 5001
954c1994
GS
5002 void sv_vsetpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
5003
497711e7 5004=for hackers
94bdecf9
JH
5005Found in file sv.c
5006
c4a661a8
NC
5007=item sv_vsetpvf_mg
5008
5009Like C<sv_vsetpvf>, but also handles 'set' magic.
5010
5011Usually used via its frontend C<sv_setpvf_mg>.
5012
5013 void sv_vsetpvf_mg(SV* sv, const char* pat, va_list* args)
5014
5015=for hackers
5016Found in file sv.c
5017
94bdecf9
JH
5018
5019=back
5020
5021=head1 Unicode Support
5022
5023=over 8
5024
5025=item bytes_from_utf8
5026
cd458e05 5027Converts a string C<s> of length C<len> from UTF-8 into byte encoding.
7120cae1 5028Unlike C<utf8_to_bytes> but like C<bytes_to_utf8>, returns a pointer to
94bdecf9
JH
5029the newly-created string, and updates C<len> to contain the new
5030length. Returns the original string if no conversion occurs, C<len>
5031is unchanged. Do nothing if C<is_utf8> points to 0. Sets C<is_utf8> to
50320 if C<s> is converted or contains all 7bit characters.
5033
5034NOTE: this function is experimental and may change or be
5035removed without notice.
5036
ec6f298e 5037 U8* bytes_from_utf8(U8 *s, STRLEN *len, bool *is_utf8)
94bdecf9
JH
5038
5039=for hackers
5040Found in file utf8.c
5041
5042=item bytes_to_utf8
5043
cd458e05 5044Converts a string C<s> of length C<len> from ASCII into UTF-8 encoding.
94bdecf9
JH
5045Returns a pointer to the newly-created string, and sets C<len> to
5046reflect the new length.
5047
cd458e05 5048If you want to convert to UTF-8 from other encodings than ASCII,
5835a535
JH
5049see sv_recode_to_utf8().
5050
94bdecf9
JH
5051NOTE: this function is experimental and may change or be
5052removed without notice.
5053
5054 U8* bytes_to_utf8(U8 *s, STRLEN *len)
5055
5056=for hackers
5057Found in file utf8.c
5058
5059=item ibcmp_utf8
5060
5061Return true if the strings s1 and s2 differ case-insensitively, false
5062if not (if they are equal case-insensitively). If u1 is true, the
5063string s1 is assumed to be in UTF-8-encoded Unicode. If u2 is true,
5064the string s2 is assumed to be in UTF-8-encoded Unicode. If u1 or u2
5065are false, the respective string is assumed to be in native 8-bit
5066encoding.
5067
5068If the pe1 and pe2 are non-NULL, the scanning pointers will be copied
5069in there (they will point at the beginning of the I<next> character).
5070If the pointers behind pe1 or pe2 are non-NULL, they are the end
5071pointers beyond which scanning will not continue under any
e93457dc 5072circumstances. If the byte lengths l1 and l2 are non-zero, s1+l1 and
94bdecf9
JH
5073s2+l2 will be used as goal end pointers that will also stop the scan,
5074and which qualify towards defining a successful match: all the scans
5075that define an explicit length must reach their goal pointers for
5076a match to succeed).
5077
5078For case-insensitiveness, the "casefolding" of Unicode is used
5079instead of upper/lowercasing both the characters, see
5080http://www.unicode.org/unicode/reports/tr21/ (Case Mappings).
5081
5082 I32 ibcmp_utf8(const char* a, char **pe1, UV l1, bool u1, const char* b, char **pe2, UV l2, bool u2)
5083
5084=for hackers
5085Found in file utf8.c
5086
5087=item is_utf8_char
5088
5089Tests if some arbitrary number of bytes begins in a valid UTF-8
641d4181
JH
5090character. Note that an INVARIANT (i.e. ASCII) character is a valid
5091UTF-8 character. The actual number of bytes in the UTF-8 character
5092will be returned if it is valid, otherwise 0.
94bdecf9
JH
5093
5094 STRLEN is_utf8_char(U8 *p)
5095
5096=for hackers
5097Found in file utf8.c
5098
5099=item is_utf8_string
5100
5835a535 5101Returns true if first C<len> bytes of the given string form a valid
cd458e05
JH
5102UTF-8 string, false otherwise. Note that 'a valid UTF-8 string' does
5103not mean 'a string that contains code points above 0x7F encoded in UTF-8'
5104because a valid ASCII string is a valid UTF-8 string.
94bdecf9
JH
5105
5106 bool is_utf8_string(U8 *s, STRLEN len)
5107
5108=for hackers
5109Found in file utf8.c
497711e7 5110
9c20fa4a
JH
5111=item is_utf8_string_loc
5112
5113Like is_ut8_string but store the location of the failure in
5114the last argument.
5115
5116 bool is_utf8_string_loc(U8 *s, STRLEN len, U8 **p)
5117
5118=for hackers
5119Found in file utf8.c
5120
94bdecf9 5121=item pv_uni_display
954c1994 5122
94bdecf9
JH
5123Build to the scalar dsv a displayable version of the string spv,
5124length len, the displayable version being at most pvlim bytes long
5125(if longer, the rest is truncated and "..." will be appended).
0a2ef054
JH
5126
5127The flags argument can have UNI_DISPLAY_ISPRINT set to display
a4f1a029 5128isPRINT()able characters as themselves, UNI_DISPLAY_BACKSLASH
0a2ef054
JH
5129to display the \\[nrfta\\] as the backslashed versions (like '\n')
5130(UNI_DISPLAY_BACKSLASH is preferred over UNI_DISPLAY_ISPRINT for \\).
5131UNI_DISPLAY_QQ (and its alias UNI_DISPLAY_REGEX) have both
5132UNI_DISPLAY_BACKSLASH and UNI_DISPLAY_ISPRINT turned on.
5133
94bdecf9 5134The pointer to the PV of the dsv is returned.
954c1994 5135
ec6f298e 5136 char* pv_uni_display(SV *dsv, U8 *spv, STRLEN len, STRLEN pvlim, UV flags)
954c1994 5137
497711e7 5138=for hackers
94bdecf9 5139Found in file utf8.c
497711e7 5140
975adce1
JH
5141=item sv_cat_decode
5142
5143The encoding is assumed to be an Encode object, the PV of the ssv is
5144assumed to be octets in that encoding and decoding the input starts
5145from the position which (PV + *offset) pointed to. The dsv will be
5146concatenated the decoded UTF-8 string from ssv. Decoding will terminate
5147when the string tstr appears in decoding output or the input ends on
5148the PV of the ssv. The value which the offset points will be modified
5149to the last input position on the ssv.
5150
5151Returns TRUE if the terminator was found, else returns FALSE.
5152
5153 bool sv_cat_decode(SV* dsv, SV *encoding, SV *ssv, int *offset, char* tstr, int tlen)
5154
5155=for hackers
5156Found in file sv.c
5157
94bdecf9 5158=item sv_recode_to_utf8
954c1994 5159
94bdecf9
JH
5160The encoding is assumed to be an Encode object, on entry the PV
5161of the sv is assumed to be octets in that encoding, and the sv
5162will be converted into Unicode (and UTF-8).
954c1994 5163
94bdecf9
JH
5164If the sv already is UTF-8 (or if it is not POK), or if the encoding
5165is not a reference, nothing is done to the sv. If the encoding is not
5166an C<Encode::XS> Encoding object, bad things will happen.
5167(See F<lib/encoding.pm> and L<Encode>).
5168
5169The PV of the sv is returned.
5170
5171 char* sv_recode_to_utf8(SV* sv, SV *encoding)
954c1994 5172
497711e7 5173=for hackers
94bdecf9 5174Found in file sv.c
497711e7 5175
94bdecf9 5176=item sv_uni_display
954c1994 5177
94bdecf9 5178Build to the scalar dsv a displayable version of the scalar sv,
0a2ef054 5179the displayable version being at most pvlim bytes long
94bdecf9 5180(if longer, the rest is truncated and "..." will be appended).
0a2ef054
JH
5181
5182The flags argument is as in pv_uni_display().
5183
94bdecf9 5184The pointer to the PV of the dsv is returned.
954c1994 5185
94bdecf9 5186 char* sv_uni_display(SV *dsv, SV *ssv, STRLEN pvlim, UV flags)
954c1994 5187
497711e7 5188=for hackers
94bdecf9 5189Found in file utf8.c
497711e7 5190
6b5c0936
JH
5191=item to_utf8_case
5192
5193The "p" contains the pointer to the UTF-8 string encoding
5194the character that is being converted.
5195
5196The "ustrp" is a pointer to the character buffer to put the
5197conversion result to. The "lenp" is a pointer to the length
5198of the result.
5199
12b7c5c7 5200The "swashp" is a pointer to the swash to use.
6b5c0936 5201
12b7c5c7
JH
5202Both the special and normal mappings are stored lib/unicore/To/Foo.pl,
5203and loaded by SWASHGET, using lib/utf8_heavy.pl. The special (usually,
5204but not always, a multicharacter mapping), is tried first.
5205
5206The "special" is a string like "utf8::ToSpecLower", which means the
5207hash %utf8::ToSpecLower. The access to the hash is through
5208Perl_to_utf8_case().
6b5c0936 5209
12b7c5c7
JH
5210The "normal" is a string like "ToLower" which means the swash
5211%utf8::ToLower.
6b5c0936
JH
5212
5213 UV to_utf8_case(U8 *p, U8* ustrp, STRLEN *lenp, SV **swash, char *normal, char *special)
5214
5215=for hackers
5216Found in file utf8.c
5217
d3e79532
JH
5218=item to_utf8_fold
5219
5220Convert the UTF-8 encoded character at p to its foldcase version and
5221store that in UTF-8 in ustrp and its length in bytes in lenp. Note
1269d4dd 5222that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the
d3e79532
JH
5223foldcase version may be longer than the original character (up to
5224three characters).
5225
5226The first character of the foldcased version is returned
5227(but note, as explained above, that there may be more.)
5228
5229 UV to_utf8_fold(U8 *p, U8* ustrp, STRLEN *lenp)
5230
5231=for hackers
5232Found in file utf8.c
5233
5234=item to_utf8_lower
5235
5236Convert the UTF-8 encoded character at p to its lowercase version and
5237store that in UTF-8 in ustrp and its length in bytes in lenp. Note
1269d4dd
NC
5238that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the
5239lowercase version may be longer than the original character.
d3e79532
JH
5240
5241The first character of the lowercased version is returned
5242(but note, as explained above, that there may be more.)
5243
5244 UV to_utf8_lower(U8 *p, U8* ustrp, STRLEN *lenp)
5245
5246=for hackers
5247Found in file utf8.c
5248
5249=item to_utf8_title
5250
5251Convert the UTF-8 encoded character at p to its titlecase version and
5252store that in UTF-8 in ustrp and its length in bytes in lenp. Note
1269d4dd
NC
5253that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the
5254titlecase version may be longer than the original character.
d3e79532
JH
5255
5256The first character of the titlecased version is returned
5257(but note, as explained above, that there may be more.)
5258
5259 UV to_utf8_title(U8 *p, U8* ustrp, STRLEN *lenp)
5260
5261=for hackers
5262Found in file utf8.c
5263
5264=item to_utf8_upper
5265
5266Convert the UTF-8 encoded character at p to its uppercase version and
5267store that in UTF-8 in ustrp and its length in bytes in lenp. Note
1269d4dd
NC
5268that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since
5269the uppercase version may be longer than the original character.
d3e79532
JH
5270
5271The first character of the uppercased version is returned
5272(but note, as explained above, that there may be more.)
5273
5274 UV to_utf8_upper(U8 *p, U8* ustrp, STRLEN *lenp)
5275
5276=for hackers
5277Found in file utf8.c
5278
282f25c9
JH
5279=item utf8n_to_uvchr
5280
5281Returns the native character value of the first character in the string C<s>
cd458e05 5282which is assumed to be in UTF-8 encoding; C<retlen> will be set to the
282f25c9
JH
5283length, in bytes, of that character.
5284
5285Allows length and flags to be passed to low level routine.
5286
5287 UV utf8n_to_uvchr(U8 *s, STRLEN curlen, STRLEN* retlen, U32 flags)
5288
5289=for hackers
5290Found in file utf8.c
5291
5292=item utf8n_to_uvuni
5293
5294Bottom level UTF-8 decode routine.
5295Returns the unicode code point value of the first character in the string C<s>
cd458e05 5296which is assumed to be in UTF-8 encoding and no longer than C<curlen>;
282f25c9
JH
5297C<retlen> will be set to the length, in bytes, of that character.
5298
cd458e05 5299If C<s> does not point to a well-formed UTF-8 character, the behaviour
282f25c9
JH
5300is dependent on the value of C<flags>: if it contains UTF8_CHECK_ONLY,
5301it is assumed that the caller will raise a warning, and this function
5302will silently just set C<retlen> to C<-1> and return zero. If the
5303C<flags> does not contain UTF8_CHECK_ONLY, warnings about
5304malformations will be given, C<retlen> will be set to the expected
5305length of the UTF-8 character in bytes, and zero will be returned.
5306
5307The C<flags> can also contain various flags to allow deviations from
5308the strict UTF-8 encoding (see F<utf8.h>).
5309
5310Most code should use utf8_to_uvchr() rather than call this directly.
5311
5312 UV utf8n_to_uvuni(U8 *s, STRLEN curlen, STRLEN* retlen, U32 flags)
5313
5314=for hackers
5315Found in file utf8.c
5316
b06226ff
JH
5317=item utf8_distance
5318
cd458e05 5319Returns the number of UTF-8 characters between the UTF-8 pointers C<a>
b06226ff
JH
5320and C<b>.
5321
5322WARNING: use only if you *know* that the pointers point inside the
5323same UTF-8 buffer.
5324
5325 IV utf8_distance(U8 *a, U8 *b)
5326
5327=for hackers
5328Found in file utf8.c
5329
5330=item utf8_hop
5331
8850bf83
JH
5332Return the UTF-8 pointer C<s> displaced by C<off> characters, either
5333forward or backward.
b06226ff
JH
5334
5335WARNING: do not use the following unless you *know* C<off> is within
8850bf83
JH
5336the UTF-8 data pointed to by C<s> *and* that on entry C<s> is aligned
5337on the first byte of character or just after the last byte of a character.
b06226ff 5338
24c2fff4 5339 U8* utf8_hop(U8 *s, I32 off)
b06226ff
JH
5340
5341=for hackers
5342Found in file utf8.c
5343
5344=item utf8_length
5345
5346Return the length of the UTF-8 char encoded string C<s> in characters.
5347Stops at C<e> (inclusive). If C<e E<lt> s> or if the scan would end
5348up past C<e>, croaks.
5349
5350 STRLEN utf8_length(U8* s, U8 *e)
5351
5352=for hackers
5353Found in file utf8.c
5354
497711e7
GS
5355=item utf8_to_bytes
5356
cd458e05 5357Converts a string C<s> of length C<len> from UTF-8 into byte encoding.
246fae53
MG
5358Unlike C<bytes_to_utf8>, this over-writes the original string, and
5359updates len to contain the new length.
67e989fb 5360Returns zero on failure, setting C<len> to -1.
497711e7 5361
eebe1485
SC
5362NOTE: this function is experimental and may change or be
5363removed without notice.
5364
5365 U8* utf8_to_bytes(U8 *s, STRLEN *len)
497711e7
GS
5366
5367=for hackers
5368Found in file utf8.c
5369
282f25c9 5370=item utf8_to_uvchr
b6b716fe 5371
282f25c9 5372Returns the native character value of the first character in the string C<s>
cd458e05 5373which is assumed to be in UTF-8 encoding; C<retlen> will be set to the
282f25c9 5374length, in bytes, of that character.
28d3d195 5375
cd458e05 5376If C<s> does not point to a well-formed UTF-8 character, zero is
282f25c9 5377returned and retlen is set, if possible, to -1.
444155da 5378
282f25c9 5379 UV utf8_to_uvchr(U8 *s, STRLEN* retlen)
444155da
JH
5380
5381=for hackers
5382Found in file utf8.c
5383
282f25c9 5384=item utf8_to_uvuni
444155da 5385
282f25c9 5386Returns the Unicode code point of the first character in the string C<s>
cd458e05 5387which is assumed to be in UTF-8 encoding; C<retlen> will be set to the
1aa99e6b 5388length, in bytes, of that character.
444155da 5389
282f25c9
JH
5390This function should only be used when returned UV is considered
5391an index into the Unicode semantic tables (e.g. swashes).
5392
cd458e05 5393If C<s> does not point to a well-formed UTF-8 character, zero is
dcad2880 5394returned and retlen is set, if possible, to -1.
b6b716fe 5395
282f25c9
JH
5396 UV utf8_to_uvuni(U8 *s, STRLEN* retlen)
5397
5398=for hackers
5399Found in file utf8.c
5400
5401=item uvchr_to_utf8
5402
cd458e05 5403Adds the UTF-8 representation of the Native codepoint C<uv> to the end
1269d4dd 5404of the string C<d>; C<d> should be have at least C<UTF8_MAXBYTES+1> free
282f25c9
JH
5405bytes available. The return value is the pointer to the byte after the
5406end of the new character. In other words,
5407
5408 d = uvchr_to_utf8(d, uv);
5409
5410is the recommended wide native character-aware way of saying
5411
5412 *(d++) = uv;
5413
5414 U8* uvchr_to_utf8(U8 *d, UV uv)
eebe1485
SC
5415
5416=for hackers
5417Found in file utf8.c
5418
b851fbc1 5419=item uvuni_to_utf8_flags
eebe1485 5420
cd458e05 5421Adds the UTF-8 representation of the Unicode codepoint C<uv> to the end
1269d4dd 5422of the string C<d>; C<d> should be have at least C<UTF8_MAXBYTES+1> free
eebe1485 5423bytes available. The return value is the pointer to the byte after the
282f25c9 5424end of the new character. In other words,
eebe1485 5425
b851fbc1
JH
5426 d = uvuni_to_utf8_flags(d, uv, flags);
5427
5428or, in most cases,
5429
282f25c9 5430 d = uvuni_to_utf8(d, uv);
eebe1485 5431
b851fbc1
JH
5432(which is equivalent to)
5433
5434 d = uvuni_to_utf8_flags(d, uv, 0);
5435
eebe1485
SC
5436is the recommended Unicode-aware way of saying
5437
5438 *(d++) = uv;
5439
b851fbc1 5440 U8* uvuni_to_utf8_flags(U8 *d, UV uv, UV flags)
b6b716fe
SC
5441
5442=for hackers
5443Found in file utf8.c
5444
497711e7 5445
94bdecf9 5446=back
954c1994 5447
94bdecf9 5448=head1 Variables created by C<xsubpp> and C<xsubpp> internal functions
954c1994 5449
94bdecf9 5450=over 8
954c1994 5451
94bdecf9 5452=item ax
497711e7 5453
94bdecf9
JH
5454Variable which is setup by C<xsubpp> to indicate the stack base offset,
5455used by the C<ST>, C<XSprePUSH> and C<XSRETURN> macros. The C<dMARK> macro
5456must be called prior to setup the C<MARK> variable.
954c1994 5457
94bdecf9 5458 I32 ax
954c1994 5459
497711e7
GS
5460=for hackers
5461Found in file XSUB.h
5462
94bdecf9 5463=item CLASS
954c1994 5464
94bdecf9
JH
5465Variable which is setup by C<xsubpp> to indicate the
5466class name for a C++ XS constructor. This is always a C<char*>. See C<THIS>.
954c1994 5467
94bdecf9 5468 char* CLASS
954c1994 5469
497711e7
GS
5470=for hackers
5471Found in file XSUB.h
5472
94bdecf9 5473=item dAX
954c1994 5474
94bdecf9
JH
5475Sets up the C<ax> variable.
5476This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
954c1994 5477
94bdecf9 5478 dAX;
954c1994 5479
497711e7
GS
5480=for hackers
5481Found in file XSUB.h
5482
e503e849
NC
5483=item dAXMARK
5484
5485Sets up the C<ax> variable and stack marker variable C<mark>.
5486This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
5487
5488 dAXMARK;
5489
5490=for hackers
5491Found in file XSUB.h
5492
94bdecf9 5493=item dITEMS
954c1994 5494
94bdecf9
JH
5495Sets up the C<items> variable.
5496This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
954c1994 5497
94bdecf9 5498 dITEMS;
954c1994 5499
497711e7
GS
5500=for hackers
5501Found in file XSUB.h
5502
94bdecf9 5503=item dXSARGS
954c1994 5504
94bdecf9
JH
5505Sets up stack and mark pointers for an XSUB, calling dSP and dMARK.
5506Sets up the C<ax> and C<items> variables by calling C<dAX> and C<dITEMS>.
5507This is usually handled automatically by C<xsubpp>.
954c1994 5508
94bdecf9 5509 dXSARGS;
954c1994 5510
497711e7
GS
5511=for hackers
5512Found in file XSUB.h
5513
94bdecf9 5514=item dXSI32
954c1994 5515
94bdecf9
JH
5516Sets up the C<ix> variable for an XSUB which has aliases. This is usually
5517handled automatically by C<xsubpp>.
954c1994 5518
94bdecf9 5519 dXSI32;
954c1994 5520
497711e7
GS
5521=for hackers
5522Found in file XSUB.h
5523
94bdecf9 5524=item items
954c1994 5525
94bdecf9
JH
5526Variable which is setup by C<xsubpp> to indicate the number of
5527items on the stack. See L<perlxs/"Variable-length Parameter Lists">.
954c1994 5528
94bdecf9 5529 I32 items
954c1994 5530
497711e7
GS
5531=for hackers
5532Found in file XSUB.h
5533
94bdecf9 5534=item ix
954c1994 5535
94bdecf9
JH
5536Variable which is setup by C<xsubpp> to indicate which of an
5537XSUB's aliases was used to invoke it. See L<perlxs/"The ALIAS: Keyword">.
954c1994 5538
94bdecf9 5539 I32 ix
954c1994 5540
497711e7
GS
5541=for hackers
5542Found in file XSUB.h
5543
94bdecf9 5544=item newXSproto
954c1994 5545
94bdecf9
JH
5546Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to
5547the subs.
954c1994 5548
497711e7
GS
5549=for hackers
5550Found in file XSUB.h
5551
94bdecf9 5552=item RETVAL
954c1994 5553
94bdecf9
JH
5554Variable which is setup by C<xsubpp> to hold the return value for an
5555XSUB. This is always the proper type for the XSUB. See
5556L<perlxs/"The RETVAL Variable">.
954c1994 5557
94bdecf9 5558 (whatever) RETVAL
954c1994 5559
497711e7
GS
5560=for hackers
5561Found in file XSUB.h
5562
94bdecf9 5563=item ST
954c1994 5564
94bdecf9 5565Used to access elements on the XSUB's stack.
954c1994 5566
94bdecf9 5567 SV* ST(int ix)
954c1994 5568
497711e7
GS
5569=for hackers
5570Found in file XSUB.h
5571
94bdecf9 5572=item THIS
954c1994 5573
94bdecf9
JH
5574Variable which is setup by C<xsubpp> to designate the object in a C++
5575XSUB. This is always the proper type for the C++ object. See C<CLASS> and
5576L<perlxs/"Using XS With C++">.
954c1994 5577
94bdecf9 5578 (whatever) THIS
954c1994 5579
497711e7
GS
5580=for hackers
5581Found in file XSUB.h
5582
94bdecf9 5583=item XS
954c1994 5584
94bdecf9
JH
5585Macro to declare an XSUB and its C parameter list. This is handled by
5586C<xsubpp>.
954c1994 5587
497711e7
GS
5588=for hackers
5589Found in file XSUB.h
5590
954c1994
GS
5591=item XS_VERSION
5592
5593The version identifier for an XS module. This is usually
5594handled automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>.
5595
497711e7
GS
5596=for hackers
5597Found in file XSUB.h
5598
954c1994
GS
5599=item XS_VERSION_BOOTCHECK
5600
5601Macro to verify that a PM module's $VERSION variable matches the XS
5602module's C<XS_VERSION> variable. This is usually handled automatically by
5603C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">.
5604
5605 XS_VERSION_BOOTCHECK;
5606
497711e7
GS
5607=for hackers
5608Found in file XSUB.h
5609
954c1994 5610
94bdecf9 5611=back
954c1994 5612
94bdecf9
JH
5613=head1 Warning and Dieing
5614
5615=over 8
5616
5617=item croak
5618
5619This is the XSUB-writer's interface to Perl's C<die> function.
be0b3d4b
NC
5620Normally call this function the same way you call the C C<printf>
5621function. Calling C<croak> returns control directly to Perl,
5622sidestepping the normal C order of execution. See C<warn>.
94bdecf9
JH
5623
5624If you want to throw an exception object, assign the object to
5625C<$@> and then pass C<Nullch> to croak():
5626
5627 errsv = get_sv("@", TRUE);
5628 sv_setsv(errsv, exception_object);
5629 croak(Nullch);
5630
5631 void croak(const char* pat, ...)
954c1994 5632
497711e7 5633=for hackers
94bdecf9
JH
5634Found in file util.c
5635
5636=item warn
5637
be0b3d4b
NC
5638This is the XSUB-writer's interface to Perl's C<warn> function. Call this
5639function the same way you call the C C<printf> function. See C<croak>.
94bdecf9
JH
5640
5641 void warn(const char* pat, ...)
5642
5643=for hackers
5644Found in file util.c
5645
497711e7 5646
954c1994
GS
5647=back
5648
5649=head1 AUTHORS
5650
5651Until May 1997, this document was maintained by Jeff Okamoto
5652<okamoto@corp.hp.com>. It is now maintained as part of Perl itself.
5653
5654With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
5655Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
5656Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
5657Stephen McCamant, and Gurusamy Sarathy.
5658
5659API Listing originally by Dean Roehrich <roehrich@cray.com>.
5660
5661Updated to be autogenerated from comments in the source by Benjamin Stuhl.
5662
5663=head1 SEE ALSO
5664
5665perlguts(1), perlxs(1), perlxstut(1), perlintern(1)
5666