[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 -*- buffer-read-only: t -*- 2 3 !!!!!!! DO NOT EDIT THIS FILE !!!!!!! 4 This file is built by autodoc.pl extracting documentation from the C source 5 files. 6 7 =head1 NAME 8 9 perlapi - autogenerated documentation for the perl public API 10 11 =head1 DESCRIPTION 12 X<Perl API> X<API> X<api> 13 14 This file contains the documentation of the perl public API generated by 15 embed.pl, specifically a listing of functions, macros, flags, and variables 16 that may be used by extension writers. The interfaces of any functions that 17 are not listed here are subject to change without notice. For this reason, 18 blindly using functions listed in proto.h is to be avoided when writing 19 extensions. 20 21 Note that all Perl API global variables must be referenced with the C<PL_> 22 prefix. Some macros are provided for compatibility with the older, 23 unadorned names, but this support may be disabled in a future release. 24 25 The listing is alphabetical, case insensitive. 26 27 28 =head1 "Gimme" Values 29 30 =over 8 31 32 =item GIMME 33 X<GIMME> 34 35 A backward-compatible version of C<GIMME_V> which can only return 36 C<G_SCALAR> or C<G_ARRAY>; in a void context, it returns C<G_SCALAR>. 37 Deprecated. Use C<GIMME_V> instead. 38 39 U32 GIMME 40 41 =for hackers 42 Found in file op.h 43 44 =item GIMME_V 45 X<GIMME_V> 46 47 The XSUB-writer's equivalent to Perl's C<wantarray>. Returns C<G_VOID>, 48 C<G_SCALAR> or C<G_ARRAY> for void, scalar or list context, 49 respectively. 50 51 U32 GIMME_V 52 53 =for hackers 54 Found in file op.h 55 56 =item G_ARRAY 57 X<G_ARRAY> 58 59 Used to indicate list context. See C<GIMME_V>, C<GIMME> and 60 L<perlcall>. 61 62 =for hackers 63 Found in file cop.h 64 65 =item G_DISCARD 66 X<G_DISCARD> 67 68 Indicates that arguments returned from a callback should be discarded. See 69 L<perlcall>. 70 71 =for hackers 72 Found in file cop.h 73 74 =item G_EVAL 75 X<G_EVAL> 76 77 Used to force a Perl C<eval> wrapper around a callback. See 78 L<perlcall>. 79 80 =for hackers 81 Found in file cop.h 82 83 =item G_NOARGS 84 X<G_NOARGS> 85 86 Indicates that no arguments are being sent to a callback. See 87 L<perlcall>. 88 89 =for hackers 90 Found in file cop.h 91 92 =item G_SCALAR 93 X<G_SCALAR> 94 95 Used to indicate scalar context. See C<GIMME_V>, C<GIMME>, and 96 L<perlcall>. 97 98 =for hackers 99 Found in file cop.h 100 101 =item G_VOID 102 X<G_VOID> 103 104 Used to indicate void context. See C<GIMME_V> and L<perlcall>. 105 106 =for hackers 107 Found in file cop.h 108 109 110 =back 111 112 =head1 Array Manipulation Functions 113 114 =over 8 115 116 =item AvFILL 117 X<AvFILL> 118 119 Same as C<av_len()>. Deprecated, use C<av_len()> instead. 120 121 int AvFILL(AV* av) 122 123 =for hackers 124 Found in file av.h 125 126 =item av_clear 127 X<av_clear> 128 129 Clears an array, making it empty. Does not free the memory used by the 130 array itself. 131 132 void av_clear(AV* ar) 133 134 =for hackers 135 Found in file av.c 136 137 =item av_create_and_push 138 X<av_create_and_push> 139 140 Push an SV onto the end of the array, creating the array if necessary. 141 A small internal helper function to remove a commonly duplicated idiom. 142 143 NOTE: this function is experimental and may change or be 144 removed without notice. 145 146 void av_create_and_push(AV **const avp, SV *const val) 147 148 =for hackers 149 Found in file av.c 150 151 =item av_create_and_unshift_one 152 X<av_create_and_unshift_one> 153 154 Unshifts an SV onto the beginning of the array, creating the array if 155 necessary. 156 A small internal helper function to remove a commonly duplicated idiom. 157 158 NOTE: this function is experimental and may change or be 159 removed without notice. 160 161 SV** av_create_and_unshift_one(AV **const avp, SV *const val) 162 163 =for hackers 164 Found in file av.c 165 166 =item av_delete 167 X<av_delete> 168 169 Deletes the element indexed by C<key> from the array. Returns the 170 deleted element. If C<flags> equals C<G_DISCARD>, the element is freed 171 and null is returned. 172 173 SV* av_delete(AV* ar, I32 key, I32 flags) 174 175 =for hackers 176 Found in file av.c 177 178 =item av_exists 179 X<av_exists> 180 181 Returns true if the element indexed by C<key> has been initialized. 182 183 This relies on the fact that uninitialized array elements are set to 184 C<&PL_sv_undef>. 185 186 bool av_exists(AV* ar, I32 key) 187 188 =for hackers 189 Found in file av.c 190 191 =item av_extend 192 X<av_extend> 193 194 Pre-extend an array. The C<key> is the index to which the array should be 195 extended. 196 197 void av_extend(AV* ar, I32 key) 198 199 =for hackers 200 Found in file av.c 201 202 =item av_fetch 203 X<av_fetch> 204 205 Returns the SV at the specified index in the array. The C<key> is the 206 index. If C<lval> is set then the fetch will be part of a store. Check 207 that the return value is non-null before dereferencing it to a C<SV*>. 208 209 See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for 210 more information on how to use this function on tied arrays. 211 212 SV** av_fetch(AV* ar, I32 key, I32 lval) 213 214 =for hackers 215 Found in file av.c 216 217 =item av_fill 218 X<av_fill> 219 220 Set the highest index in the array to the given number, equivalent to 221 Perl's C<$#array = $fill;>. 222 223 The number of elements in the an array will be C<fill + 1> after 224 av_fill() returns. If the array was previously shorter then the 225 additional elements appended are set to C<PL_sv_undef>. If the array 226 was longer, then the excess elements are freed. C<av_fill(av, -1)> is 227 the same as C<av_clear(av)>. 228 229 void av_fill(AV* ar, I32 fill) 230 231 =for hackers 232 Found in file av.c 233 234 =item av_len 235 X<av_len> 236 237 Returns the highest index in the array. The number of elements in the 238 array is C<av_len(av) + 1>. Returns -1 if the array is empty. 239 240 I32 av_len(const AV* ar) 241 242 =for hackers 243 Found in file av.c 244 245 =item av_make 246 X<av_make> 247 248 Creates a new AV and populates it with a list of SVs. The SVs are copied 249 into the array, so they may be freed after the call to av_make. The new AV 250 will have a reference count of 1. 251 252 AV* av_make(I32 size, SV** svp) 253 254 =for hackers 255 Found in file av.c 256 257 =item av_pop 258 X<av_pop> 259 260 Pops an SV off the end of the array. Returns C<&PL_sv_undef> if the array 261 is empty. 262 263 SV* av_pop(AV* ar) 264 265 =for hackers 266 Found in file av.c 267 268 =item av_push 269 X<av_push> 270 271 Pushes an SV onto the end of the array. The array will grow automatically 272 to accommodate the addition. 273 274 void av_push(AV* ar, SV* val) 275 276 =for hackers 277 Found in file av.c 278 279 =item av_shift 280 X<av_shift> 281 282 Shifts an SV off the beginning of the array. 283 284 SV* av_shift(AV* ar) 285 286 =for hackers 287 Found in file av.c 288 289 =item av_store 290 X<av_store> 291 292 Stores an SV in an array. The array index is specified as C<key>. The 293 return value will be NULL if the operation failed or if the value did not 294 need to be actually stored within the array (as in the case of tied 295 arrays). Otherwise it can be dereferenced to get the original C<SV*>. Note 296 that the caller is responsible for suitably incrementing the reference 297 count of C<val> before the call, and decrementing it if the function 298 returned NULL. 299 300 See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for 301 more information on how to use this function on tied arrays. 302 303 SV** av_store(AV* ar, I32 key, SV* val) 304 305 =for hackers 306 Found in file av.c 307 308 =item av_undef 309 X<av_undef> 310 311 Undefines the array. Frees the memory used by the array itself. 312 313 void av_undef(AV* ar) 314 315 =for hackers 316 Found in file av.c 317 318 =item av_unshift 319 X<av_unshift> 320 321 Unshift the given number of C<undef> values onto the beginning of the 322 array. The array will grow automatically to accommodate the addition. You 323 must then use C<av_store> to assign values to these new elements. 324 325 void av_unshift(AV* ar, I32 num) 326 327 =for hackers 328 Found in file av.c 329 330 =item get_av 331 X<get_av> 332 333 Returns the AV of the specified Perl array. If C<create> is set and the 334 Perl variable does not exist then it will be created. If C<create> is not 335 set and the variable does not exist then NULL is returned. 336 337 NOTE: the perl_ form of this function is deprecated. 338 339 AV* get_av(const char* name, I32 create) 340 341 =for hackers 342 Found in file perl.c 343 344 =item newAV 345 X<newAV> 346 347 Creates a new AV. The reference count is set to 1. 348 349 AV* newAV() 350 351 =for hackers 352 Found in file av.c 353 354 =item sortsv 355 X<sortsv> 356 357 Sort an array. Here is an example: 358 359 sortsv(AvARRAY(av), av_len(av)+1, Perl_sv_cmp_locale); 360 361 Currently this always uses mergesort. See sortsv_flags for a more 362 flexible routine. 363 364 void sortsv(SV** array, size_t num_elts, SVCOMPARE_t cmp) 365 366 =for hackers 367 Found in file pp_sort.c 368 369 =item sortsv_flags 370 X<sortsv_flags> 371 372 Sort an array, with various options. 373 374 void sortsv_flags(SV** array, size_t num_elts, SVCOMPARE_t cmp, U32 flags) 375 376 =for hackers 377 Found in file pp_sort.c 378 379 380 =back 381 382 =head1 Callback Functions 383 384 =over 8 385 386 =item call_argv 387 X<call_argv> 388 389 Performs a callback to the specified Perl sub. See L<perlcall>. 390 391 NOTE: the perl_ form of this function is deprecated. 392 393 I32 call_argv(const char* sub_name, I32 flags, char** argv) 394 395 =for hackers 396 Found in file perl.c 397 398 =item call_method 399 X<call_method> 400 401 Performs a callback to the specified Perl method. The blessed object must 402 be on the stack. See L<perlcall>. 403 404 NOTE: the perl_ form of this function is deprecated. 405 406 I32 call_method(const char* methname, I32 flags) 407 408 =for hackers 409 Found in file perl.c 410 411 =item call_pv 412 X<call_pv> 413 414 Performs a callback to the specified Perl sub. See L<perlcall>. 415 416 NOTE: the perl_ form of this function is deprecated. 417 418 I32 call_pv(const char* sub_name, I32 flags) 419 420 =for hackers 421 Found in file perl.c 422 423 =item call_sv 424 X<call_sv> 425 426 Performs a callback to the Perl sub whose name is in the SV. See 427 L<perlcall>. 428 429 NOTE: the perl_ form of this function is deprecated. 430 431 I32 call_sv(SV* sv, I32 flags) 432 433 =for hackers 434 Found in file perl.c 435 436 =item ENTER 437 X<ENTER> 438 439 Opening bracket on a callback. See C<LEAVE> and L<perlcall>. 440 441 ENTER; 442 443 =for hackers 444 Found in file scope.h 445 446 =item eval_pv 447 X<eval_pv> 448 449 Tells Perl to C<eval> the given string and return an SV* result. 450 451 NOTE: the perl_ form of this function is deprecated. 452 453 SV* eval_pv(const char* p, I32 croak_on_error) 454 455 =for hackers 456 Found in file perl.c 457 458 =item eval_sv 459 X<eval_sv> 460 461 Tells Perl to C<eval> the string in the SV. 462 463 NOTE: the perl_ form of this function is deprecated. 464 465 I32 eval_sv(SV* sv, I32 flags) 466 467 =for hackers 468 Found in file perl.c 469 470 =item FREETMPS 471 X<FREETMPS> 472 473 Closing bracket for temporaries on a callback. See C<SAVETMPS> and 474 L<perlcall>. 475 476 FREETMPS; 477 478 =for hackers 479 Found in file scope.h 480 481 =item LEAVE 482 X<LEAVE> 483 484 Closing bracket on a callback. See C<ENTER> and L<perlcall>. 485 486 LEAVE; 487 488 =for hackers 489 Found in file scope.h 490 491 =item SAVETMPS 492 X<SAVETMPS> 493 494 Opening bracket for temporaries on a callback. See C<FREETMPS> and 495 L<perlcall>. 496 497 SAVETMPS; 498 499 =for hackers 500 Found in file scope.h 501 502 503 =back 504 505 =head1 Character classes 506 507 =over 8 508 509 =item isALNUM 510 X<isALNUM> 511 512 Returns a boolean indicating whether the C C<char> is an ASCII alphanumeric 513 character (including underscore) or digit. 514 515 bool isALNUM(char ch) 516 517 =for hackers 518 Found in file handy.h 519 520 =item isALPHA 521 X<isALPHA> 522 523 Returns a boolean indicating whether the C C<char> is an ASCII alphabetic 524 character. 525 526 bool isALPHA(char ch) 527 528 =for hackers 529 Found in file handy.h 530 531 =item isDIGIT 532 X<isDIGIT> 533 534 Returns a boolean indicating whether the C C<char> is an ASCII 535 digit. 536 537 bool isDIGIT(char ch) 538 539 =for hackers 540 Found in file handy.h 541 542 =item isLOWER 543 X<isLOWER> 544 545 Returns a boolean indicating whether the C C<char> is a lowercase 546 character. 547 548 bool isLOWER(char ch) 549 550 =for hackers 551 Found in file handy.h 552 553 =item isSPACE 554 X<isSPACE> 555 556 Returns a boolean indicating whether the C C<char> is whitespace. 557 558 bool isSPACE(char ch) 559 560 =for hackers 561 Found in file handy.h 562 563 =item isUPPER 564 X<isUPPER> 565 566 Returns a boolean indicating whether the C C<char> is an uppercase 567 character. 568 569 bool isUPPER(char ch) 570 571 =for hackers 572 Found in file handy.h 573 574 =item toLOWER 575 X<toLOWER> 576 577 Converts the specified character to lowercase. 578 579 char toLOWER(char ch) 580 581 =for hackers 582 Found in file handy.h 583 584 =item toUPPER 585 X<toUPPER> 586 587 Converts the specified character to uppercase. 588 589 char toUPPER(char ch) 590 591 =for hackers 592 Found in file handy.h 593 594 595 =back 596 597 =head1 Cloning an interpreter 598 599 =over 8 600 601 =item perl_clone 602 X<perl_clone> 603 604 Create and return a new interpreter by cloning the current one. 605 606 perl_clone takes these flags as parameters: 607 608 CLONEf_COPY_STACKS - is used to, well, copy the stacks also, 609 without it we only clone the data and zero the stacks, 610 with it we copy the stacks and the new perl interpreter is 611 ready to run at the exact same point as the previous one. 612 The pseudo-fork code uses COPY_STACKS while the 613 threads->create doesn't. 614 615 CLONEf_KEEP_PTR_TABLE 616 perl_clone keeps a ptr_table with the pointer of the old 617 variable as a key and the new variable as a value, 618 this allows it to check if something has been cloned and not 619 clone it again but rather just use the value and increase the 620 refcount. If KEEP_PTR_TABLE is not set then perl_clone will kill 621 the ptr_table using the function 622 C<ptr_table_free(PL_ptr_table); PL_ptr_table = NULL;>, 623 reason to keep it around is if you want to dup some of your own 624 variable who are outside the graph perl scans, example of this 625 code is in threads.xs create 626 627 CLONEf_CLONE_HOST 628 This is a win32 thing, it is ignored on unix, it tells perls 629 win32host code (which is c++) to clone itself, this is needed on 630 win32 if you want to run two threads at the same time, 631 if you just want to do some stuff in a separate perl interpreter 632 and then throw it away and return to the original one, 633 you don't need to do anything. 634 635 PerlInterpreter* perl_clone(PerlInterpreter* interp, UV flags) 636 637 =for hackers 638 Found in file sv.c 639 640 641 =back 642 643 =head1 CV Manipulation Functions 644 645 =over 8 646 647 =item CvSTASH 648 X<CvSTASH> 649 650 Returns the stash of the CV. 651 652 HV* CvSTASH(CV* cv) 653 654 =for hackers 655 Found in file cv.h 656 657 =item get_cv 658 X<get_cv> 659 660 Uses C<strlen> to get the length of C<name>, then calls C<get_cvn_flags>. 661 662 NOTE: the perl_ form of this function is deprecated. 663 664 CV* get_cv(const char* name, I32 flags) 665 666 =for hackers 667 Found in file perl.c 668 669 =item get_cvn_flags 670 X<get_cvn_flags> 671 672 Returns the CV of the specified Perl subroutine. C<flags> are passed to 673 C<gv_fetchpvn_flags>. If C<GV_ADD> is set and the Perl subroutine does not 674 exist then it will be declared (which has the same effect as saying 675 C<sub name;>). If C<GV_ADD> is not set and the subroutine does not exist 676 then NULL is returned. 677 678 NOTE: the perl_ form of this function is deprecated. 679 680 CV* get_cvn_flags(const char* name, STRLEN len, I32 flags) 681 682 =for hackers 683 Found in file perl.c 684 685 686 =back 687 688 =head1 Embedding Functions 689 690 =over 8 691 692 =item cv_undef 693 X<cv_undef> 694 695 Clear out all the active components of a CV. This can happen either 696 by an explicit C<undef &foo>, or by the reference count going to zero. 697 In the former case, we keep the CvOUTSIDE pointer, so that any anonymous 698 children can still follow the full lexical scope chain. 699 700 void cv_undef(CV* cv) 701 702 =for hackers 703 Found in file op.c 704 705 =item load_module 706 X<load_module> 707 708 Loads the module whose name is pointed to by the string part of name. 709 Note that the actual module name, not its filename, should be given. 710 Eg, "Foo::Bar" instead of "Foo/Bar.pm". flags can be any of 711 PERL_LOADMOD_DENY, PERL_LOADMOD_NOIMPORT, or PERL_LOADMOD_IMPORT_OPS 712 (or 0 for no flags). ver, if specified, provides version semantics 713 similar to C<use Foo::Bar VERSION>. The optional trailing SV* 714 arguments can be used to specify arguments to the module's import() 715 method, similar to C<use Foo::Bar VERSION LIST>. 716 717 void load_module(U32 flags, SV* name, SV* ver, ...) 718 719 =for hackers 720 Found in file op.c 721 722 =item nothreadhook 723 X<nothreadhook> 724 725 Stub that provides thread hook for perl_destruct when there are 726 no threads. 727 728 int nothreadhook() 729 730 =for hackers 731 Found in file perl.c 732 733 =item perl_alloc 734 X<perl_alloc> 735 736 Allocates a new Perl interpreter. See L<perlembed>. 737 738 PerlInterpreter* perl_alloc() 739 740 =for hackers 741 Found in file perl.c 742 743 =item perl_construct 744 X<perl_construct> 745 746 Initializes a new Perl interpreter. See L<perlembed>. 747 748 void perl_construct(PerlInterpreter* interp) 749 750 =for hackers 751 Found in file perl.c 752 753 =item perl_destruct 754 X<perl_destruct> 755 756 Shuts down a Perl interpreter. See L<perlembed>. 757 758 int perl_destruct(PerlInterpreter* interp) 759 760 =for hackers 761 Found in file perl.c 762 763 =item perl_free 764 X<perl_free> 765 766 Releases a Perl interpreter. See L<perlembed>. 767 768 void perl_free(PerlInterpreter* interp) 769 770 =for hackers 771 Found in file perl.c 772 773 =item perl_parse 774 X<perl_parse> 775 776 Tells a Perl interpreter to parse a Perl script. See L<perlembed>. 777 778 int perl_parse(PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env) 779 780 =for hackers 781 Found in file perl.c 782 783 =item perl_run 784 X<perl_run> 785 786 Tells a Perl interpreter to run. See L<perlembed>. 787 788 int perl_run(PerlInterpreter* interp) 789 790 =for hackers 791 Found in file perl.c 792 793 =item require_pv 794 X<require_pv> 795 796 Tells Perl to C<require> the file named by the string argument. It is 797 analogous to the Perl code C<eval "require '$file'">. It's even 798 implemented that way; consider using load_module instead. 799 800 NOTE: the perl_ form of this function is deprecated. 801 802 void require_pv(const char* pv) 803 804 =for hackers 805 Found in file perl.c 806 807 808 =back 809 810 =head1 Functions in file dump.c 811 812 813 =over 8 814 815 =item pv_display 816 X<pv_display> 817 818 char *pv_display(SV *dsv, const char *pv, STRLEN cur, STRLEN len, 819 STRLEN pvlim, U32 flags) 820 821 Similar to 822 823 pv_escape(dsv,pv,cur,pvlim,PERL_PV_ESCAPE_QUOTE); 824 825 except that an additional "\0" will be appended to the string when 826 len > cur and pv[cur] is "\0". 827 828 Note that the final string may be up to 7 chars longer than pvlim. 829 830 char* pv_display(SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim) 831 832 =for hackers 833 Found in file dump.c 834 835 =item pv_escape 836 X<pv_escape> 837 838 |const STRLEN count|const STRLEN max 839 |STRLEN const *escaped, const U32 flags 840 841 Escapes at most the first "count" chars of pv and puts the results into 842 dsv such that the size of the escaped string will not exceed "max" chars 843 and will not contain any incomplete escape sequences. 844 845 If flags contains PERL_PV_ESCAPE_QUOTE then any double quotes in the string 846 will also be escaped. 847 848 Normally the SV will be cleared before the escaped string is prepared, 849 but when PERL_PV_ESCAPE_NOCLEAR is set this will not occur. 850 851 If PERL_PV_ESCAPE_UNI is set then the input string is treated as Unicode, 852 if PERL_PV_ESCAPE_UNI_DETECT is set then the input string is scanned 853 using C<is_utf8_string()> to determine if it is Unicode. 854 855 If PERL_PV_ESCAPE_ALL is set then all input chars will be output 856 using C<\x01F1> style escapes, otherwise only chars above 255 will be 857 escaped using this style, other non printable chars will use octal or 858 common escaped patterns like C<\n>. If PERL_PV_ESCAPE_NOBACKSLASH 859 then all chars below 255 will be treated as printable and 860 will be output as literals. 861 862 If PERL_PV_ESCAPE_FIRSTCHAR is set then only the first char of the 863 string will be escaped, regardles of max. If the string is utf8 and 864 the chars value is >255 then it will be returned as a plain hex 865 sequence. Thus the output will either be a single char, 866 an octal escape sequence, a special escape like C<\n> or a 3 or 867 more digit hex value. 868 869 If PERL_PV_ESCAPE_RE is set then the escape char used will be a '%' and 870 not a '\\'. This is because regexes very often contain backslashed 871 sequences, whereas '%' is not a particularly common character in patterns. 872 873 Returns a pointer to the escaped text as held by dsv. 874 875 NOTE: the perl_ form of this function is deprecated. 876 877 char* pv_escape(SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags) 878 879 =for hackers 880 Found in file dump.c 881 882 =item pv_pretty 883 X<pv_pretty> 884 885 |const STRLEN count|const STRLEN max\ 886 |const char const *start_color| const char const *end_color\ 887 |const U32 flags 888 889 Converts a string into something presentable, handling escaping via 890 pv_escape() and supporting quoting and ellipses. 891 892 If the PERL_PV_PRETTY_QUOTE flag is set then the result will be 893 double quoted with any double quotes in the string escaped. Otherwise 894 if the PERL_PV_PRETTY_LTGT flag is set then the result be wrapped in 895 angle brackets. 896 897 If the PERL_PV_PRETTY_ELLIPSES flag is set and not all characters in 898 string were output then an ellipsis C<...> will be appended to the 899 string. Note that this happens AFTER it has been quoted. 900 901 If start_color is non-null then it will be inserted after the opening 902 quote (if there is one) but before the escaped text. If end_color 903 is non-null then it will be inserted after the escaped text but before 904 any quotes or ellipses. 905 906 Returns a pointer to the prettified text as held by dsv. 907 908 NOTE: the perl_ form of this function is deprecated. 909 910 char* pv_pretty(SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags) 911 912 =for hackers 913 Found in file dump.c 914 915 916 =back 917 918 =head1 Functions in file mathoms.c 919 920 921 =over 8 922 923 =item gv_fetchmethod 924 X<gv_fetchmethod> 925 926 See L<gv_fetchmethod_autoload>. 927 928 GV* gv_fetchmethod(HV* stash, const char* name) 929 930 =for hackers 931 Found in file mathoms.c 932 933 =item pack_cat 934 X<pack_cat> 935 936 The engine implementing pack() Perl function. Note: parameters next_in_list and 937 flags are not used. This call should not be used; use packlist instead. 938 939 void pack_cat(SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags) 940 941 =for hackers 942 Found in file mathoms.c 943 944 =item sv_2pvbyte_nolen 945 X<sv_2pvbyte_nolen> 946 947 Return a pointer to the byte-encoded representation of the SV. 948 May cause the SV to be downgraded from UTF-8 as a side-effect. 949 950 Usually accessed via the C<SvPVbyte_nolen> macro. 951 952 char* sv_2pvbyte_nolen(SV* sv) 953 954 =for hackers 955 Found in file mathoms.c 956 957 =item sv_2pvutf8_nolen 958 X<sv_2pvutf8_nolen> 959 960 Return a pointer to the UTF-8-encoded representation of the SV. 961 May cause the SV to be upgraded to UTF-8 as a side-effect. 962 963 Usually accessed via the C<SvPVutf8_nolen> macro. 964 965 char* sv_2pvutf8_nolen(SV* sv) 966 967 =for hackers 968 Found in file mathoms.c 969 970 =item sv_2pv_nolen 971 X<sv_2pv_nolen> 972 973 Like C<sv_2pv()>, but doesn't return the length too. You should usually 974 use the macro wrapper C<SvPV_nolen(sv)> instead. 975 char* sv_2pv_nolen(SV* sv) 976 977 =for hackers 978 Found in file mathoms.c 979 980 =item sv_catpvn_mg 981 X<sv_catpvn_mg> 982 983 Like C<sv_catpvn>, but also handles 'set' magic. 984 985 void sv_catpvn_mg(SV *sv, const char *ptr, STRLEN len) 986 987 =for hackers 988 Found in file mathoms.c 989 990 =item sv_catsv_mg 991 X<sv_catsv_mg> 992 993 Like C<sv_catsv>, but also handles 'set' magic. 994 995 void sv_catsv_mg(SV *dstr, SV *sstr) 996 997 =for hackers 998 Found in file mathoms.c 999 1000 =item sv_force_normal 1001 X<sv_force_normal> 1002 1003 Undo various types of fakery on an SV: if the PV is a shared string, make 1004 a private copy; if we're a ref, stop refing; if we're a glob, downgrade to 1005 an xpvmg. See also C<sv_force_normal_flags>. 1006 1007 void sv_force_normal(SV *sv) 1008 1009 =for hackers 1010 Found in file mathoms.c 1011 1012 =item sv_iv 1013 X<sv_iv> 1014 1015 A private implementation of the C<SvIVx> macro for compilers which can't 1016 cope with complex macro expressions. Always use the macro instead. 1017 1018 IV sv_iv(SV* sv) 1019 1020 =for hackers 1021 Found in file mathoms.c 1022 1023 =item sv_nolocking 1024 X<sv_nolocking> 1025 1026 Dummy routine which "locks" an SV when there is no locking module present. 1027 Exists to avoid test for a NULL function pointer and because it could 1028 potentially warn under some level of strict-ness. 1029 1030 "Superseded" by sv_nosharing(). 1031 1032 void sv_nolocking(SV *sv) 1033 1034 =for hackers 1035 Found in file mathoms.c 1036 1037 =item sv_nounlocking 1038 X<sv_nounlocking> 1039 1040 Dummy routine which "unlocks" an SV when there is no locking module present. 1041 Exists to avoid test for a NULL function pointer and because it could 1042 potentially warn under some level of strict-ness. 1043 1044 "Superseded" by sv_nosharing(). 1045 1046 void sv_nounlocking(SV *sv) 1047 1048 =for hackers 1049 Found in file mathoms.c 1050 1051 =item sv_nv 1052 X<sv_nv> 1053 1054 A private implementation of the C<SvNVx> macro for compilers which can't 1055 cope with complex macro expressions. Always use the macro instead. 1056 1057 NV sv_nv(SV* sv) 1058 1059 =for hackers 1060 Found in file mathoms.c 1061 1062 =item sv_pv 1063 X<sv_pv> 1064 1065 Use the C<SvPV_nolen> macro instead 1066 1067 char* sv_pv(SV *sv) 1068 1069 =for hackers 1070 Found in file mathoms.c 1071 1072 =item sv_pvbyte 1073 X<sv_pvbyte> 1074 1075 Use C<SvPVbyte_nolen> instead. 1076 1077 char* sv_pvbyte(SV *sv) 1078 1079 =for hackers 1080 Found in file mathoms.c 1081 1082 =item sv_pvbyten 1083 X<sv_pvbyten> 1084 1085 A private implementation of the C<SvPVbyte> macro for compilers 1086 which can't cope with complex macro expressions. Always use the macro 1087 instead. 1088 1089 char* sv_pvbyten(SV *sv, STRLEN *len) 1090 1091 =for hackers 1092 Found in file mathoms.c 1093 1094 =item sv_pvn 1095 X<sv_pvn> 1096 1097 A private implementation of the C<SvPV> macro for compilers which can't 1098 cope with complex macro expressions. Always use the macro instead. 1099 1100 char* sv_pvn(SV *sv, STRLEN *len) 1101 1102 =for hackers 1103 Found in file mathoms.c 1104 1105 =item sv_pvutf8 1106 X<sv_pvutf8> 1107 1108 Use the C<SvPVutf8_nolen> macro instead 1109 1110 char* sv_pvutf8(SV *sv) 1111 1112 =for hackers 1113 Found in file mathoms.c 1114 1115 =item sv_pvutf8n 1116 X<sv_pvutf8n> 1117 1118 A private implementation of the C<SvPVutf8> macro for compilers 1119 which can't cope with complex macro expressions. Always use the macro 1120 instead. 1121 1122 char* sv_pvutf8n(SV *sv, STRLEN *len) 1123 1124 =for hackers 1125 Found in file mathoms.c 1126 1127 =item sv_taint 1128 X<sv_taint> 1129 1130 Taint an SV. Use C<SvTAINTED_on> instead. 1131 void sv_taint(SV* sv) 1132 1133 =for hackers 1134 Found in file mathoms.c 1135 1136 =item sv_unref 1137 X<sv_unref> 1138 1139 Unsets the RV status of the SV, and decrements the reference count of 1140 whatever was being referenced by the RV. This can almost be thought of 1141 as a reversal of C<newSVrv>. This is C<sv_unref_flags> with the C<flag> 1142 being zero. See C<SvROK_off>. 1143 1144 void sv_unref(SV* sv) 1145 1146 =for hackers 1147 Found in file mathoms.c 1148 1149 =item sv_usepvn 1150 X<sv_usepvn> 1151 1152 Tells an SV to use C<ptr> to find its string value. Implemented by 1153 calling C<sv_usepvn_flags> with C<flags> of 0, hence does not handle 'set' 1154 magic. See C<sv_usepvn_flags>. 1155 1156 void sv_usepvn(SV* sv, char* ptr, STRLEN len) 1157 1158 =for hackers 1159 Found in file mathoms.c 1160 1161 =item sv_usepvn_mg 1162 X<sv_usepvn_mg> 1163 1164 Like C<sv_usepvn>, but also handles 'set' magic. 1165 1166 void sv_usepvn_mg(SV *sv, char *ptr, STRLEN len) 1167 1168 =for hackers 1169 Found in file mathoms.c 1170 1171 =item sv_uv 1172 X<sv_uv> 1173 1174 A private implementation of the C<SvUVx> macro for compilers which can't 1175 cope with complex macro expressions. Always use the macro instead. 1176 1177 UV sv_uv(SV* sv) 1178 1179 =for hackers 1180 Found in file mathoms.c 1181 1182 =item unpack_str 1183 X<unpack_str> 1184 1185 The engine implementing unpack() Perl function. Note: parameters strbeg, new_s 1186 and ocnt are not used. This call should not be used, use unpackstring instead. 1187 1188 I32 unpack_str(const char *pat, const char *patend, const char *s, const char *strbeg, const char *strend, char **new_s, I32 ocnt, U32 flags) 1189 1190 =for hackers 1191 Found in file mathoms.c 1192 1193 1194 =back 1195 1196 =head1 Functions in file pp_ctl.c 1197 1198 1199 =over 8 1200 1201 =item find_runcv 1202 X<find_runcv> 1203 1204 Locate the CV corresponding to the currently executing sub or eval. 1205 If db_seqp is non_null, skip CVs that are in the DB package and populate 1206 *db_seqp with the cop sequence number at the point that the DB:: code was 1207 entered. (allows debuggers to eval in the scope of the breakpoint rather 1208 than in the scope of the debugger itself). 1209 1210 CV* find_runcv(U32 *db_seqp) 1211 1212 =for hackers 1213 Found in file pp_ctl.c 1214 1215 1216 =back 1217 1218 =head1 Functions in file pp_pack.c 1219 1220 1221 =over 8 1222 1223 =item packlist 1224 X<packlist> 1225 1226 The engine implementing pack() Perl function. 1227 1228 void packlist(SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist) 1229 1230 =for hackers 1231 Found in file pp_pack.c 1232 1233 =item unpackstring 1234 X<unpackstring> 1235 1236 The engine implementing unpack() Perl function. C<unpackstring> puts the 1237 extracted list items on the stack and returns the number of elements. 1238 Issue C<PUTBACK> before and C<SPAGAIN> after the call to this function. 1239 1240 I32 unpackstring(const char *pat, const char *patend, const char *s, const char *strend, U32 flags) 1241 1242 =for hackers 1243 Found in file pp_pack.c 1244 1245 1246 =back 1247 1248 =head1 GV Functions 1249 1250 =over 8 1251 1252 =item GvSV 1253 X<GvSV> 1254 1255 Return the SV from the GV. 1256 1257 SV* GvSV(GV* gv) 1258 1259 =for hackers 1260 Found in file gv.h 1261 1262 =item gv_const_sv 1263 X<gv_const_sv> 1264 1265 If C<gv> is a typeglob whose subroutine entry is a constant sub eligible for 1266 inlining, or C<gv> is a placeholder reference that would be promoted to such 1267 a typeglob, then returns the value returned by the sub. Otherwise, returns 1268 NULL. 1269 1270 SV* gv_const_sv(GV* gv) 1271 1272 =for hackers 1273 Found in file gv.c 1274 1275 =item gv_fetchmeth 1276 X<gv_fetchmeth> 1277 1278 Returns the glob with the given C<name> and a defined subroutine or 1279 C<NULL>. The glob lives in the given C<stash>, or in the stashes 1280 accessible via @ISA and UNIVERSAL::. 1281 1282 The argument C<level> should be either 0 or -1. If C<level==0>, as a 1283 side-effect creates a glob with the given C<name> in the given C<stash> 1284 which in the case of success contains an alias for the subroutine, and sets 1285 up caching info for this glob. 1286 1287 This function grants C<"SUPER"> token as a postfix of the stash name. The 1288 GV returned from C<gv_fetchmeth> may be a method cache entry, which is not 1289 visible to Perl code. So when calling C<call_sv>, you should not use 1290 the GV directly; instead, you should use the method's CV, which can be 1291 obtained from the GV with the C<GvCV> macro. 1292 1293 GV* gv_fetchmeth(HV* stash, const char* name, STRLEN len, I32 level) 1294 1295 =for hackers 1296 Found in file gv.c 1297 1298 =item gv_fetchmethod_autoload 1299 X<gv_fetchmethod_autoload> 1300 1301 Returns the glob which contains the subroutine to call to invoke the method 1302 on the C<stash>. In fact in the presence of autoloading this may be the 1303 glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is 1304 already setup. 1305 1306 The third parameter of C<gv_fetchmethod_autoload> determines whether 1307 AUTOLOAD lookup is performed if the given method is not present: non-zero 1308 means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD. 1309 Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload> 1310 with a non-zero C<autoload> parameter. 1311 1312 These functions grant C<"SUPER"> token as a prefix of the method name. Note 1313 that if you want to keep the returned glob for a long time, you need to 1314 check for it being "AUTOLOAD", since at the later time the call may load a 1315 different subroutine due to $AUTOLOAD changing its value. Use the glob 1316 created via a side effect to do this. 1317 1318 These functions have the same side-effects and as C<gv_fetchmeth> with 1319 C<level==0>. C<name> should be writable if contains C<':'> or C<' 1320 ''>. The warning against passing the GV returned by C<gv_fetchmeth> to 1321 C<call_sv> apply equally to these functions. 1322 1323 GV* gv_fetchmethod_autoload(HV* stash, const char* name, I32 autoload) 1324 1325 =for hackers 1326 Found in file gv.c 1327 1328 =item gv_fetchmeth_autoload 1329 X<gv_fetchmeth_autoload> 1330 1331 Same as gv_fetchmeth(), but looks for autoloaded subroutines too. 1332 Returns a glob for the subroutine. 1333 1334 For an autoloaded subroutine without a GV, will create a GV even 1335 if C<level < 0>. For an autoloaded subroutine without a stub, GvCV() 1336 of the result may be zero. 1337 1338 GV* gv_fetchmeth_autoload(HV* stash, const char* name, STRLEN len, I32 level) 1339 1340 =for hackers 1341 Found in file gv.c 1342 1343 =item gv_stashpv 1344 X<gv_stashpv> 1345 1346 Returns a pointer to the stash for a specified package. Uses C<strlen> to 1347 determine the length of C<name>, then calls C<gv_stashpvn()>. 1348 1349 HV* gv_stashpv(const char* name, I32 flags) 1350 1351 =for hackers 1352 Found in file gv.c 1353 1354 =item gv_stashpvn 1355 X<gv_stashpvn> 1356 1357 Returns a pointer to the stash for a specified package. The C<namelen> 1358 parameter indicates the length of the C<name>, in bytes. C<flags> is passed 1359 to C<gv_fetchpvn_flags()>, so if set to C<GV_ADD> then the package will be 1360 created if it does not already exist. If the package does not exist and 1361 C<flags> is 0 (or any other setting that does not create packages) then NULL 1362 is returned. 1363 1364 1365 HV* gv_stashpvn(const char* name, U32 namelen, I32 flags) 1366 1367 =for hackers 1368 Found in file gv.c 1369 1370 =item gv_stashpvs 1371 X<gv_stashpvs> 1372 1373 Like C<gv_stashpvn>, but takes a literal string instead of a string/length pair. 1374 1375 HV* gv_stashpvs(const char* name, I32 create) 1376 1377 =for hackers 1378 Found in file handy.h 1379 1380 =item gv_stashsv 1381 X<gv_stashsv> 1382 1383 Returns a pointer to the stash for a specified package. See C<gv_stashpvn>. 1384 1385 HV* gv_stashsv(SV* sv, I32 flags) 1386 1387 =for hackers 1388 Found in file gv.c 1389 1390 1391 =back 1392 1393 =head1 Handy Values 1394 1395 =over 8 1396 1397 =item Nullav 1398 X<Nullav> 1399 1400 Null AV pointer. 1401 1402 =for hackers 1403 Found in file av.h 1404 1405 =item Nullch 1406 X<Nullch> 1407 1408 Null character pointer. 1409 1410 =for hackers 1411 Found in file handy.h 1412 1413 =item Nullcv 1414 X<Nullcv> 1415 1416 Null CV pointer. 1417 1418 =for hackers 1419 Found in file cv.h 1420 1421 =item Nullhv 1422 X<Nullhv> 1423 1424 Null HV pointer. 1425 1426 =for hackers 1427 Found in file hv.h 1428 1429 =item Nullsv 1430 X<Nullsv> 1431 1432 Null SV pointer. 1433 1434 =for hackers 1435 Found in file handy.h 1436 1437 1438 =back 1439 1440 =head1 Hash Manipulation Functions 1441 1442 =over 8 1443 1444 =item get_hv 1445 X<get_hv> 1446 1447 Returns the HV of the specified Perl hash. If C<create> is set and the 1448 Perl variable does not exist then it will be created. If C<create> is not 1449 set and the variable does not exist then NULL is returned. 1450 1451 NOTE: the perl_ form of this function is deprecated. 1452 1453 HV* get_hv(const char* name, I32 create) 1454 1455 =for hackers 1456 Found in file perl.c 1457 1458 =item HEf_SVKEY 1459 X<HEf_SVKEY> 1460 1461 This flag, used in the length slot of hash entries and magic structures, 1462 specifies the structure contains an C<SV*> pointer where a C<char*> pointer 1463 is to be expected. (For information only--not to be used). 1464 1465 =for hackers 1466 Found in file hv.h 1467 1468 =item HeHASH 1469 X<HeHASH> 1470 1471 Returns the computed hash stored in the hash entry. 1472 1473 U32 HeHASH(HE* he) 1474 1475 =for hackers 1476 Found in file hv.h 1477 1478 =item HeKEY 1479 X<HeKEY> 1480 1481 Returns the actual pointer stored in the key slot of the hash entry. The 1482 pointer may be either C<char*> or C<SV*>, depending on the value of 1483 C<HeKLEN()>. Can be assigned to. The C<HePV()> or C<HeSVKEY()> macros are 1484 usually preferable for finding the value of a key. 1485 1486 void* HeKEY(HE* he) 1487 1488 =for hackers 1489 Found in file hv.h 1490 1491 =item HeKLEN 1492 X<HeKLEN> 1493 1494 If this is negative, and amounts to C<HEf_SVKEY>, it indicates the entry 1495 holds an C<SV*> key. Otherwise, holds the actual length of the key. Can 1496 be assigned to. The C<HePV()> macro is usually preferable for finding key 1497 lengths. 1498 1499 STRLEN HeKLEN(HE* he) 1500 1501 =for hackers 1502 Found in file hv.h 1503 1504 =item HePV 1505 X<HePV> 1506 1507 Returns the key slot of the hash entry as a C<char*> value, doing any 1508 necessary dereferencing of possibly C<SV*> keys. The length of the string 1509 is placed in C<len> (this is a macro, so do I<not> use C<&len>). If you do 1510 not care about what the length of the key is, you may use the global 1511 variable C<PL_na>, though this is rather less efficient than using a local 1512 variable. Remember though, that hash keys in perl are free to contain 1513 embedded nulls, so using C<strlen()> or similar is not a good way to find 1514 the length of hash keys. This is very similar to the C<SvPV()> macro 1515 described elsewhere in this document. 1516 1517 char* HePV(HE* he, STRLEN len) 1518 1519 =for hackers 1520 Found in file hv.h 1521 1522 =item HeSVKEY 1523 X<HeSVKEY> 1524 1525 Returns the key as an C<SV*>, or C<NULL> if the hash entry does not 1526 contain an C<SV*> key. 1527 1528 SV* HeSVKEY(HE* he) 1529 1530 =for hackers 1531 Found in file hv.h 1532 1533 =item HeSVKEY_force 1534 X<HeSVKEY_force> 1535 1536 Returns the key as an C<SV*>. Will create and return a temporary mortal 1537 C<SV*> if the hash entry contains only a C<char*> key. 1538 1539 SV* HeSVKEY_force(HE* he) 1540 1541 =for hackers 1542 Found in file hv.h 1543 1544 =item HeSVKEY_set 1545 X<HeSVKEY_set> 1546 1547 Sets the key to a given C<SV*>, taking care to set the appropriate flags to 1548 indicate the presence of an C<SV*> key, and returns the same 1549 C<SV*>. 1550 1551 SV* HeSVKEY_set(HE* he, SV* sv) 1552 1553 =for hackers 1554 Found in file hv.h 1555 1556 =item HeVAL 1557 X<HeVAL> 1558 1559 Returns the value slot (type C<SV*>) stored in the hash entry. 1560 1561 SV* HeVAL(HE* he) 1562 1563 =for hackers 1564 Found in file hv.h 1565 1566 =item HvNAME 1567 X<HvNAME> 1568 1569 Returns the package name of a stash, or NULL if C<stash> isn't a stash. 1570 See C<SvSTASH>, C<CvSTASH>. 1571 1572 char* HvNAME(HV* stash) 1573 1574 =for hackers 1575 Found in file hv.h 1576 1577 =item hv_assert 1578 X<hv_assert> 1579 1580 Check that a hash is in an internally consistent state. 1581 1582 void hv_assert(HV* tb) 1583 1584 =for hackers 1585 Found in file hv.c 1586 1587 =item hv_clear 1588 X<hv_clear> 1589 1590 Clears a hash, making it empty. 1591 1592 void hv_clear(HV* tb) 1593 1594 =for hackers 1595 Found in file hv.c 1596 1597 =item hv_clear_placeholders 1598 X<hv_clear_placeholders> 1599 1600 Clears any placeholders from a hash. If a restricted hash has any of its keys 1601 marked as readonly and the key is subsequently deleted, the key is not actually 1602 deleted but is marked by assigning it a value of &PL_sv_placeholder. This tags 1603 it so it will be ignored by future operations such as iterating over the hash, 1604 but will still allow the hash to have a value reassigned to the key at some 1605 future point. This function clears any such placeholder keys from the hash. 1606 See Hash::Util::lock_keys() for an example of its use. 1607 1608 void hv_clear_placeholders(HV* hb) 1609 1610 =for hackers 1611 Found in file hv.c 1612 1613 =item hv_delete 1614 X<hv_delete> 1615 1616 Deletes a key/value pair in the hash. The value SV is removed from the 1617 hash and returned to the caller. The C<klen> is the length of the key. 1618 The C<flags> value will normally be zero; if set to G_DISCARD then NULL 1619 will be returned. 1620 1621 SV* hv_delete(HV* tb, const char* key, I32 klen, I32 flags) 1622 1623 =for hackers 1624 Found in file hv.c 1625 1626 =item hv_delete_ent 1627 X<hv_delete_ent> 1628 1629 Deletes a key/value pair in the hash. The value SV is removed from the 1630 hash and returned to the caller. The C<flags> value will normally be zero; 1631 if set to G_DISCARD then NULL will be returned. C<hash> can be a valid 1632 precomputed hash value, or 0 to ask for it to be computed. 1633 1634 SV* hv_delete_ent(HV* tb, SV* key, I32 flags, U32 hash) 1635 1636 =for hackers 1637 Found in file hv.c 1638 1639 =item hv_exists 1640 X<hv_exists> 1641 1642 Returns a boolean indicating whether the specified hash key exists. The 1643 C<klen> is the length of the key. 1644 1645 bool hv_exists(HV* tb, const char* key, I32 klen) 1646 1647 =for hackers 1648 Found in file hv.c 1649 1650 =item hv_exists_ent 1651 X<hv_exists_ent> 1652 1653 Returns a boolean indicating whether the specified hash key exists. C<hash> 1654 can be a valid precomputed hash value, or 0 to ask for it to be 1655 computed. 1656 1657 bool hv_exists_ent(HV* tb, SV* key, U32 hash) 1658 1659 =for hackers 1660 Found in file hv.c 1661 1662 =item hv_fetch 1663 X<hv_fetch> 1664 1665 Returns the SV which corresponds to the specified key in the hash. The 1666 C<klen> is the length of the key. If C<lval> is set then the fetch will be 1667 part of a store. Check that the return value is non-null before 1668 dereferencing it to an C<SV*>. 1669 1670 See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more 1671 information on how to use this function on tied hashes. 1672 1673 SV** hv_fetch(HV* tb, const char* key, I32 klen, I32 lval) 1674 1675 =for hackers 1676 Found in file hv.c 1677 1678 =item hv_fetchs 1679 X<hv_fetchs> 1680 1681 Like C<hv_fetch>, but takes a literal string instead of a string/length pair. 1682 1683 SV** hv_fetchs(HV* tb, const char* key, I32 lval) 1684 1685 =for hackers 1686 Found in file handy.h 1687 1688 =item hv_fetch_ent 1689 X<hv_fetch_ent> 1690 1691 Returns the hash entry which corresponds to the specified key in the hash. 1692 C<hash> must be a valid precomputed hash number for the given C<key>, or 0 1693 if you want the function to compute it. IF C<lval> is set then the fetch 1694 will be part of a store. Make sure the return value is non-null before 1695 accessing it. The return value when C<tb> is a tied hash is a pointer to a 1696 static location, so be sure to make a copy of the structure if you need to 1697 store it somewhere. 1698 1699 See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more 1700 information on how to use this function on tied hashes. 1701 1702 HE* hv_fetch_ent(HV* tb, SV* key, I32 lval, U32 hash) 1703 1704 =for hackers 1705 Found in file hv.c 1706 1707 =item hv_iterinit 1708 X<hv_iterinit> 1709 1710 Prepares a starting point to traverse a hash table. Returns the number of 1711 keys in the hash (i.e. the same as C<HvKEYS(tb)>). The return value is 1712 currently only meaningful for hashes without tie magic. 1713 1714 NOTE: Before version 5.004_65, C<hv_iterinit> used to return the number of 1715 hash buckets that happen to be in use. If you still need that esoteric 1716 value, you can get it through the macro C<HvFILL(tb)>. 1717 1718 1719 I32 hv_iterinit(HV* tb) 1720 1721 =for hackers 1722 Found in file hv.c 1723 1724 =item hv_iterkey 1725 X<hv_iterkey> 1726 1727 Returns the key from the current position of the hash iterator. See 1728 C<hv_iterinit>. 1729 1730 char* hv_iterkey(HE* entry, I32* retlen) 1731 1732 =for hackers 1733 Found in file hv.c 1734 1735 =item hv_iterkeysv 1736 X<hv_iterkeysv> 1737 1738 Returns the key as an C<SV*> from the current position of the hash 1739 iterator. The return value will always be a mortal copy of the key. Also 1740 see C<hv_iterinit>. 1741 1742 SV* hv_iterkeysv(HE* entry) 1743 1744 =for hackers 1745 Found in file hv.c 1746 1747 =item hv_iternext 1748 X<hv_iternext> 1749 1750 Returns entries from a hash iterator. See C<hv_iterinit>. 1751 1752 You may call C<hv_delete> or C<hv_delete_ent> on the hash entry that the 1753 iterator currently points to, without losing your place or invalidating your 1754 iterator. Note that in this case the current entry is deleted from the hash 1755 with your iterator holding the last reference to it. Your iterator is flagged 1756 to free the entry on the next call to C<hv_iternext>, so you must not discard 1757 your iterator immediately else the entry will leak - call C<hv_iternext> to 1758 trigger the resource deallocation. 1759 1760 HE* hv_iternext(HV* tb) 1761 1762 =for hackers 1763 Found in file hv.c 1764 1765 =item hv_iternextsv 1766 X<hv_iternextsv> 1767 1768 Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one 1769 operation. 1770 1771 SV* hv_iternextsv(HV* hv, char** key, I32* retlen) 1772 1773 =for hackers 1774 Found in file hv.c 1775 1776 =item hv_iternext_flags 1777 X<hv_iternext_flags> 1778 1779 Returns entries from a hash iterator. See C<hv_iterinit> and C<hv_iternext>. 1780 The C<flags> value will normally be zero; if HV_ITERNEXT_WANTPLACEHOLDERS is 1781 set the placeholders keys (for restricted hashes) will be returned in addition 1782 to normal keys. By default placeholders are automatically skipped over. 1783 Currently a placeholder is implemented with a value that is 1784 C<&Perl_sv_placeholder>. Note that the implementation of placeholders and 1785 restricted hashes may change, and the implementation currently is 1786 insufficiently abstracted for any change to be tidy. 1787 1788 NOTE: this function is experimental and may change or be 1789 removed without notice. 1790 1791 HE* hv_iternext_flags(HV* tb, I32 flags) 1792 1793 =for hackers 1794 Found in file hv.c 1795 1796 =item hv_iterval 1797 X<hv_iterval> 1798 1799 Returns the value from the current position of the hash iterator. See 1800 C<hv_iterkey>. 1801 1802 SV* hv_iterval(HV* tb, HE* entry) 1803 1804 =for hackers 1805 Found in file hv.c 1806 1807 =item hv_magic 1808 X<hv_magic> 1809 1810 Adds magic to a hash. See C<sv_magic>. 1811 1812 void hv_magic(HV* hv, GV* gv, int how) 1813 1814 =for hackers 1815 Found in file hv.c 1816 1817 =item hv_scalar 1818 X<hv_scalar> 1819 1820 Evaluates the hash in scalar context and returns the result. Handles magic when the hash is tied. 1821 1822 SV* hv_scalar(HV* hv) 1823 1824 =for hackers 1825 Found in file hv.c 1826 1827 =item hv_store 1828 X<hv_store> 1829 1830 Stores an SV in a hash. The hash key is specified as C<key> and C<klen> is 1831 the length of the key. The C<hash> parameter is the precomputed hash 1832 value; if it is zero then Perl will compute it. The return value will be 1833 NULL if the operation failed or if the value did not need to be actually 1834 stored within the hash (as in the case of tied hashes). Otherwise it can 1835 be dereferenced to get the original C<SV*>. Note that the caller is 1836 responsible for suitably incrementing the reference count of C<val> before 1837 the call, and decrementing it if the function returned NULL. Effectively 1838 a successful hv_store takes ownership of one reference to C<val>. This is 1839 usually what you want; a newly created SV has a reference count of one, so 1840 if all your code does is create SVs then store them in a hash, hv_store 1841 will own the only reference to the new SV, and your code doesn't need to do 1842 anything further to tidy up. hv_store is not implemented as a call to 1843 hv_store_ent, and does not create a temporary SV for the key, so if your 1844 key data is not already in SV form then use hv_store in preference to 1845 hv_store_ent. 1846 1847 See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more 1848 information on how to use this function on tied hashes. 1849 1850 SV** hv_store(HV* tb, const char* key, I32 klen, SV* val, U32 hash) 1851 1852 =for hackers 1853 Found in file hv.c 1854 1855 =item hv_stores 1856 X<hv_stores> 1857 1858 Like C<hv_store>, but takes a literal string instead of a string/length pair 1859 and omits the hash parameter. 1860 1861 SV** hv_stores(HV* tb, const char* key, NULLOK SV* val) 1862 1863 =for hackers 1864 Found in file handy.h 1865 1866 =item hv_store_ent 1867 X<hv_store_ent> 1868 1869 Stores C<val> in a hash. The hash key is specified as C<key>. The C<hash> 1870 parameter is the precomputed hash value; if it is zero then Perl will 1871 compute it. The return value is the new hash entry so created. It will be 1872 NULL if the operation failed or if the value did not need to be actually 1873 stored within the hash (as in the case of tied hashes). Otherwise the 1874 contents of the return value can be accessed using the C<He?> macros 1875 described here. Note that the caller is responsible for suitably 1876 incrementing the reference count of C<val> before the call, and 1877 decrementing it if the function returned NULL. Effectively a successful 1878 hv_store_ent takes ownership of one reference to C<val>. This is 1879 usually what you want; a newly created SV has a reference count of one, so 1880 if all your code does is create SVs then store them in a hash, hv_store 1881 will own the only reference to the new SV, and your code doesn't need to do 1882 anything further to tidy up. Note that hv_store_ent only reads the C<key>; 1883 unlike C<val> it does not take ownership of it, so maintaining the correct 1884 reference count on C<key> is entirely the caller's responsibility. hv_store 1885 is not implemented as a call to hv_store_ent, and does not create a temporary 1886 SV for the key, so if your key data is not already in SV form then use 1887 hv_store in preference to hv_store_ent. 1888 1889 See L<perlguts/"Understanding the Magic of Tied Hashes and Arrays"> for more 1890 information on how to use this function on tied hashes. 1891 1892 HE* hv_store_ent(HV* tb, SV* key, SV* val, U32 hash) 1893 1894 =for hackers 1895 Found in file hv.c 1896 1897 =item hv_undef 1898 X<hv_undef> 1899 1900 Undefines the hash. 1901 1902 void hv_undef(HV* tb) 1903 1904 =for hackers 1905 Found in file hv.c 1906 1907 =item newHV 1908 X<newHV> 1909 1910 Creates a new HV. The reference count is set to 1. 1911 1912 HV* newHV() 1913 1914 =for hackers 1915 Found in file hv.c 1916 1917 1918 =back 1919 1920 =head1 Magical Functions 1921 1922 =over 8 1923 1924 =item mg_clear 1925 X<mg_clear> 1926 1927 Clear something magical that the SV represents. See C<sv_magic>. 1928 1929 int mg_clear(SV* sv) 1930 1931 =for hackers 1932 Found in file mg.c 1933 1934 =item mg_copy 1935 X<mg_copy> 1936 1937 Copies the magic from one SV to another. See C<sv_magic>. 1938 1939 int mg_copy(SV* sv, SV* nsv, const char* key, I32 klen) 1940 1941 =for hackers 1942 Found in file mg.c 1943 1944 =item mg_find 1945 X<mg_find> 1946 1947 Finds the magic pointer for type matching the SV. See C<sv_magic>. 1948 1949 MAGIC* mg_find(const SV* sv, int type) 1950 1951 =for hackers 1952 Found in file mg.c 1953 1954 =item mg_free 1955 X<mg_free> 1956 1957 Free any magic storage used by the SV. See C<sv_magic>. 1958 1959 int mg_free(SV* sv) 1960 1961 =for hackers 1962 Found in file mg.c 1963 1964 =item mg_get 1965 X<mg_get> 1966 1967 Do magic after a value is retrieved from the SV. See C<sv_magic>. 1968 1969 int mg_get(SV* sv) 1970 1971 =for hackers 1972 Found in file mg.c 1973 1974 =item mg_length 1975 X<mg_length> 1976 1977 Report on the SV's length. See C<sv_magic>. 1978 1979 U32 mg_length(SV* sv) 1980 1981 =for hackers 1982 Found in file mg.c 1983 1984 =item mg_magical 1985 X<mg_magical> 1986 1987 Turns on the magical status of an SV. See C<sv_magic>. 1988 1989 void mg_magical(SV* sv) 1990 1991 =for hackers 1992 Found in file mg.c 1993 1994 =item mg_set 1995 X<mg_set> 1996 1997 Do magic after a value is assigned to the SV. See C<sv_magic>. 1998 1999 int mg_set(SV* sv) 2000 2001 =for hackers 2002 Found in file mg.c 2003 2004 =item SvGETMAGIC 2005 X<SvGETMAGIC> 2006 2007 Invokes C<mg_get> on an SV if it has 'get' magic. This macro evaluates its 2008 argument more than once. 2009 2010 void SvGETMAGIC(SV* sv) 2011 2012 =for hackers 2013 Found in file sv.h 2014 2015 =item SvLOCK 2016 X<SvLOCK> 2017 2018 Arranges for a mutual exclusion lock to be obtained on sv if a suitable module 2019 has been loaded. 2020 2021 void SvLOCK(SV* sv) 2022 2023 =for hackers 2024 Found in file sv.h 2025 2026 =item SvSETMAGIC 2027 X<SvSETMAGIC> 2028 2029 Invokes C<mg_set> on an SV if it has 'set' magic. This macro evaluates its 2030 argument more than once. 2031 2032 void SvSETMAGIC(SV* sv) 2033 2034 =for hackers 2035 Found in file sv.h 2036 2037 =item SvSetMagicSV 2038 X<SvSetMagicSV> 2039 2040 Like C<SvSetSV>, but does any set magic required afterwards. 2041 2042 void SvSetMagicSV(SV* dsb, SV* ssv) 2043 2044 =for hackers 2045 Found in file sv.h 2046 2047 =item SvSetMagicSV_nosteal 2048 X<SvSetMagicSV_nosteal> 2049 2050 Like C<SvSetSV_nosteal>, but does any set magic required afterwards. 2051 2052 void SvSetMagicSV_nosteal(SV* dsv, SV* ssv) 2053 2054 =for hackers 2055 Found in file sv.h 2056 2057 =item SvSetSV 2058 X<SvSetSV> 2059 2060 Calls C<sv_setsv> if dsv is not the same as ssv. May evaluate arguments 2061 more than once. 2062 2063 void SvSetSV(SV* dsb, SV* ssv) 2064 2065 =for hackers 2066 Found in file sv.h 2067 2068 =item SvSetSV_nosteal 2069 X<SvSetSV_nosteal> 2070 2071 Calls a non-destructive version of C<sv_setsv> if dsv is not the same as 2072 ssv. May evaluate arguments more than once. 2073 2074 void SvSetSV_nosteal(SV* dsv, SV* ssv) 2075 2076 =for hackers 2077 Found in file sv.h 2078 2079 =item SvSHARE 2080 X<SvSHARE> 2081 2082 Arranges for sv to be shared between threads if a suitable module 2083 has been loaded. 2084 2085 void SvSHARE(SV* sv) 2086 2087 =for hackers 2088 Found in file sv.h 2089 2090 =item SvUNLOCK 2091 X<SvUNLOCK> 2092 2093 Releases a mutual exclusion lock on sv if a suitable module 2094 has been loaded. 2095 2096 void SvUNLOCK(SV* sv) 2097 2098 =for hackers 2099 Found in file sv.h 2100 2101 2102 =back 2103 2104 =head1 Memory Management 2105 2106 =over 8 2107 2108 =item Copy 2109 X<Copy> 2110 2111 The XSUB-writer's interface to the C C<memcpy> function. The C<src> is the 2112 source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is 2113 the type. May fail on overlapping copies. See also C<Move>. 2114 2115 void Copy(void* src, void* dest, int nitems, type) 2116 2117 =for hackers 2118 Found in file handy.h 2119 2120 =item CopyD 2121 X<CopyD> 2122 2123 Like C<Copy> but returns dest. Useful for encouraging compilers to tail-call 2124 optimise. 2125 2126 void * CopyD(void* src, void* dest, int nitems, type) 2127 2128 =for hackers 2129 Found in file handy.h 2130 2131 =item Move 2132 X<Move> 2133 2134 The XSUB-writer's interface to the C C<memmove> function. The C<src> is the 2135 source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is 2136 the type. Can do overlapping moves. See also C<Copy>. 2137 2138 void Move(void* src, void* dest, int nitems, type) 2139 2140 =for hackers 2141 Found in file handy.h 2142 2143 =item MoveD 2144 X<MoveD> 2145 2146 Like C<Move> but returns dest. Useful for encouraging compilers to tail-call 2147 optimise. 2148 2149 void * MoveD(void* src, void* dest, int nitems, type) 2150 2151 =for hackers 2152 Found in file handy.h 2153 2154 =item Newx 2155 X<Newx> 2156 2157 The XSUB-writer's interface to the C C<malloc> function. 2158 2159 In 5.9.3, Newx() and friends replace the older New() API, and drops 2160 the first parameter, I<x>, a debug aid which allowed callers to identify 2161 themselves. This aid has been superseded by a new build option, 2162 PERL_MEM_LOG (see L<perlhack/PERL_MEM_LOG>). The older API is still 2163 there for use in XS modules supporting older perls. 2164 2165 void Newx(void* ptr, int nitems, type) 2166 2167 =for hackers 2168 Found in file handy.h 2169 2170 =item Newxc 2171 X<Newxc> 2172 2173 The XSUB-writer's interface to the C C<malloc> function, with 2174 cast. See also C<Newx>. 2175 2176 void Newxc(void* ptr, int nitems, type, cast) 2177 2178 =for hackers 2179 Found in file handy.h 2180 2181 =item Newxz 2182 X<Newxz> 2183 2184 The XSUB-writer's interface to the C C<malloc> function. The allocated 2185 memory is zeroed with C<memzero>. See also C<Newx>. 2186 2187 void Newxz(void* ptr, int nitems, type) 2188 2189 =for hackers 2190 Found in file handy.h 2191 2192 =item Poison 2193 X<Poison> 2194 2195 PoisonWith(0xEF) for catching access to freed memory. 2196 2197 void Poison(void* dest, int nitems, type) 2198 2199 =for hackers 2200 Found in file handy.h 2201 2202 =item PoisonFree 2203 X<PoisonFree> 2204 2205 PoisonWith(0xEF) for catching access to freed memory. 2206 2207 void PoisonFree(void* dest, int nitems, type) 2208 2209 =for hackers 2210 Found in file handy.h 2211 2212 =item PoisonNew 2213 X<PoisonNew> 2214 2215 PoisonWith(0xAB) for catching access to allocated but uninitialized memory. 2216 2217 void PoisonNew(void* dest, int nitems, type) 2218 2219 =for hackers 2220 Found in file handy.h 2221 2222 =item PoisonWith 2223 X<PoisonWith> 2224 2225 Fill up memory with a byte pattern (a byte repeated over and over 2226 again) that hopefully catches attempts to access uninitialized memory. 2227 2228 void PoisonWith(void* dest, int nitems, type, U8 byte) 2229 2230 =for hackers 2231 Found in file handy.h 2232 2233 =item Renew 2234 X<Renew> 2235 2236 The XSUB-writer's interface to the C C<realloc> function. 2237 2238 void Renew(void* ptr, int nitems, type) 2239 2240 =for hackers 2241 Found in file handy.h 2242 2243 =item Renewc 2244 X<Renewc> 2245 2246 The XSUB-writer's interface to the C C<realloc> function, with 2247 cast. 2248 2249 void Renewc(void* ptr, int nitems, type, cast) 2250 2251 =for hackers 2252 Found in file handy.h 2253 2254 =item Safefree 2255 X<Safefree> 2256 2257 The XSUB-writer's interface to the C C<free> function. 2258 2259 void Safefree(void* ptr) 2260 2261 =for hackers 2262 Found in file handy.h 2263 2264 =item savepv 2265 X<savepv> 2266 2267 Perl's version of C<strdup()>. Returns a pointer to a newly allocated 2268 string which is a duplicate of C<pv>. The size of the string is 2269 determined by C<strlen()>. The memory allocated for the new string can 2270 be freed with the C<Safefree()> function. 2271 2272 char* savepv(const char* pv) 2273 2274 =for hackers 2275 Found in file util.c 2276 2277 =item savepvn 2278 X<savepvn> 2279 2280 Perl's version of what C<strndup()> would be if it existed. Returns a 2281 pointer to a newly allocated string which is a duplicate of the first 2282 C<len> bytes from C<pv>, plus a trailing NUL byte. The memory allocated for 2283 the new string can be freed with the C<Safefree()> function. 2284 2285 char* savepvn(const char* pv, I32 len) 2286 2287 =for hackers 2288 Found in file util.c 2289 2290 =item savepvs 2291 X<savepvs> 2292 2293 Like C<savepvn>, but takes a literal string instead of a string/length pair. 2294 2295 char* savepvs(const char* s) 2296 2297 =for hackers 2298 Found in file handy.h 2299 2300 =item savesharedpv 2301 X<savesharedpv> 2302 2303 A version of C<savepv()> which allocates the duplicate string in memory 2304 which is shared between threads. 2305 2306 char* savesharedpv(const char* pv) 2307 2308 =for hackers 2309 Found in file util.c 2310 2311 =item savesharedpvn 2312 X<savesharedpvn> 2313 2314 A version of C<savepvn()> which allocates the duplicate string in memory 2315 which is shared between threads. (With the specific difference that a NULL 2316 pointer is not acceptable) 2317 2318 char* savesharedpvn(const char *const pv, const STRLEN len) 2319 2320 =for hackers 2321 Found in file util.c 2322 2323 =item savesvpv 2324 X<savesvpv> 2325 2326 A version of C<savepv()>/C<savepvn()> which gets the string to duplicate from 2327 the passed in SV using C<SvPV()> 2328 2329 char* savesvpv(SV* sv) 2330 2331 =for hackers 2332 Found in file util.c 2333 2334 =item StructCopy 2335 X<StructCopy> 2336 2337 This is an architecture-independent macro to copy one structure to another. 2338 2339 void StructCopy(type src, type dest, type) 2340 2341 =for hackers 2342 Found in file handy.h 2343 2344 =item Zero 2345 X<Zero> 2346 2347 The XSUB-writer's interface to the C C<memzero> function. The C<dest> is the 2348 destination, C<nitems> is the number of items, and C<type> is the type. 2349 2350 void Zero(void* dest, int nitems, type) 2351 2352 =for hackers 2353 Found in file handy.h 2354 2355 =item ZeroD 2356 X<ZeroD> 2357 2358 Like C<Zero> but returns dest. Useful for encouraging compilers to tail-call 2359 optimise. 2360 2361 void * ZeroD(void* dest, int nitems, type) 2362 2363 =for hackers 2364 Found in file handy.h 2365 2366 2367 =back 2368 2369 =head1 Miscellaneous Functions 2370 2371 =over 8 2372 2373 =item fbm_compile 2374 X<fbm_compile> 2375 2376 Analyses the string in order to make fast searches on it using fbm_instr() 2377 -- the Boyer-Moore algorithm. 2378 2379 void fbm_compile(SV* sv, U32 flags) 2380 2381 =for hackers 2382 Found in file util.c 2383 2384 =item fbm_instr 2385 X<fbm_instr> 2386 2387 Returns the location of the SV in the string delimited by C<str> and 2388 C<strend>. It returns C<NULL> if the string can't be found. The C<sv> 2389 does not have to be fbm_compiled, but the search will not be as fast 2390 then. 2391 2392 char* fbm_instr(unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags) 2393 2394 =for hackers 2395 Found in file util.c 2396 2397 =item form 2398 X<form> 2399 2400 Takes a sprintf-style format pattern and conventional 2401 (non-SV) arguments and returns the formatted string. 2402 2403 (char *) Perl_form(pTHX_ const char* pat, ...) 2404 2405 can be used any place a string (char *) is required: 2406 2407 char * s = Perl_form("%d.%d",major,minor); 2408 2409 Uses a single private buffer so if you want to format several strings you 2410 must explicitly copy the earlier strings away (and free the copies when you 2411 are done). 2412 2413 char* form(const char* pat, ...) 2414 2415 =for hackers 2416 Found in file util.c 2417 2418 =item getcwd_sv 2419 X<getcwd_sv> 2420 2421 Fill the sv with current working directory 2422 2423 int getcwd_sv(SV* sv) 2424 2425 =for hackers 2426 Found in file util.c 2427 2428 =item my_snprintf 2429 X<my_snprintf> 2430 2431 The C library C<snprintf> functionality, if available and 2432 standards-compliant (uses C<vsnprintf>, actually). However, if the 2433 C<vsnprintf> is not available, will unfortunately use the unsafe 2434 C<vsprintf> which can overrun the buffer (there is an overrun check, 2435 but that may be too late). Consider using C<sv_vcatpvf> instead, or 2436 getting C<vsnprintf>. 2437 2438 int my_snprintf(char *buffer, const Size_t len, const char *format, ...) 2439 2440 =for hackers 2441 Found in file util.c 2442 2443 =item my_sprintf 2444 X<my_sprintf> 2445 2446 The C library C<sprintf>, wrapped if necessary, to ensure that it will return 2447 the length of the string written to the buffer. Only rare pre-ANSI systems 2448 need the wrapper function - usually this is a direct call to C<sprintf>. 2449 2450 int my_sprintf(char *buffer, const char *pat, ...) 2451 2452 =for hackers 2453 Found in file util.c 2454 2455 =item my_vsnprintf 2456 X<my_vsnprintf> 2457 2458 The C library C<vsnprintf> if available and standards-compliant. 2459 However, if if the C<vsnprintf> is not available, will unfortunately 2460 use the unsafe C<vsprintf> which can overrun the buffer (there is an 2461 overrun check, but that may be too late). Consider using 2462 C<sv_vcatpvf> instead, or getting C<vsnprintf>. 2463 2464 int my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap) 2465 2466 =for hackers 2467 Found in file util.c 2468 2469 =item new_version 2470 X<new_version> 2471 2472 Returns a new version object based on the passed in SV: 2473 2474 SV *sv = new_version(SV *ver); 2475 2476 Does not alter the passed in ver SV. See "upg_version" if you 2477 want to upgrade the SV. 2478 2479 SV* new_version(SV *ver) 2480 2481 =for hackers 2482 Found in file util.c 2483 2484 =item scan_version 2485 X<scan_version> 2486 2487 Returns a pointer to the next character after the parsed 2488 version string, as well as upgrading the passed in SV to 2489 an RV. 2490 2491 Function must be called with an already existing SV like 2492 2493 sv = newSV(0); 2494 s = scan_version(s, SV *sv, bool qv); 2495 2496 Performs some preprocessing to the string to ensure that 2497 it has the correct characteristics of a version. Flags the 2498 object if it contains an underscore (which denotes this 2499 is an alpha version). The boolean qv denotes that the version 2500 should be interpreted as if it had multiple decimals, even if 2501 it doesn't. 2502 2503 const char* scan_version(const char *vstr, SV *sv, bool qv) 2504 2505 =for hackers 2506 Found in file util.c 2507 2508 =item strEQ 2509 X<strEQ> 2510 2511 Test two strings to see if they are equal. Returns true or false. 2512 2513 bool strEQ(char* s1, char* s2) 2514 2515 =for hackers 2516 Found in file handy.h 2517 2518 =item strGE 2519 X<strGE> 2520 2521 Test two strings to see if the first, C<s1>, is greater than or equal to 2522 the second, C<s2>. Returns true or false. 2523 2524 bool strGE(char* s1, char* s2) 2525 2526 =for hackers 2527 Found in file handy.h 2528 2529 =item strGT 2530 X<strGT> 2531 2532 Test two strings to see if the first, C<s1>, is greater than the second, 2533 C<s2>. Returns true or false. 2534 2535 bool strGT(char* s1, char* s2) 2536 2537 =for hackers 2538 Found in file handy.h 2539 2540 =item strLE 2541 X<strLE> 2542 2543 Test two strings to see if the first, C<s1>, is less than or equal to the 2544 second, C<s2>. Returns true or false. 2545 2546 bool strLE(char* s1, char* s2) 2547 2548 =for hackers 2549 Found in file handy.h 2550 2551 =item strLT 2552 X<strLT> 2553 2554 Test two strings to see if the first, C<s1>, is less than the second, 2555 C<s2>. Returns true or false. 2556 2557 bool strLT(char* s1, char* s2) 2558 2559 =for hackers 2560 Found in file handy.h 2561 2562 =item strNE 2563 X<strNE> 2564 2565 Test two strings to see if they are different. Returns true or 2566 false. 2567 2568 bool strNE(char* s1, char* s2) 2569 2570 =for hackers 2571 Found in file handy.h 2572 2573 =item strnEQ 2574 X<strnEQ> 2575 2576 Test two strings to see if they are equal. The C<len> parameter indicates 2577 the number of bytes to compare. Returns true or false. (A wrapper for 2578 C<strncmp>). 2579 2580 bool strnEQ(char* s1, char* s2, STRLEN len) 2581 2582 =for hackers 2583 Found in file handy.h 2584 2585 =item strnNE 2586 X<strnNE> 2587 2588 Test two strings to see if they are different. The C<len> parameter 2589 indicates the number of bytes to compare. Returns true or false. (A 2590 wrapper for C<strncmp>). 2591 2592 bool strnNE(char* s1, char* s2, STRLEN len) 2593 2594 =for hackers 2595 Found in file handy.h 2596 2597 =item sv_destroyable 2598 X<sv_destroyable> 2599 2600 Dummy routine which reports that object can be destroyed when there is no 2601 sharing module present. It ignores its single SV argument, and returns 2602 'true'. Exists to avoid test for a NULL function pointer and because it 2603 could potentially warn under some level of strict-ness. 2604 2605 bool sv_destroyable(SV *sv) 2606 2607 =for hackers 2608 Found in file util.c 2609 2610 =item sv_nosharing 2611 X<sv_nosharing> 2612 2613 Dummy routine which "shares" an SV when there is no sharing module present. 2614 Or "locks" it. Or "unlocks" it. In other words, ignores its single SV argument. 2615 Exists to avoid test for a NULL function pointer and because it could 2616 potentially warn under some level of strict-ness. 2617 2618 void sv_nosharing(SV *sv) 2619 2620 =for hackers 2621 Found in file util.c 2622 2623 =item upg_version 2624 X<upg_version> 2625 2626 In-place upgrade of the supplied SV to a version object. 2627 2628 SV *sv = upg_version(SV *sv, bool qv); 2629 2630 Returns a pointer to the upgraded SV. Set the boolean qv if you want 2631 to force this SV to be interpreted as an "extended" version. 2632 2633 SV* upg_version(SV *ver, bool qv) 2634 2635 =for hackers 2636 Found in file util.c 2637 2638 =item vcmp 2639 X<vcmp> 2640 2641 Version object aware cmp. Both operands must already have been 2642 converted into version objects. 2643 2644 int vcmp(SV *lvs, SV *rvs) 2645 2646 =for hackers 2647 Found in file util.c 2648 2649 =item vnormal 2650 X<vnormal> 2651 2652 Accepts a version object and returns the normalized string 2653 representation. Call like: 2654 2655 sv = vnormal(rv); 2656 2657 NOTE: you can pass either the object directly or the SV 2658 contained within the RV. 2659 2660 SV* vnormal(SV *vs) 2661 2662 =for hackers 2663 Found in file util.c 2664 2665 =item vnumify 2666 X<vnumify> 2667 2668 Accepts a version object and returns the normalized floating 2669 point representation. Call like: 2670 2671 sv = vnumify(rv); 2672 2673 NOTE: you can pass either the object directly or the SV 2674 contained within the RV. 2675 2676 SV* vnumify(SV *vs) 2677 2678 =for hackers 2679 Found in file util.c 2680 2681 =item vstringify 2682 X<vstringify> 2683 2684 In order to maintain maximum compatibility with earlier versions 2685 of Perl, this function will return either the floating point 2686 notation or the multiple dotted notation, depending on whether 2687 the original version contained 1 or more dots, respectively 2688 2689 SV* vstringify(SV *vs) 2690 2691 =for hackers 2692 Found in file util.c 2693 2694 =item vverify 2695 X<vverify> 2696 2697 Validates that the SV contains a valid version object. 2698 2699 bool vverify(SV *vobj); 2700 2701 Note that it only confirms the bare minimum structure (so as not to get 2702 confused by derived classes which may contain additional hash entries): 2703 2704 bool vverify(SV *vs) 2705 2706 =for hackers 2707 Found in file util.c 2708 2709 2710 =back 2711 2712 =head1 MRO Functions 2713 2714 =over 8 2715 2716 =item mro_get_linear_isa 2717 X<mro_get_linear_isa> 2718 2719 Returns either C<mro_get_linear_isa_c3> or 2720 C<mro_get_linear_isa_dfs> for the given stash, 2721 dependant upon which MRO is in effect 2722 for that stash. The return value is a 2723 read-only AV*. 2724 2725 You are responsible for C<SvREFCNT_inc()> on the 2726 return value if you plan to store it anywhere 2727 semi-permanently (otherwise it might be deleted 2728 out from under you the next time the cache is 2729 invalidated). 2730 2731 AV* mro_get_linear_isa(HV* stash) 2732 2733 =for hackers 2734 Found in file mro.c 2735 2736 =item mro_method_changed_in 2737 X<mro_method_changed_in> 2738 2739 Invalidates method caching on any child classes 2740 of the given stash, so that they might notice 2741 the changes in this one. 2742 2743 Ideally, all instances of C<PL_sub_generation++> in 2744 perl source outside of C<mro.c> should be 2745 replaced by calls to this. 2746 2747 Perl automatically handles most of the common 2748 ways a method might be redefined. However, there 2749 are a few ways you could change a method in a stash 2750 without the cache code noticing, in which case you 2751 need to call this method afterwards: 2752 2753 1) Directly manipulating the stash HV entries from 2754 XS code. 2755 2756 2) Assigning a reference to a readonly scalar 2757 constant into a stash entry in order to create 2758 a constant subroutine (like constant.pm 2759 does). 2760 2761 This same method is available from pure perl 2762 via, C<mro::method_changed_in(classname)>. 2763 2764 void mro_method_changed_in(HV* stash) 2765 2766 =for hackers 2767 Found in file mro.c 2768 2769 2770 =back 2771 2772 =head1 Multicall Functions 2773 2774 =over 8 2775 2776 =item dMULTICALL 2777 X<dMULTICALL> 2778 2779 Declare local variables for a multicall. See L<perlcall/Lightweight Callbacks>. 2780 2781 dMULTICALL; 2782 2783 =for hackers 2784 Found in file cop.h 2785 2786 =item MULTICALL 2787 X<MULTICALL> 2788 2789 Make a lightweight callback. See L<perlcall/Lightweight Callbacks>. 2790 2791 MULTICALL; 2792 2793 =for hackers 2794 Found in file cop.h 2795 2796 =item POP_MULTICALL 2797 X<POP_MULTICALL> 2798 2799 Closing bracket for a lightweight callback. 2800 See L<perlcall/Lightweight Callbacks>. 2801 2802 POP_MULTICALL; 2803 2804 =for hackers 2805 Found in file cop.h 2806 2807 =item PUSH_MULTICALL 2808 X<PUSH_MULTICALL> 2809 2810 Opening bracket for a lightweight callback. 2811 See L<perlcall/Lightweight Callbacks>. 2812 2813 PUSH_MULTICALL; 2814 2815 =for hackers 2816 Found in file cop.h 2817 2818 2819 =back 2820 2821 =head1 Numeric functions 2822 2823 =over 8 2824 2825 =item grok_bin 2826 X<grok_bin> 2827 2828 converts a string representing a binary number to numeric form. 2829 2830 On entry I<start> and I<*len> give the string to scan, I<*flags> gives 2831 conversion flags, and I<result> should be NULL or a pointer to an NV. 2832 The scan stops at the end of the string, or the first invalid character. 2833 Unless C<PERL_SCAN_SILENT_ILLDIGIT> is set in I<*flags>, encountering an 2834 invalid character will also trigger a warning. 2835 On return I<*len> is set to the length of the scanned string, 2836 and I<*flags> gives output flags. 2837 2838 If the value is <= C<UV_MAX> it is returned as a UV, the output flags are clear, 2839 and nothing is written to I<*result>. If the value is > UV_MAX C<grok_bin> 2840 returns UV_MAX, sets C<PERL_SCAN_GREATER_THAN_UV_MAX> in the output flags, 2841 and writes the value to I<*result> (or the value is discarded if I<result> 2842 is NULL). 2843 2844 The binary number may optionally be prefixed with "0b" or "b" unless 2845 C<PERL_SCAN_DISALLOW_PREFIX> is set in I<*flags> on entry. If 2846 C<PERL_SCAN_ALLOW_UNDERSCORES> is set in I<*flags> then the binary 2847 number may use '_' characters to separate digits. 2848 2849 UV grok_bin(const char* start, STRLEN* len_p, I32* flags, NV *result) 2850 2851 =for hackers 2852 Found in file numeric.c 2853 2854 =item grok_hex 2855 X<grok_hex> 2856 2857 converts a string representing a hex number to numeric form. 2858 2859 On entry I<start> and I<*len> give the string to scan, I<*flags> gives 2860 conversion flags, and I<result> should be NULL or a pointer to an NV. 2861 The scan stops at the end of the string, or the first invalid character. 2862 Unless C<PERL_SCAN_SILENT_ILLDIGIT> is set in I<*flags>, encountering an 2863 invalid character will also trigger a warning. 2864 On return I<*len> is set to the length of the scanned string, 2865 and I<*flags> gives output flags. 2866 2867 If the value is <= UV_MAX it is returned as a UV, the output flags are clear, 2868 and nothing is written to I<*result>. If the value is > UV_MAX C<grok_hex> 2869 returns UV_MAX, sets C<PERL_SCAN_GREATER_THAN_UV_MAX> in the output flags, 2870 and writes the value to I<*result> (or the value is discarded if I<result> 2871 is NULL). 2872 2873 The hex number may optionally be prefixed with "0x" or "x" unless 2874 C<PERL_SCAN_DISALLOW_PREFIX> is set in I<*flags> on entry. If 2875 C<PERL_SCAN_ALLOW_UNDERSCORES> is set in I<*flags> then the hex 2876 number may use '_' characters to separate digits. 2877 2878 UV grok_hex(const char* start, STRLEN* len_p, I32* flags, NV *result) 2879 2880 =for hackers 2881 Found in file numeric.c 2882 2883 =item grok_number 2884 X<grok_number> 2885 2886 Recognise (or not) a number. The type of the number is returned 2887 (0 if unrecognised), otherwise it is a bit-ORed combination of 2888 IS_NUMBER_IN_UV, IS_NUMBER_GREATER_THAN_UV_MAX, IS_NUMBER_NOT_INT, 2889 IS_NUMBER_NEG, IS_NUMBER_INFINITY, IS_NUMBER_NAN (defined in perl.h). 2890 2891 If the value of the number can fit an in UV, it is returned in the *valuep 2892 IS_NUMBER_IN_UV will be set to indicate that *valuep is valid, IS_NUMBER_IN_UV 2893 will never be set unless *valuep is valid, but *valuep may have been assigned 2894 to during processing even though IS_NUMBER_IN_UV is not set on return. 2895 If valuep is NULL, IS_NUMBER_IN_UV will be set for the same cases as when 2896 valuep is non-NULL, but no actual assignment (or SEGV) will occur. 2897 2898 IS_NUMBER_NOT_INT will be set with IS_NUMBER_IN_UV if trailing decimals were 2899 seen (in which case *valuep gives the true value truncated to an integer), and 2900 IS_NUMBER_NEG if the number is negative (in which case *valuep holds the 2901 absolute value). IS_NUMBER_IN_UV is not set if e notation was used or the 2902 number is larger than a UV. 2903 2904 int grok_number(const char *pv, STRLEN len, UV *valuep) 2905 2906 =for hackers 2907 Found in file numeric.c 2908 2909 =item grok_numeric_radix 2910 X<grok_numeric_radix> 2911 2912 Scan and skip for a numeric decimal separator (radix). 2913 2914 bool grok_numeric_radix(const char **sp, const char *send) 2915 2916 =for hackers 2917 Found in file numeric.c 2918 2919 =item grok_oct 2920 X<grok_oct> 2921 2922 converts a string representing an octal number to numeric form. 2923 2924 On entry I<start> and I<*len> give the string to scan, I<*flags> gives 2925 conversion flags, and I<result> should be NULL or a pointer to an NV. 2926 The scan stops at the end of the string, or the first invalid character. 2927 Unless C<PERL_SCAN_SILENT_ILLDIGIT> is set in I<*flags>, encountering an 2928 invalid character will also trigger a warning. 2929 On return I<*len> is set to the length of the scanned string, 2930 and I<*flags> gives output flags. 2931 2932 If the value is <= UV_MAX it is returned as a UV, the output flags are clear, 2933 and nothing is written to I<*result>. If the value is > UV_MAX C<grok_oct> 2934 returns UV_MAX, sets C<PERL_SCAN_GREATER_THAN_UV_MAX> in the output flags, 2935 and writes the value to I<*result> (or the value is discarded if I<result> 2936 is NULL). 2937 2938 If C<PERL_SCAN_ALLOW_UNDERSCORES> is set in I<*flags> then the octal 2939 number may use '_' characters to separate digits. 2940 2941 UV grok_oct(const char* start, STRLEN* len_p, I32* flags, NV *result) 2942 2943 =for hackers 2944 Found in file numeric.c 2945 2946 =item Perl_signbit 2947 X<Perl_signbit> 2948 2949 Return a non-zero integer if the sign bit on an NV is set, and 0 if 2950 it is not. 2951 2952 If Configure detects this system has a signbit() that will work with 2953 our NVs, then we just use it via the #define in perl.h. Otherwise, 2954 fall back on this implementation. As a first pass, this gets everything 2955 right except -0.0. Alas, catching -0.0 is the main use for this function, 2956 so this is not too helpful yet. Still, at least we have the scaffolding 2957 in place to support other systems, should that prove useful. 2958 2959 2960 Configure notes: This function is called 'Perl_signbit' instead of a 2961 plain 'signbit' because it is easy to imagine a system having a signbit() 2962 function or macro that doesn't happen to work with our particular choice 2963 of NVs. We shouldn't just re-#define signbit as Perl_signbit and expect 2964 the standard system headers to be happy. Also, this is a no-context 2965 function (no pTHX_) because Perl_signbit() is usually re-#defined in 2966 perl.h as a simple macro call to the system's signbit(). 2967 Users should just always call Perl_signbit(). 2968 2969 NOTE: this function is experimental and may change or be 2970 removed without notice. 2971 2972 int Perl_signbit(NV f) 2973 2974 =for hackers 2975 Found in file numeric.c 2976 2977 =item scan_bin 2978 X<scan_bin> 2979 2980 For backwards compatibility. Use C<grok_bin> instead. 2981 2982 NV scan_bin(const char* start, STRLEN len, STRLEN* retlen) 2983 2984 =for hackers 2985 Found in file numeric.c 2986 2987 =item scan_hex 2988 X<scan_hex> 2989 2990 For backwards compatibility. Use C<grok_hex> instead. 2991 2992 NV scan_hex(const char* start, STRLEN len, STRLEN* retlen) 2993 2994 =for hackers 2995 Found in file numeric.c 2996 2997 =item scan_oct 2998 X<scan_oct> 2999 3000 For backwards compatibility. Use C<grok_oct> instead. 3001 3002 NV scan_oct(const char* start, STRLEN len, STRLEN* retlen) 3003 3004 =for hackers 3005 Found in file numeric.c 3006 3007 3008 =back 3009 3010 =head1 Optree Manipulation Functions 3011 3012 =over 8 3013 3014 =item cv_const_sv 3015 X<cv_const_sv> 3016 3017 If C<cv> is a constant sub eligible for inlining. returns the constant 3018 value returned by the sub. Otherwise, returns NULL. 3019 3020 Constant subs can be created with C<newCONSTSUB> or as described in 3021 L<perlsub/"Constant Functions">. 3022 3023 SV* cv_const_sv(CV* cv) 3024 3025 =for hackers 3026 Found in file op.c 3027 3028 =item newCONSTSUB 3029 X<newCONSTSUB> 3030 3031 Creates a constant sub equivalent to Perl C<sub FOO () { 123 }> which is 3032 eligible for inlining at compile-time. 3033 3034 CV* newCONSTSUB(HV* stash, const char* name, SV* sv) 3035 3036 =for hackers 3037 Found in file op.c 3038 3039 =item newXS 3040 X<newXS> 3041 3042 Used by C<xsubpp> to hook up XSUBs as Perl subs. I<filename> needs to be 3043 static storage, as it is used directly as CvFILE(), without a copy being made. 3044 3045 =for hackers 3046 Found in file op.c 3047 3048 3049 =back 3050 3051 =head1 Pad Data Structures 3052 3053 =over 8 3054 3055 =item pad_sv 3056 X<pad_sv> 3057 3058 Get the value at offset po in the current pad. 3059 Use macro PAD_SV instead of calling this function directly. 3060 3061 SV* pad_sv(PADOFFSET po) 3062 3063 =for hackers 3064 Found in file pad.c 3065 3066 3067 =back 3068 3069 =head1 Per-Interpreter Variables 3070 3071 =over 8 3072 3073 =item PL_modglobal 3074 X<PL_modglobal> 3075 3076 C<PL_modglobal> is a general purpose, interpreter global HV for use by 3077 extensions that need to keep information on a per-interpreter basis. 3078 In a pinch, it can also be used as a symbol table for extensions 3079 to share data among each other. It is a good idea to use keys 3080 prefixed by the package name of the extension that owns the data. 3081 3082 HV* PL_modglobal 3083 3084 =for hackers 3085 Found in file intrpvar.h 3086 3087 =item PL_na 3088 X<PL_na> 3089 3090 A convenience variable which is typically used with C<SvPV> when one 3091 doesn't care about the length of the string. It is usually more efficient 3092 to either declare a local variable and use that instead or to use the 3093 C<SvPV_nolen> macro. 3094 3095 STRLEN PL_na 3096 3097 =for hackers 3098 Found in file intrpvar.h 3099 3100 =item PL_sv_no 3101 X<PL_sv_no> 3102 3103 This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as 3104 C<&PL_sv_no>. 3105 3106 SV PL_sv_no 3107 3108 =for hackers 3109 Found in file intrpvar.h 3110 3111 =item PL_sv_undef 3112 X<PL_sv_undef> 3113 3114 This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>. 3115 3116 SV PL_sv_undef 3117 3118 =for hackers 3119 Found in file intrpvar.h 3120 3121 =item PL_sv_yes 3122 X<PL_sv_yes> 3123 3124 This is the C<true> SV. See C<PL_sv_no>. Always refer to this as 3125 C<&PL_sv_yes>. 3126 3127 SV PL_sv_yes 3128 3129 =for hackers 3130 Found in file intrpvar.h 3131 3132 3133 =back 3134 3135 =head1 REGEXP Functions 3136 3137 =over 8 3138 3139 =item SvRX 3140 X<SvRX> 3141 3142 Convenience macro to get the REGEXP from a SV. This is approximately 3143 equivalent to the following snippet: 3144 3145 if (SvMAGICAL(sv)) 3146 mg_get(sv); 3147 if (SvROK(sv) && 3148 (tmpsv = (SV*)SvRV(sv)) && 3149 SvTYPE(tmpsv) == SVt_PVMG && 3150 (tmpmg = mg_find(tmpsv, PERL_MAGIC_qr))) 3151 { 3152 return (REGEXP *)tmpmg->mg_obj; 3153 } 3154 3155 NULL will be returned if a REGEXP* is not found. 3156 3157 REGEXP * SvRX(SV *sv) 3158 3159 =for hackers 3160 Found in file regexp.h 3161 3162 =item SvRXOK 3163 X<SvRXOK> 3164 3165 Returns a boolean indicating whether the SV contains qr magic 3166 (PERL_MAGIC_qr). 3167 3168 If you want to do something with the REGEXP* later use SvRX instead 3169 and check for NULL. 3170 3171 bool SvRXOK(SV* sv) 3172 3173 =for hackers 3174 Found in file regexp.h 3175 3176 3177 =back 3178 3179 =head1 Simple Exception Handling Macros 3180 3181 =over 8 3182 3183 =item dXCPT 3184 X<dXCPT> 3185 3186 Set up necessary local variables for exception handling. 3187 See L<perlguts/"Exception Handling">. 3188 3189 dXCPT; 3190 3191 =for hackers 3192 Found in file XSUB.h 3193 3194 =item XCPT_CATCH 3195 X<XCPT_CATCH> 3196 3197 Introduces a catch block. See L<perlguts/"Exception Handling">. 3198 3199 =for hackers 3200 Found in file XSUB.h 3201 3202 =item XCPT_RETHROW 3203 X<XCPT_RETHROW> 3204 3205 Rethrows a previously caught exception. See L<perlguts/"Exception Handling">. 3206 3207 XCPT_RETHROW; 3208 3209 =for hackers 3210 Found in file XSUB.h 3211 3212 =item XCPT_TRY_END 3213 X<XCPT_TRY_END> 3214 3215 Ends a try block. See L<perlguts/"Exception Handling">. 3216 3217 =for hackers 3218 Found in file XSUB.h 3219 3220 =item XCPT_TRY_START 3221 X<XCPT_TRY_START> 3222 3223 Starts a try block. See L<perlguts/"Exception Handling">. 3224 3225 =for hackers 3226 Found in file XSUB.h 3227 3228 3229 =back 3230 3231 =head1 Stack Manipulation Macros 3232 3233 =over 8 3234 3235 =item dMARK 3236 X<dMARK> 3237 3238 Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and 3239 C<dORIGMARK>. 3240 3241 dMARK; 3242 3243 =for hackers 3244 Found in file pp.h 3245 3246 =item dORIGMARK 3247 X<dORIGMARK> 3248 3249 Saves the original stack mark for the XSUB. See C<ORIGMARK>. 3250 3251 dORIGMARK; 3252 3253 =for hackers 3254 Found in file pp.h 3255 3256 =item dSP 3257 X<dSP> 3258 3259 Declares a local copy of perl's stack pointer for the XSUB, available via 3260 the C<SP> macro. See C<SP>. 3261 3262 dSP; 3263 3264 =for hackers 3265 Found in file pp.h 3266 3267 =item EXTEND 3268 X<EXTEND> 3269 3270 Used to extend the argument stack for an XSUB's return values. Once 3271 used, guarantees that there is room for at least C<nitems> to be pushed 3272 onto the stack. 3273 3274 void EXTEND(SP, int nitems) 3275 3276 =for hackers 3277 Found in file pp.h 3278 3279 =item MARK 3280 X<MARK> 3281 3282 Stack marker variable for the XSUB. See C<dMARK>. 3283 3284 =for hackers 3285 Found in file pp.h 3286 3287 =item mPUSHi 3288 X<mPUSHi> 3289 3290 Push an integer onto the stack. The stack must have room for this element. 3291 Handles 'set' magic. Does not use C<TARG>. See also C<PUSHi>, C<mXPUSHi> 3292 and C<XPUSHi>. 3293 3294 void mPUSHi(IV iv) 3295 3296 =for hackers 3297 Found in file pp.h 3298 3299 =item mPUSHn 3300 X<mPUSHn> 3301 3302 Push a double onto the stack. The stack must have room for this element. 3303 Handles 'set' magic. Does not use C<TARG>. See also C<PUSHn>, C<mXPUSHn> 3304 and C<XPUSHn>. 3305 3306 void mPUSHn(NV nv) 3307 3308 =for hackers 3309 Found in file pp.h 3310 3311 =item mPUSHp 3312 X<mPUSHp> 3313 3314 Push a string onto the stack. The stack must have room for this element. 3315 The C<len> indicates the length of the string. Handles 'set' magic. Does 3316 not use C<TARG>. See also C<PUSHp>, C<mXPUSHp> and C<XPUSHp>. 3317 3318 void mPUSHp(char* str, STRLEN len) 3319 3320 =for hackers 3321 Found in file pp.h 3322 3323 =item mPUSHu 3324 X<mPUSHu> 3325 3326 Push an unsigned integer onto the stack. The stack must have room for this 3327 element. Handles 'set' magic. Does not use C<TARG>. See also C<PUSHu>, 3328 C<mXPUSHu> and C<XPUSHu>. 3329 3330 void mPUSHu(UV uv) 3331 3332 =for hackers 3333 Found in file pp.h 3334 3335 =item mXPUSHi 3336 X<mXPUSHi> 3337 3338 Push an integer onto the stack, extending the stack if necessary. Handles 3339 'set' magic. Does not use C<TARG>. See also C<XPUSHi>, C<mPUSHi> and 3340 C<PUSHi>. 3341 3342 void mXPUSHi(IV iv) 3343 3344 =for hackers 3345 Found in file pp.h 3346 3347 =item mXPUSHn 3348 X<mXPUSHn> 3349 3350 Push a double onto the stack, extending the stack if necessary. Handles 3351 'set' magic. Does not use C<TARG>. See also C<XPUSHn>, C<mPUSHn> and 3352 C<PUSHn>. 3353 3354 void mXPUSHn(NV nv) 3355 3356 =for hackers 3357 Found in file pp.h 3358 3359 =item mXPUSHp 3360 X<mXPUSHp> 3361 3362 Push a string onto the stack, extending the stack if necessary. The C<len> 3363 indicates the length of the string. Handles 'set' magic. Does not use 3364 C<TARG>. See also C<XPUSHp>, C<mPUSHp> and C<PUSHp>. 3365 3366 void mXPUSHp(char* str, STRLEN len) 3367 3368 =for hackers 3369 Found in file pp.h 3370 3371 =item mXPUSHu 3372 X<mXPUSHu> 3373 3374 Push an unsigned integer onto the stack, extending the stack if necessary. 3375 Handles 'set' magic. Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> 3376 and C<PUSHu>. 3377 3378 void mXPUSHu(UV uv) 3379 3380 =for hackers 3381 Found in file pp.h 3382 3383 =item ORIGMARK 3384 X<ORIGMARK> 3385 3386 The original stack mark for the XSUB. See C<dORIGMARK>. 3387 3388 =for hackers 3389 Found in file pp.h 3390 3391 =item POPi 3392 X<POPi> 3393 3394 Pops an integer off the stack. 3395 3396 IV POPi 3397 3398 =for hackers 3399 Found in file pp.h 3400 3401 =item POPl 3402 X<POPl> 3403 3404 Pops a long off the stack. 3405 3406 long POPl 3407 3408 =for hackers 3409 Found in file pp.h 3410 3411 =item POPn 3412 X<POPn> 3413 3414 Pops a double off the stack. 3415 3416 NV POPn 3417 3418 =for hackers 3419 Found in file pp.h 3420 3421 =item POPp 3422 X<POPp> 3423 3424 Pops a string off the stack. Deprecated. New code should use POPpx. 3425 3426 char* POPp 3427 3428 =for hackers 3429 Found in file pp.h 3430 3431 =item POPpbytex 3432 X<POPpbytex> 3433 3434 Pops a string off the stack which must consist of bytes i.e. characters < 256. 3435 3436 char* POPpbytex 3437 3438 =for hackers 3439 Found in file pp.h 3440 3441 =item POPpx 3442 X<POPpx> 3443 3444 Pops a string off the stack. 3445 3446 char* POPpx 3447 3448 =for hackers 3449 Found in file pp.h 3450 3451 =item POPs 3452 X<POPs> 3453 3454 Pops an SV off the stack. 3455 3456 SV* POPs 3457 3458 =for hackers 3459 Found in file pp.h 3460 3461 =item PUSHi 3462 X<PUSHi> 3463 3464 Push an integer onto the stack. The stack must have room for this element. 3465 Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be 3466 called to declare it. Do not call multiple C<TARG>-oriented macros to 3467 return lists from XSUB's - see C<mPUSHi> instead. See also C<XPUSHi> and 3468 C<mXPUSHi>. 3469 3470 void PUSHi(IV iv) 3471 3472 =for hackers 3473 Found in file pp.h 3474 3475 =item PUSHMARK 3476 X<PUSHMARK> 3477 3478 Opening bracket for arguments on a callback. See C<PUTBACK> and 3479 L<perlcall>. 3480 3481 void PUSHMARK(SP) 3482 3483 =for hackers 3484 Found in file pp.h 3485 3486 =item PUSHmortal 3487 X<PUSHmortal> 3488 3489 Push a new mortal SV onto the stack. The stack must have room for this 3490 element. Does not handle 'set' magic. Does not use C<TARG>. See also 3491 C<PUSHs>, C<XPUSHmortal> and C<XPUSHs>. 3492 3493 void PUSHmortal() 3494 3495 =for hackers 3496 Found in file pp.h 3497 3498 =item PUSHn 3499 X<PUSHn> 3500 3501 Push a double onto the stack. The stack must have room for this element. 3502 Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be 3503 called to declare it. Do not call multiple C<TARG>-oriented macros to 3504 return lists from XSUB's - see C<mPUSHn> instead. See also C<XPUSHn> and 3505 C<mXPUSHn>. 3506 3507 void PUSHn(NV nv) 3508 3509 =for hackers 3510 Found in file pp.h 3511 3512 =item PUSHp 3513 X<PUSHp> 3514 3515 Push a string onto the stack. The stack must have room for this element. 3516 The C<len> indicates the length of the string. Handles 'set' magic. Uses 3517 C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to declare it. Do not 3518 call multiple C<TARG>-oriented macros to return lists from XSUB's - see 3519 C<mPUSHp> instead. See also C<XPUSHp> and C<mXPUSHp>. 3520 3521 void PUSHp(char* str, STRLEN len) 3522 3523 =for hackers 3524 Found in file pp.h 3525 3526 =item PUSHs 3527 X<PUSHs> 3528 3529 Push an SV onto the stack. The stack must have room for this element. 3530 Does not handle 'set' magic. Does not use C<TARG>. See also C<PUSHmortal>, 3531 C<XPUSHs> and C<XPUSHmortal>. 3532 3533 void PUSHs(SV* sv) 3534 3535 =for hackers 3536 Found in file pp.h 3537 3538 =item PUSHu 3539 X<PUSHu> 3540 3541 Push an unsigned integer onto the stack. The stack must have room for this 3542 element. Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> 3543 should be called to declare it. Do not call multiple C<TARG>-oriented 3544 macros to return lists from XSUB's - see C<mPUSHu> instead. See also 3545 C<XPUSHu> and C<mXPUSHu>. 3546 3547 void PUSHu(UV uv) 3548 3549 =for hackers 3550 Found in file pp.h 3551 3552 =item PUTBACK 3553 X<PUTBACK> 3554 3555 Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>. 3556 See C<PUSHMARK> and L<perlcall> for other uses. 3557 3558 PUTBACK; 3559 3560 =for hackers 3561 Found in file pp.h 3562 3563 =item SP 3564 X<SP> 3565 3566 Stack pointer. This is usually handled by C<xsubpp>. See C<dSP> and 3567 C<SPAGAIN>. 3568 3569 =for hackers 3570 Found in file pp.h 3571 3572 =item SPAGAIN 3573 X<SPAGAIN> 3574 3575 Refetch the stack pointer. Used after a callback. See L<perlcall>. 3576 3577 SPAGAIN; 3578 3579 =for hackers 3580 Found in file pp.h 3581 3582 =item XPUSHi 3583 X<XPUSHi> 3584 3585 Push an integer onto the stack, extending the stack if necessary. Handles 3586 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to 3587 declare it. Do not call multiple C<TARG>-oriented macros to return lists 3588 from XSUB's - see C<mXPUSHi> instead. See also C<PUSHi> and C<mPUSHi>. 3589 3590 void XPUSHi(IV iv) 3591 3592 =for hackers 3593 Found in file pp.h 3594 3595 =item XPUSHmortal 3596 X<XPUSHmortal> 3597 3598 Push a new mortal SV onto the stack, extending the stack if necessary. Does 3599 not handle 'set' magic. Does not use C<TARG>. See also C<XPUSHs>, 3600 C<PUSHmortal> and C<PUSHs>. 3601 3602 void XPUSHmortal() 3603 3604 =for hackers 3605 Found in file pp.h 3606 3607 =item XPUSHn 3608 X<XPUSHn> 3609 3610 Push a double onto the stack, extending the stack if necessary. Handles 3611 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to 3612 declare it. Do not call multiple C<TARG>-oriented macros to return lists 3613 from XSUB's - see C<mXPUSHn> instead. See also C<PUSHn> and C<mPUSHn>. 3614 3615 void XPUSHn(NV nv) 3616 3617 =for hackers 3618 Found in file pp.h 3619 3620 =item XPUSHp 3621 X<XPUSHp> 3622 3623 Push a string onto the stack, extending the stack if necessary. The C<len> 3624 indicates the length of the string. Handles 'set' magic. Uses C<TARG>, so 3625 C<dTARGET> or C<dXSTARG> should be called to declare it. Do not call 3626 multiple C<TARG>-oriented macros to return lists from XSUB's - see 3627 C<mXPUSHp> instead. See also C<PUSHp> and C<mPUSHp>. 3628 3629 void XPUSHp(char* str, STRLEN len) 3630 3631 =for hackers 3632 Found in file pp.h 3633 3634 =item XPUSHs 3635 X<XPUSHs> 3636 3637 Push an SV onto the stack, extending the stack if necessary. Does not 3638 handle 'set' magic. Does not use C<TARG>. See also C<XPUSHmortal>, 3639 C<PUSHs> and C<PUSHmortal>. 3640 3641 void XPUSHs(SV* sv) 3642 3643 =for hackers 3644 Found in file pp.h 3645 3646 =item XPUSHu 3647 X<XPUSHu> 3648 3649 Push an unsigned integer onto the stack, extending the stack if necessary. 3650 Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be 3651 called to declare it. Do not call multiple C<TARG>-oriented macros to 3652 return lists from XSUB's - see C<mXPUSHu> instead. See also C<PUSHu> and 3653 C<mPUSHu>. 3654 3655 void XPUSHu(UV uv) 3656 3657 =for hackers 3658 Found in file pp.h 3659 3660 =item XSRETURN 3661 X<XSRETURN> 3662 3663 Return from XSUB, indicating number of items on the stack. This is usually 3664 handled by C<xsubpp>. 3665 3666 void XSRETURN(int nitems) 3667 3668 =for hackers 3669 Found in file XSUB.h 3670 3671 =item XSRETURN_EMPTY 3672 X<XSRETURN_EMPTY> 3673 3674 Return an empty list from an XSUB immediately. 3675 3676 XSRETURN_EMPTY; 3677 3678 =for hackers 3679 Found in file XSUB.h 3680 3681 =item XSRETURN_IV 3682 X<XSRETURN_IV> 3683 3684 Return an integer from an XSUB immediately. Uses C<XST_mIV>. 3685 3686 void XSRETURN_IV(IV iv) 3687 3688 =for hackers 3689 Found in file XSUB.h 3690 3691 =item XSRETURN_NO 3692 X<XSRETURN_NO> 3693 3694 Return C<&PL_sv_no> from an XSUB immediately. Uses C<XST_mNO>. 3695 3696 XSRETURN_NO; 3697 3698 =for hackers 3699 Found in file XSUB.h 3700 3701 =item XSRETURN_NV 3702 X<XSRETURN_NV> 3703 3704 Return a double from an XSUB immediately. Uses C<XST_mNV>. 3705 3706 void XSRETURN_NV(NV nv) 3707 3708 =for hackers 3709 Found in file XSUB.h 3710 3711 =item XSRETURN_PV 3712 X<XSRETURN_PV> 3713 3714 Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>. 3715 3716 void XSRETURN_PV(char* str) 3717 3718 =for hackers 3719 Found in file XSUB.h 3720 3721 =item XSRETURN_UNDEF 3722 X<XSRETURN_UNDEF> 3723 3724 Return C<&PL_sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>. 3725 3726 XSRETURN_UNDEF; 3727 3728 =for hackers 3729 Found in file XSUB.h 3730 3731 =item XSRETURN_UV 3732 X<XSRETURN_UV> 3733 3734 Return an integer from an XSUB immediately. Uses C<XST_mUV>. 3735 3736 void XSRETURN_UV(IV uv) 3737 3738 =for hackers 3739 Found in file XSUB.h 3740 3741 =item XSRETURN_YES 3742 X<XSRETURN_YES> 3743 3744 Return C<&PL_sv_yes> from an XSUB immediately. Uses C<XST_mYES>. 3745 3746 XSRETURN_YES; 3747 3748 =for hackers 3749 Found in file XSUB.h 3750 3751 =item XST_mIV 3752 X<XST_mIV> 3753 3754 Place an integer into the specified position C<pos> on the stack. The 3755 value is stored in a new mortal SV. 3756 3757 void XST_mIV(int pos, IV iv) 3758 3759 =for hackers 3760 Found in file XSUB.h 3761 3762 =item XST_mNO 3763 X<XST_mNO> 3764 3765 Place C<&PL_sv_no> into the specified position C<pos> on the 3766 stack. 3767 3768 void XST_mNO(int pos) 3769 3770 =for hackers 3771 Found in file XSUB.h 3772 3773 =item XST_mNV 3774 X<XST_mNV> 3775 3776 Place a double into the specified position C<pos> on the stack. The value 3777 is stored in a new mortal SV. 3778 3779 void XST_mNV(int pos, NV nv) 3780 3781 =for hackers 3782 Found in file XSUB.h 3783 3784 =item XST_mPV 3785 X<XST_mPV> 3786 3787 Place a copy of a string into the specified position C<pos> on the stack. 3788 The value is stored in a new mortal SV. 3789 3790 void XST_mPV(int pos, char* str) 3791 3792 =for hackers 3793 Found in file XSUB.h 3794 3795 =item XST_mUNDEF 3796 X<XST_mUNDEF> 3797 3798 Place C<&PL_sv_undef> into the specified position C<pos> on the 3799 stack. 3800 3801 void XST_mUNDEF(int pos) 3802 3803 =for hackers 3804 Found in file XSUB.h 3805 3806 =item XST_mYES 3807 X<XST_mYES> 3808 3809 Place C<&PL_sv_yes> into the specified position C<pos> on the 3810 stack. 3811 3812 void XST_mYES(int pos) 3813 3814 =for hackers 3815 Found in file XSUB.h 3816 3817 3818 =back 3819 3820 =head1 SV Flags 3821 3822 =over 8 3823 3824 =item svtype 3825 X<svtype> 3826 3827 An enum of flags for Perl types. These are found in the file B<sv.h> 3828 in the C<svtype> enum. Test these flags with the C<SvTYPE> macro. 3829 3830 =for hackers 3831 Found in file sv.h 3832 3833 =item SVt_IV 3834 X<SVt_IV> 3835 3836 Integer type flag for scalars. See C<svtype>. 3837 3838 =for hackers 3839 Found in file sv.h 3840 3841 =item SVt_NV 3842 X<SVt_NV> 3843 3844 Double type flag for scalars. See C<svtype>. 3845 3846 =for hackers 3847 Found in file sv.h 3848 3849 =item SVt_PV 3850 X<SVt_PV> 3851 3852 Pointer type flag for scalars. See C<svtype>. 3853 3854 =for hackers 3855 Found in file sv.h 3856 3857 =item SVt_PVAV 3858 X<SVt_PVAV> 3859 3860 Type flag for arrays. See C<svtype>. 3861 3862 =for hackers 3863 Found in file sv.h 3864 3865 =item SVt_PVCV 3866 X<SVt_PVCV> 3867 3868 Type flag for code refs. See C<svtype>. 3869 3870 =for hackers 3871 Found in file sv.h 3872 3873 =item SVt_PVHV 3874 X<SVt_PVHV> 3875 3876 Type flag for hashes. See C<svtype>. 3877 3878 =for hackers 3879 Found in file sv.h 3880 3881 =item SVt_PVMG 3882 X<SVt_PVMG> 3883 3884 Type flag for blessed scalars. See C<svtype>. 3885 3886 =for hackers 3887 Found in file sv.h 3888 3889 3890 =back 3891 3892 =head1 SV Manipulation Functions 3893 3894 =over 8 3895 3896 =item get_sv 3897 X<get_sv> 3898 3899 Returns the SV of the specified Perl scalar. If C<create> is set and the 3900 Perl variable does not exist then it will be created. If C<create> is not 3901 set and the variable does not exist then NULL is returned. 3902 3903 NOTE: the perl_ form of this function is deprecated. 3904 3905 SV* get_sv(const char* name, I32 create) 3906 3907 =for hackers 3908 Found in file perl.c 3909 3910 =item newRV_inc 3911 X<newRV_inc> 3912 3913 Creates an RV wrapper for an SV. The reference count for the original SV is 3914 incremented. 3915 3916 SV* newRV_inc(SV* sv) 3917 3918 =for hackers 3919 Found in file sv.h 3920 3921 =item SvCUR 3922 X<SvCUR> 3923 3924 Returns the length of the string which is in the SV. See C<SvLEN>. 3925 3926 STRLEN SvCUR(SV* sv) 3927 3928 =for hackers 3929 Found in file sv.h 3930 3931 =item SvCUR_set 3932 X<SvCUR_set> 3933 3934 Set the current length of the string which is in the SV. See C<SvCUR> 3935 and C<SvIV_set>. 3936 3937 void SvCUR_set(SV* sv, STRLEN len) 3938 3939 =for hackers 3940 Found in file sv.h 3941 3942 =item SvEND 3943 X<SvEND> 3944 3945 Returns a pointer to the last character in the string which is in the SV. 3946 See C<SvCUR>. Access the character as *(SvEND(sv)). 3947 3948 char* SvEND(SV* sv) 3949 3950 =for hackers 3951 Found in file sv.h 3952 3953 =item SvGAMAGIC 3954 X<SvGAMAGIC> 3955 3956 Returns true if the SV has get magic or overloading. If either is true then 3957 the scalar is active data, and has the potential to return a new value every 3958 time it is accessed. Hence you must be careful to only read it once per user 3959 logical operation and work with that returned value. If neither is true then 3960 the scalar's value cannot change unless written to. 3961 3962 char* SvGAMAGIC(SV* sv) 3963 3964 =for hackers 3965 Found in file sv.h 3966 3967 =item SvGROW 3968 X<SvGROW> 3969 3970 Expands the character buffer in the SV so that it has room for the 3971 indicated number of bytes (remember to reserve space for an extra trailing 3972 NUL character). Calls C<sv_grow> to perform the expansion if necessary. 3973 Returns a pointer to the character buffer. 3974 3975 char * SvGROW(SV* sv, STRLEN len) 3976 3977 =for hackers 3978 Found in file sv.h 3979 3980 =item SvIOK 3981 X<SvIOK> 3982 3983 Returns a U32 value indicating whether the SV contains an integer. 3984 3985 U32 SvIOK(SV* sv) 3986 3987 =for hackers 3988 Found in file sv.h 3989 3990 =item SvIOKp 3991 X<SvIOKp> 3992 3993 Returns a U32 value indicating whether the SV contains an integer. Checks 3994 the B<private> setting. Use C<SvIOK>. 3995 3996 U32 SvIOKp(SV* sv) 3997 3998 =for hackers 3999 Found in file sv.h 4000 4001 =item SvIOK_notUV 4002 X<SvIOK_notUV> 4003 4004 Returns a boolean indicating whether the SV contains a signed integer. 4005 4006 bool SvIOK_notUV(SV* sv) 4007 4008 =for hackers 4009 Found in file sv.h 4010 4011 =item SvIOK_off 4012 X<SvIOK_off> 4013 4014 Unsets the IV status of an SV. 4015 4016 void SvIOK_off(SV* sv) 4017 4018 =for hackers 4019 Found in file sv.h 4020 4021 =item SvIOK_on 4022 X<SvIOK_on> 4023 4024 Tells an SV that it is an integer. 4025 4026 void SvIOK_on(SV* sv) 4027 4028 =for hackers 4029 Found in file sv.h 4030 4031 =item SvIOK_only 4032 X<SvIOK_only> 4033 4034 Tells an SV that it is an integer and disables all other OK bits. 4035 4036 void SvIOK_only(SV* sv) 4037 4038 =for hackers 4039 Found in file sv.h 4040 4041 =item SvIOK_only_UV 4042 X<SvIOK_only_UV> 4043 4044 Tells and SV that it is an unsigned integer and disables all other OK bits. 4045 4046 void SvIOK_only_UV(SV* sv) 4047 4048 =for hackers 4049 Found in file sv.h 4050 4051 =item SvIOK_UV 4052 X<SvIOK_UV> 4053 4054 Returns a boolean indicating whether the SV contains an unsigned integer. 4055 4056 bool SvIOK_UV(SV* sv) 4057 4058 =for hackers 4059 Found in file sv.h 4060 4061 =item SvIsCOW 4062 X<SvIsCOW> 4063 4064 Returns a boolean indicating whether the SV is Copy-On-Write. (either shared 4065 hash key scalars, or full Copy On Write scalars if 5.9.0 is configured for 4066 COW) 4067 4068 bool SvIsCOW(SV* sv) 4069 4070 =for hackers 4071 Found in file sv.h 4072 4073 =item SvIsCOW_shared_hash 4074 X<SvIsCOW_shared_hash> 4075 4076 Returns a boolean indicating whether the SV is Copy-On-Write shared hash key 4077 scalar. 4078 4079 bool SvIsCOW_shared_hash(SV* sv) 4080 4081 =for hackers 4082 Found in file sv.h 4083 4084 =item SvIV 4085 X<SvIV> 4086 4087 Coerces the given SV to an integer and returns it. See C<SvIVx> for a 4088 version which guarantees to evaluate sv only once. 4089 4090 IV SvIV(SV* sv) 4091 4092 =for hackers 4093 Found in file sv.h 4094 4095 =item SvIVX 4096 X<SvIVX> 4097 4098 Returns the raw value in the SV's IV slot, without checks or conversions. 4099 Only use when you are sure SvIOK is true. See also C<SvIV()>. 4100 4101 IV SvIVX(SV* sv) 4102 4103 =for hackers 4104 Found in file sv.h 4105 4106 =item SvIVx 4107 X<SvIVx> 4108 4109 Coerces the given SV to an integer and returns it. Guarantees to evaluate 4110 C<sv> only once. Only use this if C<sv> is an expression with side effects, 4111 otherwise use the more efficient C<SvIV>. 4112 4113 IV SvIVx(SV* sv) 4114 4115 =for hackers 4116 Found in file sv.h 4117 4118 =item SvIV_nomg 4119 X<SvIV_nomg> 4120 4121 Like C<SvIV> but doesn't process magic. 4122 4123 IV SvIV_nomg(SV* sv) 4124 4125 =for hackers 4126 Found in file sv.h 4127 4128 =item SvIV_set 4129 X<SvIV_set> 4130 4131 Set the value of the IV pointer in sv to val. It is possible to perform 4132 the same function of this macro with an lvalue assignment to C<SvIVX>. 4133 With future Perls, however, it will be more efficient to use 4134 C<SvIV_set> instead of the lvalue assignment to C<SvIVX>. 4135 4136 void SvIV_set(SV* sv, IV val) 4137 4138 =for hackers 4139 Found in file sv.h 4140 4141 =item SvLEN 4142 X<SvLEN> 4143 4144 Returns the size of the string buffer in the SV, not including any part 4145 attributable to C<SvOOK>. See C<SvCUR>. 4146 4147 STRLEN SvLEN(SV* sv) 4148 4149 =for hackers 4150 Found in file sv.h 4151 4152 =item SvLEN_set 4153 X<SvLEN_set> 4154 4155 Set the actual length of the string which is in the SV. See C<SvIV_set>. 4156 4157 void SvLEN_set(SV* sv, STRLEN len) 4158 4159 =for hackers 4160 Found in file sv.h 4161 4162 =item SvMAGIC_set 4163 X<SvMAGIC_set> 4164 4165 Set the value of the MAGIC pointer in sv to val. See C<SvIV_set>. 4166 4167 void SvMAGIC_set(SV* sv, MAGIC* val) 4168 4169 =for hackers 4170 Found in file sv.h 4171 4172 =item SvNIOK 4173 X<SvNIOK> 4174 4175 Returns a U32 value indicating whether the SV contains a number, integer or 4176 double. 4177 4178 U32 SvNIOK(SV* sv) 4179 4180 =for hackers 4181 Found in file sv.h 4182 4183 =item SvNIOKp 4184 X<SvNIOKp> 4185 4186 Returns a U32 value indicating whether the SV contains a number, integer or 4187 double. Checks the B<private> setting. Use C<SvNIOK>. 4188 4189 U32 SvNIOKp(SV* sv) 4190 4191 =for hackers 4192 Found in file sv.h 4193 4194 =item SvNIOK_off 4195 X<SvNIOK_off> 4196 4197 Unsets the NV/IV status of an SV. 4198 4199 void SvNIOK_off(SV* sv) 4200 4201 =for hackers 4202 Found in file sv.h 4203 4204 =item SvNOK 4205 X<SvNOK> 4206 4207 Returns a U32 value indicating whether the SV contains a double. 4208 4209 U32 SvNOK(SV* sv) 4210 4211 =for hackers 4212 Found in file sv.h 4213 4214 =item SvNOKp 4215 X<SvNOKp> 4216 4217 Returns a U32 value indicating whether the SV contains a double. Checks the 4218 B<private> setting. Use C<SvNOK>. 4219 4220 U32 SvNOKp(SV* sv) 4221 4222 =for hackers 4223 Found in file sv.h 4224 4225 =item SvNOK_off 4226 X<SvNOK_off> 4227 4228 Unsets the NV status of an SV. 4229 4230 void SvNOK_off(SV* sv) 4231 4232 =for hackers 4233 Found in file sv.h 4234 4235 =item SvNOK_on 4236 X<SvNOK_on> 4237 4238 Tells an SV that it is a double. 4239 4240 void SvNOK_on(SV* sv) 4241 4242 =for hackers 4243 Found in file sv.h 4244 4245 =item SvNOK_only 4246 X<SvNOK_only> 4247 4248 Tells an SV that it is a double and disables all other OK bits. 4249 4250 void SvNOK_only(SV* sv) 4251 4252 =for hackers 4253 Found in file sv.h 4254 4255 =item SvNV 4256 X<SvNV> 4257 4258 Coerce the given SV to a double and return it. See C<SvNVx> for a version 4259 which guarantees to evaluate sv only once. 4260 4261 NV SvNV(SV* sv) 4262 4263 =for hackers 4264 Found in file sv.h 4265 4266 =item SvNVX 4267 X<SvNVX> 4268 4269 Returns the raw value in the SV's NV slot, without checks or conversions. 4270 Only use when you are sure SvNOK is true. See also C<SvNV()>. 4271 4272 NV SvNVX(SV* sv) 4273 4274 =for hackers 4275 Found in file sv.h 4276 4277 =item SvNVx 4278 X<SvNVx> 4279 4280 Coerces the given SV to a double and returns it. Guarantees to evaluate 4281 C<sv> only once. Only use this if C<sv> is an expression with side effects, 4282 otherwise use the more efficient C<SvNV>. 4283 4284 NV SvNVx(SV* sv) 4285 4286 =for hackers 4287 Found in file sv.h 4288 4289 =item SvNV_set 4290 X<SvNV_set> 4291 4292 Set the value of the NV pointer in sv to val. See C<SvIV_set>. 4293 4294 void SvNV_set(SV* sv, NV val) 4295 4296 =for hackers 4297 Found in file sv.h 4298 4299 =item SvOK 4300 X<SvOK> 4301 4302 Returns a U32 value indicating whether the value is an SV. It also tells 4303 whether the value is defined or not. 4304 4305 U32 SvOK(SV* sv) 4306 4307 =for hackers 4308 Found in file sv.h 4309 4310 =item SvOOK 4311 X<SvOOK> 4312 4313 Returns a U32 indicating whether the SvIVX is a valid offset value for 4314 the SvPVX. This hack is used internally to speed up removal of characters 4315 from the beginning of a SvPV. When SvOOK is true, then the start of the 4316 allocated string buffer is really (SvPVX - SvIVX). 4317 4318 U32 SvOOK(SV* sv) 4319 4320 =for hackers 4321 Found in file sv.h 4322 4323 =item SvPOK 4324 X<SvPOK> 4325 4326 Returns a U32 value indicating whether the SV contains a character 4327 string. 4328 4329 U32 SvPOK(SV* sv) 4330 4331 =for hackers 4332 Found in file sv.h 4333 4334 =item SvPOKp 4335 X<SvPOKp> 4336 4337 Returns a U32 value indicating whether the SV contains a character string. 4338 Checks the B<private> setting. Use C<SvPOK>. 4339 4340 U32 SvPOKp(SV* sv) 4341 4342 =for hackers 4343 Found in file sv.h 4344 4345 =item SvPOK_off 4346 X<SvPOK_off> 4347 4348 Unsets the PV status of an SV. 4349 4350 void SvPOK_off(SV* sv) 4351 4352 =for hackers 4353 Found in file sv.h 4354 4355 =item SvPOK_on 4356 X<SvPOK_on> 4357 4358 Tells an SV that it is a string. 4359 4360 void SvPOK_on(SV* sv) 4361 4362 =for hackers 4363 Found in file sv.h 4364 4365 =item SvPOK_only 4366 X<SvPOK_only> 4367 4368 Tells an SV that it is a string and disables all other OK bits. 4369 Will also turn off the UTF-8 status. 4370 4371 void SvPOK_only(SV* sv) 4372 4373 =for hackers 4374 Found in file sv.h 4375 4376 =item SvPOK_only_UTF8 4377 X<SvPOK_only_UTF8> 4378 4379 Tells an SV that it is a string and disables all other OK bits, 4380 and leaves the UTF-8 status as it was. 4381 4382 void SvPOK_only_UTF8(SV* sv) 4383 4384 =for hackers 4385 Found in file sv.h 4386 4387 =item SvPV 4388 X<SvPV> 4389 4390 Returns a pointer to the string in the SV, or a stringified form of 4391 the SV if the SV does not contain a string. The SV may cache the 4392 stringified version becoming C<SvPOK>. Handles 'get' magic. See also 4393 C<SvPVx> for a version which guarantees to evaluate sv only once. 4394 4395 char* SvPV(SV* sv, STRLEN len) 4396 4397 =for hackers 4398 Found in file sv.h 4399 4400 =item SvPVbyte 4401 X<SvPVbyte> 4402 4403 Like C<SvPV>, but converts sv to byte representation first if necessary. 4404 4405 char* SvPVbyte(SV* sv, STRLEN len) 4406 4407 =for hackers 4408 Found in file sv.h 4409 4410 =item SvPVbytex 4411 X<SvPVbytex> 4412 4413 Like C<SvPV>, but converts sv to byte representation first if necessary. 4414 Guarantees to evaluate sv only once; use the more efficient C<SvPVbyte> 4415 otherwise. 4416 4417 char* SvPVbytex(SV* sv, STRLEN len) 4418 4419 =for hackers 4420 Found in file sv.h 4421 4422 =item SvPVbytex_force 4423 X<SvPVbytex_force> 4424 4425 Like C<SvPV_force>, but converts sv to byte representation first if necessary. 4426 Guarantees to evaluate sv only once; use the more efficient C<SvPVbyte_force> 4427 otherwise. 4428 4429 char* SvPVbytex_force(SV* sv, STRLEN len) 4430 4431 =for hackers 4432 Found in file sv.h 4433 4434 =item SvPVbyte_force 4435 X<SvPVbyte_force> 4436 4437 Like C<SvPV_force>, but converts sv to byte representation first if necessary. 4438 4439 char* SvPVbyte_force(SV* sv, STRLEN len) 4440 4441 =for hackers 4442 Found in file sv.h 4443 4444 =item SvPVbyte_nolen 4445 X<SvPVbyte_nolen> 4446 4447 Like C<SvPV_nolen>, but converts sv to byte representation first if necessary. 4448 4449 char* SvPVbyte_nolen(SV* sv) 4450 4451 =for hackers 4452 Found in file sv.h 4453 4454 =item SvPVutf8 4455 X<SvPVutf8> 4456 4457 Like C<SvPV>, but converts sv to utf8 first if necessary. 4458 4459 char* SvPVutf8(SV* sv, STRLEN len) 4460 4461 =for hackers 4462 Found in file sv.h 4463 4464 =item SvPVutf8x 4465 X<SvPVutf8x> 4466 4467 Like C<SvPV>, but converts sv to utf8 first if necessary. 4468 Guarantees to evaluate sv only once; use the more efficient C<SvPVutf8> 4469 otherwise. 4470 4471 char* SvPVutf8x(SV* sv, STRLEN len) 4472 4473 =for hackers 4474 Found in file sv.h 4475 4476 =item SvPVutf8x_force 4477 X<SvPVutf8x_force> 4478 4479 Like C<SvPV_force>, but converts sv to utf8 first if necessary. 4480 Guarantees to evaluate sv only once; use the more efficient C<SvPVutf8_force> 4481 otherwise. 4482 4483 char* SvPVutf8x_force(SV* sv, STRLEN len) 4484 4485 =for hackers 4486 Found in file sv.h 4487 4488 =item SvPVutf8_force 4489 X<SvPVutf8_force> 4490 4491 Like C<SvPV_force>, but converts sv to utf8 first if necessary. 4492 4493 char* SvPVutf8_force(SV* sv, STRLEN len) 4494 4495 =for hackers 4496 Found in file sv.h 4497 4498 =item SvPVutf8_nolen 4499 X<SvPVutf8_nolen> 4500 4501 Like C<SvPV_nolen>, but converts sv to utf8 first if necessary. 4502 4503 char* SvPVutf8_nolen(SV* sv) 4504 4505 =for hackers 4506 Found in file sv.h 4507 4508 =item SvPVX 4509 X<SvPVX> 4510 4511 Returns a pointer to the physical string in the SV. The SV must contain a 4512 string. 4513 4514 char* SvPVX(SV* sv) 4515 4516 =for hackers 4517 Found in file sv.h 4518 4519 =item SvPVx 4520 X<SvPVx> 4521 4522 A version of C<SvPV> which guarantees to evaluate C<sv> only once. 4523 Only use this if C<sv> is an expression with side effects, otherwise use the 4524 more efficient C<SvPVX>. 4525 4526 char* SvPVx(SV* sv, STRLEN len) 4527 4528 =for hackers 4529 Found in file sv.h 4530 4531 =item SvPV_force 4532 X<SvPV_force> 4533 4534 Like C<SvPV> but will force the SV into containing just a string 4535 (C<SvPOK_only>). You want force if you are going to update the C<SvPVX> 4536 directly. 4537 4538 char* SvPV_force(SV* sv, STRLEN len) 4539 4540 =for hackers 4541 Found in file sv.h 4542 4543 =item SvPV_force_nomg 4544 X<SvPV_force_nomg> 4545 4546 Like C<SvPV> but will force the SV into containing just a string 4547 (C<SvPOK_only>). You want force if you are going to update the C<SvPVX> 4548 directly. Doesn't process magic. 4549 4550 char* SvPV_force_nomg(SV* sv, STRLEN len) 4551 4552 =for hackers 4553 Found in file sv.h 4554 4555 =item SvPV_nolen 4556 X<SvPV_nolen> 4557 4558 Returns a pointer to the string in the SV, or a stringified form of 4559 the SV if the SV does not contain a string. The SV may cache the 4560 stringified form becoming C<SvPOK>. Handles 'get' magic. 4561 4562 char* SvPV_nolen(SV* sv) 4563 4564 =for hackers 4565 Found in file sv.h 4566 4567 =item SvPV_nomg 4568 X<SvPV_nomg> 4569 4570 Like C<SvPV> but doesn't process magic. 4571 4572 char* SvPV_nomg(SV* sv, STRLEN len) 4573 4574 =for hackers 4575 Found in file sv.h 4576 4577 =item SvPV_set 4578 X<SvPV_set> 4579 4580 Set the value of the PV pointer in sv to val. See C<SvIV_set>. 4581 4582 void SvPV_set(SV* sv, char* val) 4583 4584 =for hackers 4585 Found in file sv.h 4586 4587 =item SvREFCNT 4588 X<SvREFCNT> 4589 4590 Returns the value of the object's reference count. 4591 4592 U32 SvREFCNT(SV* sv) 4593 4594 =for hackers 4595 Found in file sv.h 4596 4597 =item SvREFCNT_dec 4598 X<SvREFCNT_dec> 4599 4600 Decrements the reference count of the given SV. 4601 4602 void SvREFCNT_dec(SV* sv) 4603 4604 =for hackers 4605 Found in file sv.h 4606 4607 =item SvREFCNT_inc 4608 X<SvREFCNT_inc> 4609 4610 Increments the reference count of the given SV. 4611 4612 All of the following SvREFCNT_inc* macros are optimized versions of 4613 SvREFCNT_inc, and can be replaced with SvREFCNT_inc. 4614 4615 SV* SvREFCNT_inc(SV* sv) 4616 4617 =for hackers 4618 Found in file sv.h 4619 4620 =item SvREFCNT_inc_NN 4621 X<SvREFCNT_inc_NN> 4622 4623 Same as SvREFCNT_inc, but can only be used if you know I<sv> 4624 is not NULL. Since we don't have to check the NULLness, it's faster 4625 and smaller. 4626 4627 SV* SvREFCNT_inc_NN(SV* sv) 4628 4629 =for hackers 4630 Found in file sv.h 4631 4632 =item SvREFCNT_inc_simple 4633 X<SvREFCNT_inc_simple> 4634 4635 Same as SvREFCNT_inc, but can only be used with expressions without side 4636 effects. Since we don't have to store a temporary value, it's faster. 4637 4638 SV* SvREFCNT_inc_simple(SV* sv) 4639 4640 =for hackers 4641 Found in file sv.h 4642 4643 =item SvREFCNT_inc_simple_NN 4644 X<SvREFCNT_inc_simple_NN> 4645 4646 Same as SvREFCNT_inc_simple, but can only be used if you know I<sv> 4647 is not NULL. Since we don't have to check the NULLness, it's faster 4648 and smaller. 4649 4650 SV* SvREFCNT_inc_simple_NN(SV* sv) 4651 4652 =for hackers 4653 Found in file sv.h 4654 4655 =item SvREFCNT_inc_simple_void 4656 X<SvREFCNT_inc_simple_void> 4657 4658 Same as SvREFCNT_inc_simple, but can only be used if you don't need the 4659 return value. The macro doesn't need to return a meaningful value. 4660 4661 void SvREFCNT_inc_simple_void(SV* sv) 4662 4663 =for hackers 4664 Found in file sv.h 4665 4666 =item SvREFCNT_inc_simple_void_NN 4667 X<SvREFCNT_inc_simple_void_NN> 4668 4669 Same as SvREFCNT_inc, but can only be used if you don't need the return 4670 value, and you know that I<sv> is not NULL. The macro doesn't need 4671 to return a meaningful value, or check for NULLness, so it's smaller 4672 and faster. 4673 4674 void SvREFCNT_inc_simple_void_NN(SV* sv) 4675 4676 =for hackers 4677 Found in file sv.h 4678 4679 =item SvREFCNT_inc_void 4680 X<SvREFCNT_inc_void> 4681 4682 Same as SvREFCNT_inc, but can only be used if you don't need the 4683 return value. The macro doesn't need to return a meaningful value. 4684 4685 void SvREFCNT_inc_void(SV* sv) 4686 4687 =for hackers 4688 Found in file sv.h 4689 4690 =item SvREFCNT_inc_void_NN 4691 X<SvREFCNT_inc_void_NN> 4692 4693 Same as SvREFCNT_inc, but can only be used if you don't need the return 4694 value, and you know that I<sv> is not NULL. The macro doesn't need 4695 to return a meaningful value, or check for NULLness, so it's smaller 4696 and faster. 4697 4698 void SvREFCNT_inc_void_NN(SV* sv) 4699 4700 =for hackers 4701 Found in file sv.h 4702 4703 =item SvROK 4704 X<SvROK> 4705 4706 Tests if the SV is an RV. 4707 4708 U32 SvROK(SV* sv) 4709 4710 =for hackers 4711 Found in file sv.h 4712 4713 =item SvROK_off 4714 X<SvROK_off> 4715 4716 Unsets the RV status of an SV. 4717 4718 void SvROK_off(SV* sv) 4719 4720 =for hackers 4721 Found in file sv.h 4722 4723 =item SvROK_on 4724 X<SvROK_on> 4725 4726 Tells an SV that it is an RV. 4727 4728 void SvROK_on(SV* sv) 4729 4730 =for hackers 4731 Found in file sv.h 4732 4733 =item SvRV 4734 X<SvRV> 4735 4736 Dereferences an RV to return the SV. 4737 4738 SV* SvRV(SV* sv) 4739 4740 =for hackers 4741 Found in file sv.h 4742 4743 =item SvRV_set 4744 X<SvRV_set> 4745 4746 Set the value of the RV pointer in sv to val. See C<SvIV_set>. 4747 4748 void SvRV_set(SV* sv, SV* val) 4749 4750 =for hackers 4751 Found in file sv.h 4752 4753 =item SvSTASH 4754 X<SvSTASH> 4755 4756 Returns the stash of the SV. 4757 4758 HV* SvSTASH(SV* sv) 4759 4760 =for hackers 4761 Found in file sv.h 4762 4763 =item SvSTASH_set 4764 X<SvSTASH_set> 4765 4766 Set the value of the STASH pointer in sv to val. See C<SvIV_set>. 4767 4768 void SvSTASH_set(SV* sv, HV* val) 4769 4770 =for hackers 4771 Found in file sv.h 4772 4773 =item SvTAINT 4774 X<SvTAINT> 4775 4776 Taints an SV if tainting is enabled. 4777 4778 void SvTAINT(SV* sv) 4779 4780 =for hackers 4781 Found in file sv.h 4782 4783 =item SvTAINTED 4784 X<SvTAINTED> 4785 4786 Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if 4787 not. 4788 4789 bool SvTAINTED(SV* sv) 4790 4791 =for hackers 4792 Found in file sv.h 4793 4794 =item SvTAINTED_off 4795 X<SvTAINTED_off> 4796 4797 Untaints an SV. Be I<very> careful with this routine, as it short-circuits 4798 some of Perl's fundamental security features. XS module authors should not 4799 use this function unless they fully understand all the implications of 4800 unconditionally untainting the value. Untainting should be done in the 4801 standard perl fashion, via a carefully crafted regexp, rather than directly 4802 untainting variables. 4803 4804 void SvTAINTED_off(SV* sv) 4805 4806 =for hackers 4807 Found in file sv.h 4808 4809 =item SvTAINTED_on 4810 X<SvTAINTED_on> 4811 4812 Marks an SV as tainted if tainting is enabled. 4813 4814 void SvTAINTED_on(SV* sv) 4815 4816 =for hackers 4817 Found in file sv.h 4818 4819 =item SvTRUE 4820 X<SvTRUE> 4821 4822 Returns a boolean indicating whether Perl would evaluate the SV as true or 4823 false, defined or undefined. Does not handle 'get' magic. 4824 4825 bool SvTRUE(SV* sv) 4826 4827 =for hackers 4828 Found in file sv.h 4829 4830 =item SvTYPE 4831 X<SvTYPE> 4832 4833 Returns the type of the SV. See C<svtype>. 4834 4835 svtype SvTYPE(SV* sv) 4836 4837 =for hackers 4838 Found in file sv.h 4839 4840 =item SvUOK 4841 X<SvUOK> 4842 4843 Returns a boolean indicating whether the SV contains an unsigned integer. 4844 4845 bool SvUOK(SV* sv) 4846 4847 =for hackers 4848 Found in file sv.h 4849 4850 =item SvUPGRADE 4851 X<SvUPGRADE> 4852 4853 Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to 4854 perform the upgrade if necessary. See C<svtype>. 4855 4856 void SvUPGRADE(SV* sv, svtype type) 4857 4858 =for hackers 4859 Found in file sv.h 4860 4861 =item SvUTF8 4862 X<SvUTF8> 4863 4864 Returns a U32 value indicating whether the SV contains UTF-8 encoded data. 4865 Call this after SvPV() in case any call to string overloading updates the 4866 internal flag. 4867 4868 U32 SvUTF8(SV* sv) 4869 4870 =for hackers 4871 Found in file sv.h 4872 4873 =item SvUTF8_off 4874 X<SvUTF8_off> 4875 4876 Unsets the UTF-8 status of an SV. 4877 4878 void SvUTF8_off(SV *sv) 4879 4880 =for hackers 4881 Found in file sv.h 4882 4883 =item SvUTF8_on 4884 X<SvUTF8_on> 4885 4886 Turn on the UTF-8 status of an SV (the data is not changed, just the flag). 4887 Do not use frivolously. 4888 4889 void SvUTF8_on(SV *sv) 4890 4891 =for hackers 4892 Found in file sv.h 4893 4894 =item SvUV 4895 X<SvUV> 4896 4897 Coerces the given SV to an unsigned integer and returns it. See C<SvUVx> 4898 for a version which guarantees to evaluate sv only once. 4899 4900 UV SvUV(SV* sv) 4901 4902 =for hackers 4903 Found in file sv.h 4904 4905 =item SvUVX 4906 X<SvUVX> 4907 4908 Returns the raw value in the SV's UV slot, without checks or conversions. 4909 Only use when you are sure SvIOK is true. See also C<SvUV()>. 4910 4911 UV SvUVX(SV* sv) 4912 4913 =for hackers 4914 Found in file sv.h 4915 4916 =item SvUVx 4917 X<SvUVx> 4918 4919 Coerces the given SV to an unsigned integer and returns it. Guarantees to 4920 C<sv> only once. Only use this if C<sv> is an expression with side effects, 4921 otherwise use the more efficient C<SvUV>. 4922 4923 UV SvUVx(SV* sv) 4924 4925 =for hackers 4926 Found in file sv.h 4927 4928 =item SvUV_nomg 4929 X<SvUV_nomg> 4930 4931 Like C<SvUV> but doesn't process magic. 4932 4933 UV SvUV_nomg(SV* sv) 4934 4935 =for hackers 4936 Found in file sv.h 4937 4938 =item SvUV_set 4939 X<SvUV_set> 4940 4941 Set the value of the UV pointer in sv to val. See C<SvIV_set>. 4942 4943 void SvUV_set(SV* sv, UV val) 4944 4945 =for hackers 4946 Found in file sv.h 4947 4948 =item SvVOK 4949 X<SvVOK> 4950 4951 Returns a boolean indicating whether the SV contains a v-string. 4952 4953 bool SvVOK(SV* sv) 4954 4955 =for hackers 4956 Found in file sv.h 4957 4958 =item sv_catpvn_nomg 4959 X<sv_catpvn_nomg> 4960 4961 Like C<sv_catpvn> but doesn't process magic. 4962 4963 void sv_catpvn_nomg(SV* sv, const char* ptr, STRLEN len) 4964 4965 =for hackers 4966 Found in file sv.h 4967 4968 =item sv_catsv_nomg 4969 X<sv_catsv_nomg> 4970 4971 Like C<sv_catsv> but doesn't process magic. 4972 4973 void sv_catsv_nomg(SV* dsv, SV* ssv) 4974 4975 =for hackers 4976 Found in file sv.h 4977 4978 =item sv_derived_from 4979 X<sv_derived_from> 4980 4981 Returns a boolean indicating whether the SV is derived from the specified class 4982 I<at the C level>. To check derivation at the Perl level, call C<isa()> as a 4983 normal Perl method. 4984 4985 bool sv_derived_from(SV* sv, const char* name) 4986 4987 =for hackers 4988 Found in file universal.c 4989 4990 =item sv_does 4991 X<sv_does> 4992 4993 Returns a boolean indicating whether the SV performs a specific, named role. 4994 The SV can be a Perl object or the name of a Perl class. 4995 4996 bool sv_does(SV* sv, const char* name) 4997 4998 =for hackers 4999 Found in file universal.c 5000 5001 =item sv_report_used 5002 X<sv_report_used> 5003 5004 Dump the contents of all SVs not yet freed. (Debugging aid). 5005 5006 void sv_report_used() 5007 5008 =for hackers 5009 Found in file sv.c 5010 5011 =item sv_setsv_nomg 5012 X<sv_setsv_nomg> 5013 5014 Like C<sv_setsv> but doesn't process magic. 5015 5016 void sv_setsv_nomg(SV* dsv, SV* ssv) 5017 5018 =for hackers 5019 Found in file sv.h 5020 5021 5022 =back 5023 5024 =head1 SV-Body Allocation 5025 5026 =over 8 5027 5028 =item looks_like_number 5029 X<looks_like_number> 5030 5031 Test if the content of an SV looks like a number (or is a number). 5032 C<Inf> and C<Infinity> are treated as numbers (so will not issue a 5033 non-numeric warning), even if your atof() doesn't grok them. 5034 5035 I32 looks_like_number(SV* sv) 5036 5037 =for hackers 5038 Found in file sv.c 5039 5040 =item newRV_noinc 5041 X<newRV_noinc> 5042 5043 Creates an RV wrapper for an SV. The reference count for the original 5044 SV is B<not> incremented. 5045 5046 SV* newRV_noinc(SV* sv) 5047 5048 =for hackers 5049 Found in file sv.c 5050 5051 =item newSV 5052 X<newSV> 5053 5054 Creates a new SV. A non-zero C<len> parameter indicates the number of 5055 bytes of preallocated string space the SV should have. An extra byte for a 5056 trailing NUL is also reserved. (SvPOK is not set for the SV even if string 5057 space is allocated.) The reference count for the new SV is set to 1. 5058 5059 In 5.9.3, newSV() replaces the older NEWSV() API, and drops the first 5060 parameter, I<x>, a debug aid which allowed callers to identify themselves. 5061 This aid has been superseded by a new build option, PERL_MEM_LOG (see 5062 L<perlhack/PERL_MEM_LOG>). The older API is still there for use in XS 5063 modules supporting older perls. 5064 5065 SV* newSV(STRLEN len) 5066 5067 =for hackers 5068 Found in file sv.c 5069 5070 =item newSVhek 5071 X<newSVhek> 5072 5073 Creates a new SV from the hash key structure. It will generate scalars that 5074 point to the shared string table where possible. Returns a new (undefined) 5075 SV if the hek is NULL. 5076 5077 SV* newSVhek(const HEK *hek) 5078 5079 =for hackers 5080 Found in file sv.c 5081 5082 =item newSViv 5083 X<newSViv> 5084 5085 Creates a new SV and copies an integer into it. The reference count for the 5086 SV is set to 1. 5087 5088 SV* newSViv(IV i) 5089 5090 =for hackers 5091 Found in file sv.c 5092 5093 =item newSVnv 5094 X<newSVnv> 5095 5096 Creates a new SV and copies a floating point value into it. 5097 The reference count for the SV is set to 1. 5098 5099 SV* newSVnv(NV n) 5100 5101 =for hackers 5102 Found in file sv.c 5103 5104 =item newSVpv 5105 X<newSVpv> 5106 5107 Creates a new SV and copies a string into it. The reference count for the 5108 SV is set to 1. If C<len> is zero, Perl will compute the length using 5109 strlen(). For efficiency, consider using C<newSVpvn> instead. 5110 5111 SV* newSVpv(const char* s, STRLEN len) 5112 5113 =for hackers 5114 Found in file sv.c 5115 5116 =item newSVpvf 5117 X<newSVpvf> 5118 5119 Creates a new SV and initializes it with the string formatted like 5120 C<sprintf>. 5121 5122 SV* newSVpvf(const char* pat, ...) 5123 5124 =for hackers 5125 Found in file sv.c 5126 5127 =item newSVpvn 5128 X<newSVpvn> 5129 5130 Creates a new SV and copies a string into it. The reference count for the 5131 SV is set to 1. Note that if C<len> is zero, Perl will create a zero length 5132 string. You are responsible for ensuring that the source string is at least 5133 C<len> bytes long. If the C<s> argument is NULL the new SV will be undefined. 5134 5135 SV* newSVpvn(const char* s, STRLEN len) 5136 5137 =for hackers 5138 Found in file sv.c 5139 5140 =item newSVpvn_share 5141 X<newSVpvn_share> 5142 5143 Creates a new SV with its SvPVX_const pointing to a shared string in the string 5144 table. If the string does not already exist in the table, it is created 5145 first. Turns on READONLY and FAKE. If the C<hash> parameter is non-zero, that 5146 value is used; otherwise the hash is computed. The string's hash can be later 5147 be retrieved from the SV with the C<SvSHARED_HASH()> macro. The idea here is 5148 that as the string table is used for shared hash keys these strings will have 5149 SvPVX_const == HeKEY and hash lookup will avoid string compare. 5150 5151 SV* newSVpvn_share(const char* s, I32 len, U32 hash) 5152 5153 =for hackers 5154 Found in file sv.c 5155 5156 =item newSVpvs 5157 X<newSVpvs> 5158 5159 Like C<newSVpvn>, but takes a literal string instead of a string/length pair. 5160 5161 SV* newSVpvs(const char* s) 5162 5163 =for hackers 5164 Found in file handy.h 5165 5166 =item newSVpvs_share 5167 X<newSVpvs_share> 5168 5169 Like C<newSVpvn_share>, but takes a literal string instead of a string/length 5170 pair and omits the hash parameter. 5171 5172 SV* newSVpvs_share(const char* s) 5173 5174 =for hackers 5175 Found in file handy.h 5176 5177 =item newSVrv 5178 X<newSVrv> 5179 5180 Creates a new SV for the RV, C<rv>, to point to. If C<rv> is not an RV then 5181 it will be upgraded to one. If C<classname> is non-null then the new SV will 5182 be blessed in the specified package. The new SV is returned and its 5183 reference count is 1. 5184 5185 SV* newSVrv(SV* rv, const char* classname) 5186 5187 =for hackers 5188 Found in file sv.c 5189 5190 =item newSVsv 5191 X<newSVsv> 5192 5193 Creates a new SV which is an exact duplicate of the original SV. 5194 (Uses C<sv_setsv>). 5195 5196 SV* newSVsv(SV* old) 5197 5198 =for hackers 5199 Found in file sv.c 5200 5201 =item newSVuv 5202 X<newSVuv> 5203 5204 Creates a new SV and copies an unsigned integer into it. 5205 The reference count for the SV is set to 1. 5206 5207 SV* newSVuv(UV u) 5208 5209 =for hackers 5210 Found in file sv.c 5211 5212 =item newSV_type 5213 X<newSV_type> 5214 5215 Creates a new SV, of the type specified. The reference count for the new SV 5216 is set to 1. 5217 5218 SV* newSV_type(svtype type) 5219 5220 =for hackers 5221 Found in file sv.c 5222 5223 =item sv_2bool 5224 X<sv_2bool> 5225 5226 This function is only called on magical items, and is only used by 5227 sv_true() or its macro equivalent. 5228 5229 bool sv_2bool(SV* sv) 5230 5231 =for hackers 5232 Found in file sv.c 5233 5234 =item sv_2cv 5235 X<sv_2cv> 5236 5237 Using various gambits, try to get a CV from an SV; in addition, try if 5238 possible to set C<*st> and C<*gvp> to the stash and GV associated with it. 5239 The flags in C<lref> are passed to sv_fetchsv. 5240 5241 CV* sv_2cv(SV* sv, HV** st, GV** gvp, I32 lref) 5242 5243 =for hackers 5244 Found in file sv.c 5245 5246 =item sv_2io 5247 X<sv_2io> 5248 5249 Using various gambits, try to get an IO from an SV: the IO slot if its a 5250 GV; or the recursive result if we're an RV; or the IO slot of the symbol 5251 named after the PV if we're a string. 5252 5253 IO* sv_2io(SV* sv) 5254 5255 =for hackers 5256 Found in file sv.c 5257 5258 =item sv_2iv_flags 5259 X<sv_2iv_flags> 5260 5261 Return the integer value of an SV, doing any necessary string 5262 conversion. If flags includes SV_GMAGIC, does an mg_get() first. 5263 Normally used via the C<SvIV(sv)> and C<SvIVx(sv)> macros. 5264 5265 IV sv_2iv_flags(SV* sv, I32 flags) 5266 5267 =for hackers 5268 Found in file sv.c 5269 5270 =item sv_2mortal 5271 X<sv_2mortal> 5272 5273 Marks an existing SV as mortal. The SV will be destroyed "soon", either 5274 by an explicit call to FREETMPS, or by an implicit call at places such as 5275 statement boundaries. SvTEMP() is turned on which means that the SV's 5276 string buffer can be "stolen" if this SV is copied. See also C<sv_newmortal> 5277 and C<sv_mortalcopy>. 5278 5279 SV* sv_2mortal(SV* sv) 5280 5281 =for hackers 5282 Found in file sv.c 5283 5284 =item sv_2nv 5285 X<sv_2nv> 5286 5287 Return the num value of an SV, doing any necessary string or integer 5288 conversion, magic etc. Normally used via the C<SvNV(sv)> and C<SvNVx(sv)> 5289 macros. 5290 5291 NV sv_2nv(SV* sv) 5292 5293 =for hackers 5294 Found in file sv.c 5295 5296 =item sv_2pvbyte 5297 X<sv_2pvbyte> 5298 5299 Return a pointer to the byte-encoded representation of the SV, and set *lp 5300 to its length. May cause the SV to be downgraded from UTF-8 as a 5301 side-effect. 5302 5303 Usually accessed via the C<SvPVbyte> macro. 5304 5305 char* sv_2pvbyte(SV* sv, STRLEN* lp) 5306 5307 =for hackers 5308 Found in file sv.c 5309 5310 =item sv_2pvutf8 5311 X<sv_2pvutf8> 5312 5313 Return a pointer to the UTF-8-encoded representation of the SV, and set *lp 5314 to its length. May cause the SV to be upgraded to UTF-8 as a side-effect. 5315 5316 Usually accessed via the C<SvPVutf8> macro. 5317 5318 char* sv_2pvutf8(SV* sv, STRLEN* lp) 5319 5320 =for hackers 5321 Found in file sv.c 5322 5323 =item sv_2pv_flags 5324 X<sv_2pv_flags> 5325 5326 Returns a pointer to the string value of an SV, and sets *lp to its length. 5327 If flags includes SV_GMAGIC, does an mg_get() first. Coerces sv to a string 5328 if necessary. 5329 Normally invoked via the C<SvPV_flags> macro. C<sv_2pv()> and C<sv_2pv_nomg> 5330 usually end up here too. 5331 5332 char* sv_2pv_flags(SV* sv, STRLEN* lp, I32 flags) 5333 5334 =for hackers 5335 Found in file sv.c 5336 5337 =item sv_2uv_flags 5338 X<sv_2uv_flags> 5339 5340 Return the unsigned integer value of an SV, doing any necessary string 5341 conversion. If flags includes SV_GMAGIC, does an mg_get() first. 5342 Normally used via the C<SvUV(sv)> and C<SvUVx(sv)> macros. 5343 5344 UV sv_2uv_flags(SV* sv, I32 flags) 5345 5346 =for hackers 5347 Found in file sv.c 5348 5349 =item sv_backoff 5350 X<sv_backoff> 5351 5352 Remove any string offset. You should normally use the C<SvOOK_off> macro 5353 wrapper instead. 5354 5355 int sv_backoff(SV* sv) 5356 5357 =for hackers 5358 Found in file sv.c 5359 5360 =item sv_bless 5361 X<sv_bless> 5362 5363 Blesses an SV into a specified package. The SV must be an RV. The package 5364 must be designated by its stash (see C<gv_stashpv()>). The reference count 5365 of the SV is unaffected. 5366 5367 SV* sv_bless(SV* sv, HV* stash) 5368 5369 =for hackers 5370 Found in file sv.c 5371 5372 =item sv_catpv 5373 X<sv_catpv> 5374 5375 Concatenates the string onto the end of the string which is in the SV. 5376 If the SV has the UTF-8 status set, then the bytes appended should be 5377 valid UTF-8. Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>. 5378 5379 void sv_catpv(SV* sv, const char* ptr) 5380 5381 =for hackers 5382 Found in file sv.c 5383 5384 =item sv_catpvf 5385 X<sv_catpvf> 5386 5387 Processes its arguments like C<sprintf> and appends the formatted 5388 output to an SV. If the appended data contains "wide" characters 5389 (including, but not limited to, SVs with a UTF-8 PV formatted with %s, 5390 and characters >255 formatted with %c), the original SV might get 5391 upgraded to UTF-8. Handles 'get' magic, but not 'set' magic. See 5392 C<sv_catpvf_mg>. If the original SV was UTF-8, the pattern should be 5393 valid UTF-8; if the original SV was bytes, the pattern should be too. 5394 5395 void sv_catpvf(SV* sv, const char* pat, ...) 5396 5397 =for hackers 5398 Found in file sv.c 5399 5400 =item sv_catpvf_mg 5401 X<sv_catpvf_mg> 5402 5403 Like C<sv_catpvf>, but also handles 'set' magic. 5404 5405 void sv_catpvf_mg(SV *sv, const char* pat, ...) 5406 5407 =for hackers 5408 Found in file sv.c 5409 5410 =item sv_catpvn 5411 X<sv_catpvn> 5412 5413 Concatenates the string onto the end of the string which is in the SV. The 5414 C<len> indicates number of bytes to copy. If the SV has the UTF-8 5415 status set, then the bytes appended should be valid UTF-8. 5416 Handles 'get' magic, but not 'set' magic. See C<sv_catpvn_mg>. 5417 5418 void sv_catpvn(SV* sv, const char* ptr, STRLEN len) 5419 5420 =for hackers 5421 Found in file sv.c 5422 5423 =item sv_catpvn_flags 5424 X<sv_catpvn_flags> 5425 5426 Concatenates the string onto the end of the string which is in the SV. The 5427 C<len> indicates number of bytes to copy. If the SV has the UTF-8 5428 status set, then the bytes appended should be valid UTF-8. 5429 If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<dsv> if 5430 appropriate, else not. C<sv_catpvn> and C<sv_catpvn_nomg> are implemented 5431 in terms of this function. 5432 5433 void sv_catpvn_flags(SV* sv, const char* ptr, STRLEN len, I32 flags) 5434 5435 =for hackers 5436 Found in file sv.c 5437 5438 =item sv_catpvs 5439 X<sv_catpvs> 5440 5441 Like C<sv_catpvn>, but takes a literal string instead of a string/length pair. 5442 5443 void sv_catpvs(SV* sv, const char* s) 5444 5445 =for hackers 5446 Found in file handy.h 5447 5448 =item sv_catpv_mg 5449 X<sv_catpv_mg> 5450 5451 Like C<sv_catpv>, but also handles 'set' magic. 5452 5453 void sv_catpv_mg(SV *sv, const char *ptr) 5454 5455 =for hackers 5456 Found in file sv.c 5457 5458 =item sv_catsv 5459 X<sv_catsv> 5460 5461 Concatenates the string from SV C<ssv> onto the end of the string in 5462 SV C<dsv>. Modifies C<dsv> but not C<ssv>. Handles 'get' magic, but 5463 not 'set' magic. See C<sv_catsv_mg>. 5464 5465 void sv_catsv(SV* dsv, SV* ssv) 5466 5467 =for hackers 5468 Found in file sv.c 5469 5470 =item sv_catsv_flags 5471 X<sv_catsv_flags> 5472 5473 Concatenates the string from SV C<ssv> onto the end of the string in 5474 SV C<dsv>. Modifies C<dsv> but not C<ssv>. If C<flags> has C<SV_GMAGIC> 5475 bit set, will C<mg_get> on the SVs if appropriate, else not. C<sv_catsv> 5476 and C<sv_catsv_nomg> are implemented in terms of this function. 5477 5478 void sv_catsv_flags(SV* dsv, SV* ssv, I32 flags) 5479 5480 =for hackers 5481 Found in file sv.c 5482 5483 =item sv_chop 5484 X<sv_chop> 5485 5486 Efficient removal of characters from the beginning of the string buffer. 5487 SvPOK(sv) must be true and the C<ptr> must be a pointer to somewhere inside 5488 the string buffer. The C<ptr> becomes the first character of the adjusted 5489 string. Uses the "OOK hack". 5490 Beware: after this function returns, C<ptr> and SvPVX_const(sv) may no longer 5491 refer to the same chunk of data. 5492 5493 void sv_chop(SV* sv, const char* ptr) 5494 5495 =for hackers 5496 Found in file sv.c 5497 5498 =item sv_clear 5499 X<sv_clear> 5500 5501 Clear an SV: call any destructors, free up any memory used by the body, 5502 and free the body itself. The SV's head is I<not> freed, although 5503 its type is set to all 1's so that it won't inadvertently be assumed 5504 to be live during global destruction etc. 5505 This function should only be called when REFCNT is zero. Most of the time 5506 you'll want to call C<sv_free()> (or its macro wrapper C<SvREFCNT_dec>) 5507 instead. 5508 5509 void sv_clear(SV* sv) 5510 5511 =for hackers 5512 Found in file sv.c 5513 5514 =item sv_cmp 5515 X<sv_cmp> 5516 5517 Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the 5518 string in C<sv1> is less than, equal to, or greater than the string in 5519 C<sv2>. Is UTF-8 and 'use bytes' aware, handles get magic, and will 5520 coerce its args to strings if necessary. See also C<sv_cmp_locale>. 5521 5522 I32 sv_cmp(SV* sv1, SV* sv2) 5523 5524 =for hackers 5525 Found in file sv.c 5526 5527 =item sv_cmp_locale 5528 X<sv_cmp_locale> 5529 5530 Compares the strings in two SVs in a locale-aware manner. Is UTF-8 and 5531 'use bytes' aware, handles get magic, and will coerce its args to strings 5532 if necessary. See also C<sv_cmp_locale>. See also C<sv_cmp>. 5533 5534 I32 sv_cmp_locale(SV* sv1, SV* sv2) 5535 5536 =for hackers 5537 Found in file sv.c 5538 5539 =item sv_collxfrm 5540 X<sv_collxfrm> 5541 5542 Add Collate Transform magic to an SV if it doesn't already have it. 5543 5544 Any scalar variable may carry PERL_MAGIC_collxfrm magic that contains the 5545 scalar data of the variable, but transformed to such a format that a normal 5546 memory comparison can be used to compare the data according to the locale 5547 settings. 5548 5549 char* sv_collxfrm(SV* sv, STRLEN* nxp) 5550 5551 =for hackers 5552 Found in file sv.c 5553 5554 =item sv_copypv 5555 X<sv_copypv> 5556 5557 Copies a stringified representation of the source SV into the 5558 destination SV. Automatically performs any necessary mg_get and 5559 coercion of numeric values into strings. Guaranteed to preserve 5560 UTF8 flag even from overloaded objects. Similar in nature to 5561 sv_2pv[_flags] but operates directly on an SV instead of just the 5562 string. Mostly uses sv_2pv_flags to do its work, except when that 5563 would lose the UTF-8'ness of the PV. 5564 5565 void sv_copypv(SV* dsv, SV* ssv) 5566 5567 =for hackers 5568 Found in file sv.c 5569 5570 =item sv_dec 5571 X<sv_dec> 5572 5573 Auto-decrement of the value in the SV, doing string to numeric conversion 5574 if necessary. Handles 'get' magic. 5575 5576 void sv_dec(SV* sv) 5577 5578 =for hackers 5579 Found in file sv.c 5580 5581 =item sv_eq 5582 X<sv_eq> 5583 5584 Returns a boolean indicating whether the strings in the two SVs are 5585 identical. Is UTF-8 and 'use bytes' aware, handles get magic, and will 5586 coerce its args to strings if necessary. 5587 5588 I32 sv_eq(SV* sv1, SV* sv2) 5589 5590 =for hackers 5591 Found in file sv.c 5592 5593 =item sv_force_normal_flags 5594 X<sv_force_normal_flags> 5595 5596 Undo various types of fakery on an SV: if the PV is a shared string, make 5597 a private copy; if we're a ref, stop refing; if we're a glob, downgrade to 5598 an xpvmg; if we're a copy-on-write scalar, this is the on-write time when 5599 we do the copy, and is also used locally. If C<SV_COW_DROP_PV> is set 5600 then a copy-on-write scalar drops its PV buffer (if any) and becomes 5601 SvPOK_off rather than making a copy. (Used where this scalar is about to be 5602 set to some other value.) In addition, the C<flags> parameter gets passed to 5603 C<sv_unref_flags()> when unrefing. C<sv_force_normal> calls this function 5604 with flags set to 0. 5605 5606 void sv_force_normal_flags(SV *sv, U32 flags) 5607 5608 =for hackers 5609 Found in file sv.c 5610 5611 =item sv_free 5612 X<sv_free> 5613 5614 Decrement an SV's reference count, and if it drops to zero, call 5615 C<sv_clear> to invoke destructors and free up any memory used by 5616 the body; finally, deallocate the SV's head itself. 5617 Normally called via a wrapper macro C<SvREFCNT_dec>. 5618 5619 void sv_free(SV* sv) 5620 5621 =for hackers 5622 Found in file sv.c 5623 5624 =item sv_gets 5625 X<sv_gets> 5626 5627 Get a line from the filehandle and store it into the SV, optionally 5628 appending to the currently-stored string. 5629 5630 char* sv_gets(SV* sv, PerlIO* fp, I32 append) 5631 5632 =for hackers 5633 Found in file sv.c 5634 5635 =item sv_grow 5636 X<sv_grow> 5637 5638 Expands the character buffer in the SV. If necessary, uses C<sv_unref> and 5639 upgrades the SV to C<SVt_PV>. Returns a pointer to the character buffer. 5640 Use the C<SvGROW> wrapper instead. 5641 5642 char* sv_grow(SV* sv, STRLEN newlen) 5643 5644 =for hackers 5645 Found in file sv.c 5646 5647 =item sv_inc 5648 X<sv_inc> 5649 5650 Auto-increment of the value in the SV, doing string to numeric conversion 5651 if necessary. Handles 'get' magic. 5652 5653 void sv_inc(SV* sv) 5654 5655 =for hackers 5656 Found in file sv.c 5657 5658 =item sv_insert 5659 X<sv_insert> 5660 5661 Inserts a string at the specified offset/length within the SV. Similar to 5662 the Perl substr() function. 5663 5664 void sv_insert(SV* bigsv, STRLEN offset, STRLEN len, const char* little, STRLEN littlelen) 5665 5666 =for hackers 5667 Found in file sv.c 5668 5669 =item sv_isa 5670 X<sv_isa> 5671 5672 Returns a boolean indicating whether the SV is blessed into the specified 5673 class. This does not check for subtypes; use C<sv_derived_from> to verify 5674 an inheritance relationship. 5675 5676 int sv_isa(SV* sv, const char* name) 5677 5678 =for hackers 5679 Found in file sv.c 5680 5681 =item sv_isobject 5682 X<sv_isobject> 5683 5684 Returns a boolean indicating whether the SV is an RV pointing to a blessed 5685 object. If the SV is not an RV, or if the object is not blessed, then this 5686 will return false. 5687 5688 int sv_isobject(SV* sv) 5689 5690 =for hackers 5691 Found in file sv.c 5692 5693 =item sv_len 5694 X<sv_len> 5695 5696 Returns the length of the string in the SV. Handles magic and type 5697 coercion. See also C<SvCUR>, which gives raw access to the xpv_cur slot. 5698 5699 STRLEN sv_len(SV* sv) 5700 5701 =for hackers 5702 Found in file sv.c 5703 5704 =item sv_len_utf8 5705 X<sv_len_utf8> 5706 5707 Returns the number of characters in the string in an SV, counting wide 5708 UTF-8 bytes as a single character. Handles magic and type coercion. 5709 5710 STRLEN sv_len_utf8(SV* sv) 5711 5712 =for hackers 5713 Found in file sv.c 5714 5715 =item sv_magic 5716 X<sv_magic> 5717 5718 Adds magic to an SV. First upgrades C<sv> to type C<SVt_PVMG> if necessary, 5719 then adds a new magic item of type C<how> to the head of the magic list. 5720 5721 See C<sv_magicext> (which C<sv_magic> now calls) for a description of the 5722 handling of the C<name> and C<namlen> arguments. 5723 5724 You need to use C<sv_magicext> to add magic to SvREADONLY SVs and also 5725 to add more than one instance of the same 'how'. 5726 5727 void sv_magic(SV* sv, SV* obj, int how, const char* name, I32 namlen) 5728 5729 =for hackers 5730 Found in file sv.c 5731 5732 =item sv_magicext 5733 X<sv_magicext> 5734 5735 Adds magic to an SV, upgrading it if necessary. Applies the 5736 supplied vtable and returns a pointer to the magic added. 5737 5738 Note that C<sv_magicext> will allow things that C<sv_magic> will not. 5739 In particular, you can add magic to SvREADONLY SVs, and add more than 5740 one instance of the same 'how'. 5741 5742 If C<namlen> is greater than zero then a C<savepvn> I<copy> of C<name> is 5743 stored, if C<namlen> is zero then C<name> is stored as-is and - as another 5744 special case - if C<(name && namlen == HEf_SVKEY)> then C<name> is assumed 5745 to contain an C<SV*> and is stored as-is with its REFCNT incremented. 5746 5747 (This is now used as a subroutine by C<sv_magic>.) 5748 5749 MAGIC * sv_magicext(SV* sv, SV* obj, int how, const MGVTBL *vtbl, const char* name, I32 namlen) 5750 5751 =for hackers 5752 Found in file sv.c 5753 5754 =item sv_mortalcopy 5755 X<sv_mortalcopy> 5756 5757 Creates a new SV which is a copy of the original SV (using C<sv_setsv>). 5758 The new SV is marked as mortal. It will be destroyed "soon", either by an 5759 explicit call to FREETMPS, or by an implicit call at places such as 5760 statement boundaries. See also C<sv_newmortal> and C<sv_2mortal>. 5761 5762 SV* sv_mortalcopy(SV* oldsv) 5763 5764 =for hackers 5765 Found in file sv.c 5766 5767 =item sv_newmortal 5768 X<sv_newmortal> 5769 5770 Creates a new null SV which is mortal. The reference count of the SV is 5771 set to 1. It will be destroyed "soon", either by an explicit call to 5772 FREETMPS, or by an implicit call at places such as statement boundaries. 5773 See also C<sv_mortalcopy> and C<sv_2mortal>. 5774 5775 SV* sv_newmortal() 5776 5777 =for hackers 5778 Found in file sv.c 5779 5780 =item sv_newref 5781 X<sv_newref> 5782 5783 Increment an SV's reference count. Use the C<SvREFCNT_inc()> wrapper 5784 instead. 5785 5786 SV* sv_newref(SV* sv) 5787 5788 =for hackers 5789 Found in file sv.c 5790 5791 =item sv_pos_b2u 5792 X<sv_pos_b2u> 5793 5794 Converts the value pointed to by offsetp from a count of bytes from the 5795 start of the string, to a count of the equivalent number of UTF-8 chars. 5796 Handles magic and type coercion. 5797 5798 void sv_pos_b2u(SV* sv, I32* offsetp) 5799 5800 =for hackers 5801 Found in file sv.c 5802 5803 =item sv_pos_u2b 5804 X<sv_pos_u2b> 5805 5806 Converts the value pointed to by offsetp from a count of UTF-8 chars from 5807 the start of the string, to a count of the equivalent number of bytes; if 5808 lenp is non-zero, it does the same to lenp, but this time starting from 5809 the offset, rather than from the start of the string. Handles magic and 5810 type coercion. 5811 5812 void sv_pos_u2b(SV* sv, I32* offsetp, I32* lenp) 5813 5814 =for hackers 5815 Found in file sv.c 5816 5817 =item sv_pvbyten_force 5818 X<sv_pvbyten_force> 5819 5820 The backend for the C<SvPVbytex_force> macro. Always use the macro instead. 5821 5822 char* sv_pvbyten_force(SV* sv, STRLEN* lp) 5823 5824 =for hackers 5825 Found in file sv.c 5826 5827 =item sv_pvn_force 5828 X<sv_pvn_force> 5829 5830 Get a sensible string out of the SV somehow. 5831 A private implementation of the C<SvPV_force> macro for compilers which 5832 can't cope with complex macro expressions. Always use the macro instead. 5833 5834 char* sv_pvn_force(SV* sv, STRLEN* lp) 5835 5836 =for hackers 5837 Found in file sv.c 5838 5839 =item sv_pvn_force_flags 5840 X<sv_pvn_force_flags> 5841 5842 Get a sensible string out of the SV somehow. 5843 If C<flags> has C<SV_GMAGIC> bit set, will C<mg_get> on C<sv> if 5844 appropriate, else not. C<sv_pvn_force> and C<sv_pvn_force_nomg> are 5845 implemented in terms of this function. 5846 You normally want to use the various wrapper macros instead: see 5847 C<SvPV_force> and C<SvPV_force_nomg> 5848 5849 char* sv_pvn_force_flags(SV* sv, STRLEN* lp, I32 flags) 5850 5851 =for hackers 5852 Found in file sv.c 5853 5854 =item sv_pvutf8n_force 5855 X<sv_pvutf8n_force> 5856 5857 The backend for the C<SvPVutf8x_force> macro. Always use the macro instead. 5858 5859 char* sv_pvutf8n_force(SV* sv, STRLEN* lp) 5860 5861 =for hackers 5862 Found in file sv.c 5863 5864 =item sv_reftype 5865 X<sv_reftype> 5866 5867 Returns a string describing what the SV is a reference to. 5868 5869 const char* sv_reftype(const SV* sv, int ob) 5870 5871 =for hackers 5872 Found in file sv.c 5873 5874 =item sv_replace 5875 X<sv_replace> 5876 5877 Make the first argument a copy of the second, then delete the original. 5878 The target SV physically takes over ownership of the body of the source SV 5879 and inherits its flags; however, the target keeps any magic it owns, 5880 and any magic in the source is discarded. 5881 Note that this is a rather specialist SV copying operation; most of the 5882 time you'll want to use C<sv_setsv> or one of its many macro front-ends. 5883 5884 void sv_replace(SV* sv, SV* nsv) 5885 5886 =for hackers 5887 Found in file sv.c 5888 5889 =item sv_reset 5890 X<sv_reset> 5891 5892 Underlying implementation for the C<reset> Perl function. 5893 Note that the perl-level function is vaguely deprecated. 5894 5895 void sv_reset(const char* s, HV* stash) 5896 5897 =for hackers 5898 Found in file sv.c 5899 5900 =item sv_rvweaken 5901 X<sv_rvweaken> 5902 5903 Weaken a reference: set the C<SvWEAKREF> flag on this RV; give the 5904 referred-to SV C<PERL_MAGIC_backref> magic if it hasn't already; and 5905 push a back-reference to this RV onto the array of backreferences 5906 associated with that magic. If the RV is magical, set magic will be 5907 called after the RV is cleared. 5908 5909 SV* sv_rvweaken(SV *sv) 5910 5911 =for hackers 5912 Found in file sv.c 5913 5914 =item sv_setiv 5915 X<sv_setiv> 5916 5917 Copies an integer into the given SV, upgrading first if necessary. 5918 Does not handle 'set' magic. See also C<sv_setiv_mg>. 5919 5920 void sv_setiv(SV* sv, IV num) 5921 5922 =for hackers 5923 Found in file sv.c 5924 5925 =item sv_setiv_mg 5926 X<sv_setiv_mg> 5927 5928 Like C<sv_setiv>, but also handles 'set' magic. 5929 5930 void sv_setiv_mg(SV *sv, IV i) 5931 5932 =for hackers 5933 Found in file sv.c 5934 5935 =item sv_setnv 5936 X<sv_setnv> 5937 5938 Copies a double into the given SV, upgrading first if necessary. 5939 Does not handle 'set' magic. See also C<sv_setnv_mg>. 5940 5941 void sv_setnv(SV* sv, NV num) 5942 5943 =for hackers 5944 Found in file sv.c 5945 5946 =item sv_setnv_mg 5947 X<sv_setnv_mg> 5948 5949 Like C<sv_setnv>, but also handles 'set' magic. 5950 5951 void sv_setnv_mg(SV *sv, NV num) 5952 5953 =for hackers 5954 Found in file sv.c 5955 5956 =item sv_setpv 5957 X<sv_setpv> 5958 5959 Copies a string into an SV. The string must be null-terminated. Does not 5960 handle 'set' magic. See C<sv_setpv_mg>. 5961 5962 void sv_setpv(SV* sv, const char* ptr) 5963 5964 =for hackers 5965 Found in file sv.c 5966 5967 =item sv_setpvf 5968 X<sv_setpvf> 5969 5970 Works like C<sv_catpvf> but copies the text into the SV instead of 5971 appending it. Does not handle 'set' magic. See C<sv_setpvf_mg>. 5972 5973 void sv_setpvf(SV* sv, const char* pat, ...) 5974 5975 =for hackers 5976 Found in file sv.c 5977 5978 =item sv_setpvf_mg 5979 X<sv_setpvf_mg> 5980 5981 Like C<sv_setpvf>, but also handles 'set' magic. 5982 5983 void sv_setpvf_mg(SV *sv, const char* pat, ...) 5984 5985 =for hackers 5986 Found in file sv.c 5987 5988 =item sv_setpviv 5989 X<sv_setpviv> 5990 5991 Copies an integer into the given SV, also updating its string value. 5992 Does not handle 'set' magic. See C<sv_setpviv_mg>. 5993 5994 void sv_setpviv(SV* sv, IV num) 5995 5996 =for hackers 5997 Found in file sv.c 5998 5999 =item sv_setpviv_mg 6000 X<sv_setpviv_mg> 6001 6002 Like C<sv_setpviv>, but also handles 'set' magic. 6003 6004 void sv_setpviv_mg(SV *sv, IV iv) 6005 6006 =for hackers 6007 Found in file sv.c 6008 6009 =item sv_setpvn 6010 X<sv_setpvn> 6011 6012 Copies a string into an SV. The C<len> parameter indicates the number of 6013 bytes to be copied. If the C<ptr> argument is NULL the SV will become 6014 undefined. Does not handle 'set' magic. See C<sv_setpvn_mg>. 6015 6016 void sv_setpvn(SV* sv, const char* ptr, STRLEN len) 6017 6018 =for hackers 6019 Found in file sv.c 6020 6021 =item sv_setpvn_mg 6022 X<sv_setpvn_mg> 6023 6024 Like C<sv_setpvn>, but also handles 'set' magic. 6025 6026 void sv_setpvn_mg(SV *sv, const char *ptr, STRLEN len) 6027 6028 =for hackers 6029 Found in file sv.c 6030 6031 =item sv_setpvs 6032 X<sv_setpvs> 6033 6034 Like C<sv_setpvn>, but takes a literal string instead of a string/length pair. 6035 6036 void sv_setpvs(SV* sv, const char* s) 6037 6038 =for hackers 6039 Found in file handy.h 6040 6041 =item sv_setpv_mg 6042 X<sv_setpv_mg> 6043 6044 Like C<sv_setpv>, but also handles 'set' magic. 6045 6046 void sv_setpv_mg(SV *sv, const char *ptr) 6047 6048 =for hackers 6049 Found in file sv.c 6050 6051 =item sv_setref_iv 6052 X<sv_setref_iv> 6053 6054 Copies an integer into a new SV, optionally blessing the SV. The C<rv> 6055 argument will be upgraded to an RV. That RV will be modified to point to 6056 the new SV. The C<classname> argument indicates the package for the 6057 blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV 6058 will have a reference count of 1, and the RV will be returned. 6059 6060 SV* sv_setref_iv(SV* rv, const char* classname, IV iv) 6061 6062 =for hackers 6063 Found in file sv.c 6064 6065 =item sv_setref_nv 6066 X<sv_setref_nv> 6067 6068 Copies a double into a new SV, optionally blessing the SV. The C<rv> 6069 argument will be upgraded to an RV. That RV will be modified to point to 6070 the new SV. The C<classname> argument indicates the package for the 6071 blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV 6072 will have a reference count of 1, and the RV will be returned. 6073 6074 SV* sv_setref_nv(SV* rv, const char* classname, NV nv) 6075 6076 =for hackers 6077 Found in file sv.c 6078 6079 =item sv_setref_pv 6080 X<sv_setref_pv> 6081 6082 Copies a pointer into a new SV, optionally blessing the SV. The C<rv> 6083 argument will be upgraded to an RV. That RV will be modified to point to 6084 the new SV. If the C<pv> argument is NULL then C<PL_sv_undef> will be placed 6085 into the SV. The C<classname> argument indicates the package for the 6086 blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV 6087 will have a reference count of 1, and the RV will be returned. 6088 6089 Do not use with other Perl types such as HV, AV, SV, CV, because those 6090 objects will become corrupted by the pointer copy process. 6091 6092 Note that C<sv_setref_pvn> copies the string while this copies the pointer. 6093 6094 SV* sv_setref_pv(SV* rv, const char* classname, void* pv) 6095 6096 =for hackers 6097 Found in file sv.c 6098 6099 =item sv_setref_pvn 6100 X<sv_setref_pvn> 6101 6102 Copies a string into a new SV, optionally blessing the SV. The length of the 6103 string must be specified with C<n>. The C<rv> argument will be upgraded to 6104 an RV. That RV will be modified to point to the new SV. The C<classname> 6105 argument indicates the package for the blessing. Set C<classname> to 6106 C<NULL> to avoid the blessing. The new SV will have a reference count 6107 of 1, and the RV will be returned. 6108 6109 Note that C<sv_setref_pv> copies the pointer while this copies the string. 6110 6111 SV* sv_setref_pvn(SV* rv, const char* classname, const char* pv, STRLEN n) 6112 6113 =for hackers 6114 Found in file sv.c 6115 6116 =item sv_setref_uv 6117 X<sv_setref_uv> 6118 6119 Copies an unsigned integer into a new SV, optionally blessing the SV. The C<rv> 6120 argument will be upgraded to an RV. That RV will be modified to point to 6121 the new SV. The C<classname> argument indicates the package for the 6122 blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV 6123 will have a reference count of 1, and the RV will be returned. 6124 6125 SV* sv_setref_uv(SV* rv, const char* classname, UV uv) 6126 6127 =for hackers 6128 Found in file sv.c 6129 6130 =item sv_setsv 6131 X<sv_setsv> 6132 6133 Copies the contents of the source SV C<ssv> into the destination SV 6134 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this 6135 function if the source SV needs to be reused. Does not handle 'set' magic. 6136 Loosely speaking, it performs a copy-by-value, obliterating any previous 6137 content of the destination. 6138 6139 You probably want to use one of the assortment of wrappers, such as 6140 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and 6141 C<SvSetMagicSV_nosteal>. 6142 6143 void sv_setsv(SV* dsv, SV* ssv) 6144 6145 =for hackers 6146 Found in file sv.c 6147 6148 =item sv_setsv_flags 6149 X<sv_setsv_flags> 6150 6151 Copies the contents of the source SV C<ssv> into the destination SV 6152 C<dsv>. The source SV may be destroyed if it is mortal, so don't use this 6153 function if the source SV needs to be reused. Does not handle 'set' magic. 6154 Loosely speaking, it performs a copy-by-value, obliterating any previous 6155 content of the destination. 6156 If the C<flags> parameter has the C<SV_GMAGIC> bit set, will C<mg_get> on 6157 C<ssv> if appropriate, else not. If the C<flags> parameter has the 6158 C<NOSTEAL> bit set then the buffers of temps will not be stolen. <sv_setsv> 6159 and C<sv_setsv_nomg> are implemented in terms of this function. 6160 6161 You probably want to use one of the assortment of wrappers, such as 6162 C<SvSetSV>, C<SvSetSV_nosteal>, C<SvSetMagicSV> and 6163 C<SvSetMagicSV_nosteal>. 6164 6165 This is the primary function for copying scalars, and most other 6166 copy-ish functions and macros use this underneath. 6167 6168 void sv_setsv_flags(SV* dsv, SV* ssv, I32 flags) 6169 6170 =for hackers 6171 Found in file sv.c 6172 6173 =item sv_setsv_mg 6174 X<sv_setsv_mg> 6175 6176 Like C<sv_setsv>, but also handles 'set' magic. 6177 6178 void sv_setsv_mg(SV *dstr, SV *sstr) 6179 6180 =for hackers 6181 Found in file sv.c 6182 6183 =item sv_setuv 6184 X<sv_setuv> 6185 6186 Copies an unsigned integer into the given SV, upgrading first if necessary. 6187 Does not handle 'set' magic. See also C<sv_setuv_mg>. 6188 6189 void sv_setuv(SV* sv, UV num) 6190 6191 =for hackers 6192 Found in file sv.c 6193 6194 =item sv_setuv_mg 6195 X<sv_setuv_mg> 6196 6197 Like C<sv_setuv>, but also handles 'set' magic. 6198 6199 void sv_setuv_mg(SV *sv, UV u) 6200 6201 =for hackers 6202 Found in file sv.c 6203 6204 =item sv_tainted 6205 X<sv_tainted> 6206 6207 Test an SV for taintedness. Use C<SvTAINTED> instead. 6208 bool sv_tainted(SV* sv) 6209 6210 =for hackers 6211 Found in file sv.c 6212 6213 =item sv_true 6214 X<sv_true> 6215 6216 Returns true if the SV has a true value by Perl's rules. 6217 Use the C<SvTRUE> macro instead, which may call C<sv_true()> or may 6218 instead use an in-line version. 6219 6220 I32 sv_true(SV *sv) 6221 6222 =for hackers 6223 Found in file sv.c 6224 6225 =item sv_unmagic 6226 X<sv_unmagic> 6227 6228 Removes all magic of type C<type> from an SV. 6229 6230 int sv_unmagic(SV* sv, int type) 6231 6232 =for hackers 6233 Found in file sv.c 6234 6235 =item sv_unref_flags 6236 X<sv_unref_flags> 6237 6238 Unsets the RV status of the SV, and decrements the reference count of 6239 whatever was being referenced by the RV. This can almost be thought of 6240 as a reversal of C<newSVrv>. The C<cflags> argument can contain 6241 C<SV_IMMEDIATE_UNREF> to force the reference count to be decremented 6242 (otherwise the decrementing is conditional on the reference count being 6243 different from one or the reference being a readonly SV). 6244 See C<SvROK_off>. 6245 6246 void sv_unref_flags(SV* sv, U32 flags) 6247 6248 =for hackers 6249 Found in file sv.c 6250 6251 =item sv_untaint 6252 X<sv_untaint> 6253 6254 Untaint an SV. Use C<SvTAINTED_off> instead. 6255 void sv_untaint(SV* sv) 6256 6257 =for hackers 6258 Found in file sv.c 6259 6260 =item sv_upgrade 6261 X<sv_upgrade> 6262 6263 Upgrade an SV to a more complex form. Generally adds a new body type to the 6264 SV, then copies across as much information as possible from the old body. 6265 You generally want to use the C<SvUPGRADE> macro wrapper. See also C<svtype>. 6266 6267 void sv_upgrade(SV* sv, svtype new_type) 6268 6269 =for hackers 6270 Found in file sv.c 6271 6272 =item sv_usepvn_flags 6273 X<sv_usepvn_flags> 6274 6275 Tells an SV to use C<ptr> to find its string value. Normally the 6276 string is stored inside the SV but sv_usepvn allows the SV to use an 6277 outside string. The C<ptr> should point to memory that was allocated 6278 by C<malloc>. The string length, C<len>, must be supplied. By default 6279 this function will realloc (i.e. move) the memory pointed to by C<ptr>, 6280 so that pointer should not be freed or used by the programmer after 6281 giving it to sv_usepvn, and neither should any pointers from "behind" 6282 that pointer (e.g. ptr + 1) be used. 6283 6284 If C<flags> & SV_SMAGIC is true, will call SvSETMAGIC. If C<flags> & 6285 SV_HAS_TRAILING_NUL is true, then C<ptr[len]> must be NUL, and the realloc 6286 will be skipped. (i.e. the buffer is actually at least 1 byte longer than 6287 C<len>, and already meets the requirements for storing in C<SvPVX>) 6288 6289 void sv_usepvn_flags(SV* sv, char* ptr, STRLEN len, U32 flags) 6290 6291 =for hackers 6292 Found in file sv.c 6293 6294 =item sv_utf8_decode 6295 X<sv_utf8_decode> 6296 6297 If the PV of the SV is an octet sequence in UTF-8 6298 and contains a multiple-byte character, the C<SvUTF8> flag is turned on 6299 so that it looks like a character. If the PV contains only single-byte 6300 characters, the C<SvUTF8> flag stays being off. 6301 Scans PV for validity and returns false if the PV is invalid UTF-8. 6302 6303 NOTE: this function is experimental and may change or be 6304 removed without notice. 6305 6306 bool sv_utf8_decode(SV *sv) 6307 6308 =for hackers 6309 Found in file sv.c 6310 6311 =item sv_utf8_downgrade 6312 X<sv_utf8_downgrade> 6313 6314 Attempts to convert the PV of an SV from characters to bytes. 6315 If the PV contains a character beyond byte, this conversion will fail; 6316 in this case, either returns false or, if C<fail_ok> is not 6317 true, croaks. 6318 6319 This is not as a general purpose Unicode to byte encoding interface: 6320 use the Encode extension for that. 6321 6322 NOTE: this function is experimental and may change or be 6323 removed without notice. 6324 6325 bool sv_utf8_downgrade(SV *sv, bool fail_ok) 6326 6327 =for hackers 6328 Found in file sv.c 6329 6330 =item sv_utf8_encode 6331 X<sv_utf8_encode> 6332 6333 Converts the PV of an SV to UTF-8, but then turns the C<SvUTF8> 6334 flag off so that it looks like octets again. 6335 6336 void sv_utf8_encode(SV *sv) 6337 6338 =for hackers 6339 Found in file sv.c 6340 6341 =item sv_utf8_upgrade 6342 X<sv_utf8_upgrade> 6343 6344 Converts the PV of an SV to its UTF-8-encoded form. 6345 Forces the SV to string form if it is not already. 6346 Always sets the SvUTF8 flag to avoid future validity checks even 6347 if all the bytes have hibit clear. 6348 6349 This is not as a general purpose byte encoding to Unicode interface: 6350 use the Encode extension for that. 6351 6352 STRLEN sv_utf8_upgrade(SV *sv) 6353 6354 =for hackers 6355 Found in file sv.c 6356 6357 =item sv_utf8_upgrade_flags 6358 X<sv_utf8_upgrade_flags> 6359 6360 Converts the PV of an SV to its UTF-8-encoded form. 6361 Forces the SV to string form if it is not already. 6362 Always sets the SvUTF8 flag to avoid future validity checks even 6363 if all the bytes have hibit clear. If C<flags> has C<SV_GMAGIC> bit set, 6364 will C<mg_get> on C<sv> if appropriate, else not. C<sv_utf8_upgrade> and 6365 C<sv_utf8_upgrade_nomg> are implemented in terms of this function. 6366 6367 This is not as a general purpose byte encoding to Unicode interface: 6368 use the Encode extension for that. 6369 6370 STRLEN sv_utf8_upgrade_flags(SV *sv, I32 flags) 6371 6372 =for hackers 6373 Found in file sv.c 6374 6375 =item sv_vcatpvf 6376 X<sv_vcatpvf> 6377 6378 Processes its arguments like C<vsprintf> and appends the formatted output 6379 to an SV. Does not handle 'set' magic. See C<sv_vcatpvf_mg>. 6380 6381 Usually used via its frontend C<sv_catpvf>. 6382 6383 void sv_vcatpvf(SV* sv, const char* pat, va_list* args) 6384 6385 =for hackers 6386 Found in file sv.c 6387 6388 =item sv_vcatpvfn 6389 X<sv_vcatpvfn> 6390 6391 Processes its arguments like C<vsprintf> and appends the formatted output 6392 to an SV. Uses an array of SVs if the C style variable argument list is 6393 missing (NULL). When running with taint checks enabled, indicates via 6394 C<maybe_tainted> if results are untrustworthy (often due to the use of 6395 locales). 6396 6397 Usually used via one of its frontends C<sv_vcatpvf> and C<sv_vcatpvf_mg>. 6398 6399 void sv_vcatpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted) 6400 6401 =for hackers 6402 Found in file sv.c 6403 6404 =item sv_vcatpvf_mg 6405 X<sv_vcatpvf_mg> 6406 6407 Like C<sv_vcatpvf>, but also handles 'set' magic. 6408 6409 Usually used via its frontend C<sv_catpvf_mg>. 6410 6411 void sv_vcatpvf_mg(SV* sv, const char* pat, va_list* args) 6412 6413 =for hackers 6414 Found in file sv.c 6415 6416 =item sv_vsetpvf 6417 X<sv_vsetpvf> 6418 6419 Works like C<sv_vcatpvf> but copies the text into the SV instead of 6420 appending it. Does not handle 'set' magic. See C<sv_vsetpvf_mg>. 6421 6422 Usually used via its frontend C<sv_setpvf>. 6423 6424 void sv_vsetpvf(SV* sv, const char* pat, va_list* args) 6425 6426 =for hackers 6427 Found in file sv.c 6428 6429 =item sv_vsetpvfn 6430 X<sv_vsetpvfn> 6431 6432 Works like C<sv_vcatpvfn> but copies the text into the SV instead of 6433 appending it. 6434 6435 Usually used via one of its frontends C<sv_vsetpvf> and C<sv_vsetpvf_mg>. 6436 6437 void sv_vsetpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted) 6438 6439 =for hackers 6440 Found in file sv.c 6441 6442 =item sv_vsetpvf_mg 6443 X<sv_vsetpvf_mg> 6444 6445 Like C<sv_vsetpvf>, but also handles 'set' magic. 6446 6447 Usually used via its frontend C<sv_setpvf_mg>. 6448 6449 void sv_vsetpvf_mg(SV* sv, const char* pat, va_list* args) 6450 6451 =for hackers 6452 Found in file sv.c 6453 6454 6455 =back 6456 6457 =head1 Unicode Support 6458 6459 =over 8 6460 6461 =item bytes_from_utf8 6462 X<bytes_from_utf8> 6463 6464 Converts a string C<s> of length C<len> from UTF-8 into byte encoding. 6465 Unlike C<utf8_to_bytes> but like C<bytes_to_utf8>, returns a pointer to 6466 the newly-created string, and updates C<len> to contain the new 6467 length. Returns the original string if no conversion occurs, C<len> 6468 is unchanged. Do nothing if C<is_utf8> points to 0. Sets C<is_utf8> to 6469 0 if C<s> is converted or contains all 7bit characters. 6470 6471 NOTE: this function is experimental and may change or be 6472 removed without notice. 6473 6474 U8* bytes_from_utf8(const U8 *s, STRLEN *len, bool *is_utf8) 6475 6476 =for hackers 6477 Found in file utf8.c 6478 6479 =item bytes_to_utf8 6480 X<bytes_to_utf8> 6481 6482 Converts a string C<s> of length C<len> from ASCII into UTF-8 encoding. 6483 Returns a pointer to the newly-created string, and sets C<len> to 6484 reflect the new length. 6485 6486 If you want to convert to UTF-8 from other encodings than ASCII, 6487 see sv_recode_to_utf8(). 6488 6489 NOTE: this function is experimental and may change or be 6490 removed without notice. 6491 6492 U8* bytes_to_utf8(const U8 *s, STRLEN *len) 6493 6494 =for hackers 6495 Found in file utf8.c 6496 6497 =item ibcmp_utf8 6498 X<ibcmp_utf8> 6499 6500 Return true if the strings s1 and s2 differ case-insensitively, false 6501 if not (if they are equal case-insensitively). If u1 is true, the 6502 string s1 is assumed to be in UTF-8-encoded Unicode. If u2 is true, 6503 the string s2 is assumed to be in UTF-8-encoded Unicode. If u1 or u2 6504 are false, the respective string is assumed to be in native 8-bit 6505 encoding. 6506 6507 If the pe1 and pe2 are non-NULL, the scanning pointers will be copied 6508 in there (they will point at the beginning of the I<next> character). 6509 If the pointers behind pe1 or pe2 are non-NULL, they are the end 6510 pointers beyond which scanning will not continue under any 6511 circumstances. If the byte lengths l1 and l2 are non-zero, s1+l1 and 6512 s2+l2 will be used as goal end pointers that will also stop the scan, 6513 and which qualify towards defining a successful match: all the scans 6514 that define an explicit length must reach their goal pointers for 6515 a match to succeed). 6516 6517 For case-insensitiveness, the "casefolding" of Unicode is used 6518 instead of upper/lowercasing both the characters, see 6519 http://www.unicode.org/unicode/reports/tr21/ (Case Mappings). 6520 6521 I32 ibcmp_utf8(const char* a, char **pe1, UV l1, bool u1, const char* b, char **pe2, UV l2, bool u2) 6522 6523 =for hackers 6524 Found in file utf8.c 6525 6526 =item is_utf8_char 6527 X<is_utf8_char> 6528 6529 Tests if some arbitrary number of bytes begins in a valid UTF-8 6530 character. Note that an INVARIANT (i.e. ASCII) character is a valid 6531 UTF-8 character. The actual number of bytes in the UTF-8 character 6532 will be returned if it is valid, otherwise 0. 6533 6534 STRLEN is_utf8_char(const U8 *p) 6535 6536 =for hackers 6537 Found in file utf8.c 6538 6539 =item is_utf8_string 6540 X<is_utf8_string> 6541 6542 Returns true if first C<len> bytes of the given string form a valid 6543 UTF-8 string, false otherwise. Note that 'a valid UTF-8 string' does 6544 not mean 'a string that contains code points above 0x7F encoded in UTF-8' 6545 because a valid ASCII string is a valid UTF-8 string. 6546 6547 See also is_utf8_string_loclen() and is_utf8_string_loc(). 6548 6549 bool is_utf8_string(const U8 *s, STRLEN len) 6550 6551 =for hackers 6552 Found in file utf8.c 6553 6554 =item is_utf8_string_loc 6555 X<is_utf8_string_loc> 6556 6557 Like is_utf8_string() but stores the location of the failure (in the 6558 case of "utf8ness failure") or the location s+len (in the case of 6559 "utf8ness success") in the C<ep>. 6560 6561 See also is_utf8_string_loclen() and is_utf8_string(). 6562 6563 bool is_utf8_string_loc(const U8 *s, STRLEN len, const U8 **p) 6564 6565 =for hackers 6566 Found in file utf8.c 6567 6568 =item is_utf8_string_loclen 6569 X<is_utf8_string_loclen> 6570 6571 Like is_utf8_string() but stores the location of the failure (in the 6572 case of "utf8ness failure") or the location s+len (in the case of 6573 "utf8ness success") in the C<ep>, and the number of UTF-8 6574 encoded characters in the C<el>. 6575 6576 See also is_utf8_string_loc() and is_utf8_string(). 6577 6578 bool is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el) 6579 6580 =for hackers 6581 Found in file utf8.c 6582 6583 =item pv_uni_display 6584 X<pv_uni_display> 6585 6586 Build to the scalar dsv a displayable version of the string spv, 6587 length len, the displayable version being at most pvlim bytes long 6588 (if longer, the rest is truncated and "..." will be appended). 6589 6590 The flags argument can have UNI_DISPLAY_ISPRINT set to display 6591 isPRINT()able characters as themselves, UNI_DISPLAY_BACKSLASH 6592 to display the \\[nrfta\\] as the backslashed versions (like '\n') 6593 (UNI_DISPLAY_BACKSLASH is preferred over UNI_DISPLAY_ISPRINT for \\). 6594 UNI_DISPLAY_QQ (and its alias UNI_DISPLAY_REGEX) have both 6595 UNI_DISPLAY_BACKSLASH and UNI_DISPLAY_ISPRINT turned on. 6596 6597 The pointer to the PV of the dsv is returned. 6598 6599 char* pv_uni_display(SV *dsv, const U8 *spv, STRLEN len, STRLEN pvlim, UV flags) 6600 6601 =for hackers 6602 Found in file utf8.c 6603 6604 =item sv_cat_decode 6605 X<sv_cat_decode> 6606 6607 The encoding is assumed to be an Encode object, the PV of the ssv is 6608 assumed to be octets in that encoding and decoding the input starts 6609 from the position which (PV + *offset) pointed to. The dsv will be 6610 concatenated the decoded UTF-8 string from ssv. Decoding will terminate 6611 when the string tstr appears in decoding output or the input ends on 6612 the PV of the ssv. The value which the offset points will be modified 6613 to the last input position on the ssv. 6614 6615 Returns TRUE if the terminator was found, else returns FALSE. 6616 6617 bool sv_cat_decode(SV* dsv, SV *encoding, SV *ssv, int *offset, char* tstr, int tlen) 6618 6619 =for hackers 6620 Found in file sv.c 6621 6622 =item sv_recode_to_utf8 6623 X<sv_recode_to_utf8> 6624 6625 The encoding is assumed to be an Encode object, on entry the PV 6626 of the sv is assumed to be octets in that encoding, and the sv 6627 will be converted into Unicode (and UTF-8). 6628 6629 If the sv already is UTF-8 (or if it is not POK), or if the encoding 6630 is not a reference, nothing is done to the sv. If the encoding is not 6631 an C<Encode::XS> Encoding object, bad things will happen. 6632 (See F<lib/encoding.pm> and L<Encode>). 6633 6634 The PV of the sv is returned. 6635 6636 char* sv_recode_to_utf8(SV* sv, SV *encoding) 6637 6638 =for hackers 6639 Found in file sv.c 6640 6641 =item sv_uni_display 6642 X<sv_uni_display> 6643 6644 Build to the scalar dsv a displayable version of the scalar sv, 6645 the displayable version being at most pvlim bytes long 6646 (if longer, the rest is truncated and "..." will be appended). 6647 6648 The flags argument is as in pv_uni_display(). 6649 6650 The pointer to the PV of the dsv is returned. 6651 6652 char* sv_uni_display(SV *dsv, SV *ssv, STRLEN pvlim, UV flags) 6653 6654 =for hackers 6655 Found in file utf8.c 6656 6657 =item to_utf8_case 6658 X<to_utf8_case> 6659 6660 The "p" contains the pointer to the UTF-8 string encoding 6661 the character that is being converted. 6662 6663 The "ustrp" is a pointer to the character buffer to put the 6664 conversion result to. The "lenp" is a pointer to the length 6665 of the result. 6666 6667 The "swashp" is a pointer to the swash to use. 6668 6669 Both the special and normal mappings are stored lib/unicore/To/Foo.pl, 6670 and loaded by SWASHNEW, using lib/utf8_heavy.pl. The special (usually, 6671 but not always, a multicharacter mapping), is tried first. 6672 6673 The "special" is a string like "utf8::ToSpecLower", which means the 6674 hash %utf8::ToSpecLower. The access to the hash is through 6675 Perl_to_utf8_case(). 6676 6677 The "normal" is a string like "ToLower" which means the swash 6678 %utf8::ToLower. 6679 6680 UV to_utf8_case(const U8 *p, U8* ustrp, STRLEN *lenp, SV **swashp, const char *normal, const char *special) 6681 6682 =for hackers 6683 Found in file utf8.c 6684 6685 =item to_utf8_fold 6686 X<to_utf8_fold> 6687 6688 Convert the UTF-8 encoded character at p to its foldcase version and 6689 store that in UTF-8 in ustrp and its length in bytes in lenp. Note 6690 that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the 6691 foldcase version may be longer than the original character (up to 6692 three characters). 6693 6694 The first character of the foldcased version is returned 6695 (but note, as explained above, that there may be more.) 6696 6697 UV to_utf8_fold(const U8 *p, U8* ustrp, STRLEN *lenp) 6698 6699 =for hackers 6700 Found in file utf8.c 6701 6702 =item to_utf8_lower 6703 X<to_utf8_lower> 6704 6705 Convert the UTF-8 encoded character at p to its lowercase version and 6706 store that in UTF-8 in ustrp and its length in bytes in lenp. Note 6707 that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the 6708 lowercase version may be longer than the original character. 6709 6710 The first character of the lowercased version is returned 6711 (but note, as explained above, that there may be more.) 6712 6713 UV to_utf8_lower(const U8 *p, U8* ustrp, STRLEN *lenp) 6714 6715 =for hackers 6716 Found in file utf8.c 6717 6718 =item to_utf8_title 6719 X<to_utf8_title> 6720 6721 Convert the UTF-8 encoded character at p to its titlecase version and 6722 store that in UTF-8 in ustrp and its length in bytes in lenp. Note 6723 that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since the 6724 titlecase version may be longer than the original character. 6725 6726 The first character of the titlecased version is returned 6727 (but note, as explained above, that there may be more.) 6728 6729 UV to_utf8_title(const U8 *p, U8* ustrp, STRLEN *lenp) 6730 6731 =for hackers 6732 Found in file utf8.c 6733 6734 =item to_utf8_upper 6735 X<to_utf8_upper> 6736 6737 Convert the UTF-8 encoded character at p to its uppercase version and 6738 store that in UTF-8 in ustrp and its length in bytes in lenp. Note 6739 that the ustrp needs to be at least UTF8_MAXBYTES_CASE+1 bytes since 6740 the uppercase version may be longer than the original character. 6741 6742 The first character of the uppercased version is returned 6743 (but note, as explained above, that there may be more.) 6744 6745 UV to_utf8_upper(const U8 *p, U8* ustrp, STRLEN *lenp) 6746 6747 =for hackers 6748 Found in file utf8.c 6749 6750 =item utf8n_to_uvchr 6751 X<utf8n_to_uvchr> 6752 6753 flags 6754 6755 Returns the native character value of the first character in the string 6756 C<s> 6757 which is assumed to be in UTF-8 encoding; C<retlen> will be set to the 6758 length, in bytes, of that character. 6759 6760 Allows length and flags to be passed to low level routine. 6761 6762 UV utf8n_to_uvchr(const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags) 6763 6764 =for hackers 6765 Found in file utf8.c 6766 6767 =item utf8n_to_uvuni 6768 X<utf8n_to_uvuni> 6769 6770 Bottom level UTF-8 decode routine. 6771 Returns the Unicode code point value of the first character in the string C<s> 6772 which is assumed to be in UTF-8 encoding and no longer than C<curlen>; 6773 C<retlen> will be set to the length, in bytes, of that character. 6774 6775 If C<s> does not point to a well-formed UTF-8 character, the behaviour 6776 is dependent on the value of C<flags>: if it contains UTF8_CHECK_ONLY, 6777 it is assumed that the caller will raise a warning, and this function 6778 will silently just set C<retlen> to C<-1> and return zero. If the 6779 C<flags> does not contain UTF8_CHECK_ONLY, warnings about 6780 malformations will be given, C<retlen> will be set to the expected 6781 length of the UTF-8 character in bytes, and zero will be returned. 6782 6783 The C<flags> can also contain various flags to allow deviations from 6784 the strict UTF-8 encoding (see F<utf8.h>). 6785 6786 Most code should use utf8_to_uvchr() rather than call this directly. 6787 6788 UV utf8n_to_uvuni(const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags) 6789 6790 =for hackers 6791 Found in file utf8.c 6792 6793 =item utf8_distance 6794 X<utf8_distance> 6795 6796 Returns the number of UTF-8 characters between the UTF-8 pointers C<a> 6797 and C<b>. 6798 6799 WARNING: use only if you *know* that the pointers point inside the 6800 same UTF-8 buffer. 6801 6802 IV utf8_distance(const U8 *a, const U8 *b) 6803 6804 =for hackers 6805 Found in file utf8.c 6806 6807 =item utf8_hop 6808 X<utf8_hop> 6809 6810 Return the UTF-8 pointer C<s> displaced by C<off> characters, either 6811 forward or backward. 6812 6813 WARNING: do not use the following unless you *know* C<off> is within 6814 the UTF-8 data pointed to by C<s> *and* that on entry C<s> is aligned 6815 on the first byte of character or just after the last byte of a character. 6816 6817 U8* utf8_hop(const U8 *s, I32 off) 6818 6819 =for hackers 6820 Found in file utf8.c 6821 6822 =item utf8_length 6823 X<utf8_length> 6824 6825 Return the length of the UTF-8 char encoded string C<s> in characters. 6826 Stops at C<e> (inclusive). If C<e E<lt> s> or if the scan would end 6827 up past C<e>, croaks. 6828 6829 STRLEN utf8_length(const U8* s, const U8 *e) 6830 6831 =for hackers 6832 Found in file utf8.c 6833 6834 =item utf8_to_bytes 6835 X<utf8_to_bytes> 6836 6837 Converts a string C<s> of length C<len> from UTF-8 into byte encoding. 6838 Unlike C<bytes_to_utf8>, this over-writes the original string, and 6839 updates len to contain the new length. 6840 Returns zero on failure, setting C<len> to -1. 6841 6842 If you need a copy of the string, see C<bytes_from_utf8>. 6843 6844 NOTE: this function is experimental and may change or be 6845 removed without notice. 6846 6847 U8* utf8_to_bytes(U8 *s, STRLEN *len) 6848 6849 =for hackers 6850 Found in file utf8.c 6851 6852 =item utf8_to_uvchr 6853 X<utf8_to_uvchr> 6854 6855 Returns the native character value of the first character in the string C<s> 6856 which is assumed to be in UTF-8 encoding; C<retlen> will be set to the 6857 length, in bytes, of that character. 6858 6859 If C<s> does not point to a well-formed UTF-8 character, zero is 6860 returned and retlen is set, if possible, to -1. 6861 6862 UV utf8_to_uvchr(const U8 *s, STRLEN *retlen) 6863 6864 =for hackers 6865 Found in file utf8.c 6866 6867 =item utf8_to_uvuni 6868 X<utf8_to_uvuni> 6869 6870 Returns the Unicode code point of the first character in the string C<s> 6871 which is assumed to be in UTF-8 encoding; C<retlen> will be set to the 6872 length, in bytes, of that character. 6873 6874 This function should only be used when returned UV is considered 6875 an index into the Unicode semantic tables (e.g. swashes). 6876 6877 If C<s> does not point to a well-formed UTF-8 character, zero is 6878 returned and retlen is set, if possible, to -1. 6879 6880 UV utf8_to_uvuni(const U8 *s, STRLEN *retlen) 6881 6882 =for hackers 6883 Found in file utf8.c 6884 6885 =item uvchr_to_utf8 6886 X<uvchr_to_utf8> 6887 6888 Adds the UTF-8 representation of the Native codepoint C<uv> to the end 6889 of the string C<d>; C<d> should be have at least C<UTF8_MAXBYTES+1> free 6890 bytes available. The return value is the pointer to the byte after the 6891 end of the new character. In other words, 6892 6893 d = uvchr_to_utf8(d, uv); 6894 6895 is the recommended wide native character-aware way of saying 6896 6897 *(d++) = uv; 6898 6899 U8* uvchr_to_utf8(U8 *d, UV uv) 6900 6901 =for hackers 6902 Found in file utf8.c 6903 6904 =item uvuni_to_utf8_flags 6905 X<uvuni_to_utf8_flags> 6906 6907 Adds the UTF-8 representation of the Unicode codepoint C<uv> to the end 6908 of the string C<d>; C<d> should be have at least C<UTF8_MAXBYTES+1> free 6909 bytes available. The return value is the pointer to the byte after the 6910 end of the new character. In other words, 6911 6912 d = uvuni_to_utf8_flags(d, uv, flags); 6913 6914 or, in most cases, 6915 6916 d = uvuni_to_utf8(d, uv); 6917 6918 (which is equivalent to) 6919 6920 d = uvuni_to_utf8_flags(d, uv, 0); 6921 6922 is the recommended Unicode-aware way of saying 6923 6924 *(d++) = uv; 6925 6926 U8* uvuni_to_utf8_flags(U8 *d, UV uv, UV flags) 6927 6928 =for hackers 6929 Found in file utf8.c 6930 6931 6932 =back 6933 6934 =head1 Variables created by C<xsubpp> and C<xsubpp> internal functions 6935 6936 =over 8 6937 6938 =item ax 6939 X<ax> 6940 6941 Variable which is setup by C<xsubpp> to indicate the stack base offset, 6942 used by the C<ST>, C<XSprePUSH> and C<XSRETURN> macros. The C<dMARK> macro 6943 must be called prior to setup the C<MARK> variable. 6944 6945 I32 ax 6946 6947 =for hackers 6948 Found in file XSUB.h 6949 6950 =item CLASS 6951 X<CLASS> 6952 6953 Variable which is setup by C<xsubpp> to indicate the 6954 class name for a C++ XS constructor. This is always a C<char*>. See C<THIS>. 6955 6956 char* CLASS 6957 6958 =for hackers 6959 Found in file XSUB.h 6960 6961 =item dAX 6962 X<dAX> 6963 6964 Sets up the C<ax> variable. 6965 This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>. 6966 6967 dAX; 6968 6969 =for hackers 6970 Found in file XSUB.h 6971 6972 =item dAXMARK 6973 X<dAXMARK> 6974 6975 Sets up the C<ax> variable and stack marker variable C<mark>. 6976 This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>. 6977 6978 dAXMARK; 6979 6980 =for hackers 6981 Found in file XSUB.h 6982 6983 =item dITEMS 6984 X<dITEMS> 6985 6986 Sets up the C<items> variable. 6987 This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>. 6988 6989 dITEMS; 6990 6991 =for hackers 6992 Found in file XSUB.h 6993 6994 =item dUNDERBAR 6995 X<dUNDERBAR> 6996 6997 Sets up the C<padoff_du> variable for an XSUB that wishes to use 6998 C<UNDERBAR>. 6999 7000 dUNDERBAR; 7001 7002 =for hackers 7003 Found in file XSUB.h 7004 7005 =item dXSARGS 7006 X<dXSARGS> 7007 7008 Sets up stack and mark pointers for an XSUB, calling dSP and dMARK. 7009 Sets up the C<ax> and C<items> variables by calling C<dAX> and C<dITEMS>. 7010 This is usually handled automatically by C<xsubpp>. 7011 7012 dXSARGS; 7013 7014 =for hackers 7015 Found in file XSUB.h 7016 7017 =item dXSI32 7018 X<dXSI32> 7019 7020 Sets up the C<ix> variable for an XSUB which has aliases. This is usually 7021 handled automatically by C<xsubpp>. 7022 7023 dXSI32; 7024 7025 =for hackers 7026 Found in file XSUB.h 7027 7028 =item items 7029 X<items> 7030 7031 Variable which is setup by C<xsubpp> to indicate the number of 7032 items on the stack. See L<perlxs/"Variable-length Parameter Lists">. 7033 7034 I32 items 7035 7036 =for hackers 7037 Found in file XSUB.h 7038 7039 =item ix 7040 X<ix> 7041 7042 Variable which is setup by C<xsubpp> to indicate which of an 7043 XSUB's aliases was used to invoke it. See L<perlxs/"The ALIAS: Keyword">. 7044 7045 I32 ix 7046 7047 =for hackers 7048 Found in file XSUB.h 7049 7050 =item newXSproto 7051 X<newXSproto> 7052 7053 Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to 7054 the subs. 7055 7056 =for hackers 7057 Found in file XSUB.h 7058 7059 =item RETVAL 7060 X<RETVAL> 7061 7062 Variable which is setup by C<xsubpp> to hold the return value for an 7063 XSUB. This is always the proper type for the XSUB. See 7064 L<perlxs/"The RETVAL Variable">. 7065 7066 (whatever) RETVAL 7067 7068 =for hackers 7069 Found in file XSUB.h 7070 7071 =item ST 7072 X<ST> 7073 7074 Used to access elements on the XSUB's stack. 7075 7076 SV* ST(int ix) 7077 7078 =for hackers 7079 Found in file XSUB.h 7080 7081 =item THIS 7082 X<THIS> 7083 7084 Variable which is setup by C<xsubpp> to designate the object in a C++ 7085 XSUB. This is always the proper type for the C++ object. See C<CLASS> and 7086 L<perlxs/"Using XS With C++">. 7087 7088 (whatever) THIS 7089 7090 =for hackers 7091 Found in file XSUB.h 7092 7093 =item UNDERBAR 7094 X<UNDERBAR> 7095 7096 The SV* corresponding to the $_ variable. Works even if there 7097 is a lexical $_ in scope. 7098 7099 =for hackers 7100 Found in file XSUB.h 7101 7102 =item XS 7103 X<XS> 7104 7105 Macro to declare an XSUB and its C parameter list. This is handled by 7106 C<xsubpp>. 7107 7108 =for hackers 7109 Found in file XSUB.h 7110 7111 =item XS_VERSION 7112 X<XS_VERSION> 7113 7114 The version identifier for an XS module. This is usually 7115 handled automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>. 7116 7117 =for hackers 7118 Found in file XSUB.h 7119 7120 =item XS_VERSION_BOOTCHECK 7121 X<XS_VERSION_BOOTCHECK> 7122 7123 Macro to verify that a PM module's $VERSION variable matches the XS 7124 module's C<XS_VERSION> variable. This is usually handled automatically by 7125 C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">. 7126 7127 XS_VERSION_BOOTCHECK; 7128 7129 =for hackers 7130 Found in file XSUB.h 7131 7132 7133 =back 7134 7135 =head1 Warning and Dieing 7136 7137 =over 8 7138 7139 =item croak 7140 X<croak> 7141 7142 This is the XSUB-writer's interface to Perl's C<die> function. 7143 Normally call this function the same way you call the C C<printf> 7144 function. Calling C<croak> returns control directly to Perl, 7145 sidestepping the normal C order of execution. See C<warn>. 7146 7147 If you want to throw an exception object, assign the object to 7148 C<$@> and then pass C<NULL> to croak(): 7149 7150 errsv = get_sv("@", TRUE); 7151 sv_setsv(errsv, exception_object); 7152 croak(NULL); 7153 7154 void croak(const char* pat, ...) 7155 7156 =for hackers 7157 Found in file util.c 7158 7159 =item warn 7160 X<warn> 7161 7162 This is the XSUB-writer's interface to Perl's C<warn> function. Call this 7163 function the same way you call the C C<printf> function. See C<croak>. 7164 7165 void warn(const char* pat, ...) 7166 7167 =for hackers 7168 Found in file util.c 7169 7170 7171 =back 7172 7173 =head1 AUTHORS 7174 7175 Until May 1997, this document was maintained by Jeff Okamoto 7176 <okamoto@corp.hp.com>. It is now maintained as part of Perl itself. 7177 7178 With lots of help and suggestions from Dean Roehrich, Malcolm Beattie, 7179 Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil 7180 Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer, 7181 Stephen McCamant, and Gurusamy Sarathy. 7182 7183 API Listing originally by Dean Roehrich <roehrich@cray.com>. 7184 7185 Updated to be autogenerated from comments in the source by Benjamin Stuhl. 7186 7187 =head1 SEE ALSO 7188 7189 perlguts(1), perlxs(1), perlxstut(1), perlintern(1) 7190 7191 =cut 7192 7193 ex: set ro:
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |