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