X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlapi.pod;h=98abdc1d0766671f976baf19f4c12bc3f5154267;hb=4b3603a49f6eac34b6cdb154bf3bd8a8f5240085;hp=f274641029d87757358f1c0d80550a762c29cd2f;hpb=732bce8ca9ade99f36ea3935c33c641ae9422f3e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlapi.pod b/pod/perlapi.pod index f274641..98abdc1 100644 --- a/pod/perlapi.pod +++ b/pod/perlapi.pod @@ -4,9 +4,9 @@ perlapi - autogenerated documentation for the perl public API =head1 DESCRIPTION -This file contains the documentation of the perl public API generated by -embed.pl, specifically a listing of functions, macros, flags, and variables -that may be used by extension writers. The interfaces of any functions that +This file contains the documentation of the perl public API generated by +embed.pl, specifically a listing of functions, macros, flags, and variables +that may be used by extension writers. The interfaces of any functions that are not listed here are subject to change without notice. For this reason, blindly using functions listed in proto.h is to be avoided when writing extensions. @@ -38,6 +38,28 @@ array itself. =for hackers Found in file av.c +=item av_delete + +Deletes the element indexed by C from the array. Returns the +deleted element. C is currently ignored. + + SV* av_delete(AV* ar, I32 key, I32 flags) + +=for hackers +Found in file av.c + +=item av_exists + +Returns true if the element indexed by C has been initialized. + +This relies on the fact that uninitialized array elements are set to +C<&PL_sv_undef>. + + bool av_exists(AV* ar, I32 key) + +=for hackers +Found in file av.c + =item av_extend Pre-extend an array. The C is the index to which the array should be @@ -62,6 +84,16 @@ more information on how to use this function on tied arrays. =for hackers Found in file av.c +=item av_fill + +Ensure than an array has a given number of elements, equivalent to +Perl's C<$#array = $fill;>. + + void av_fill(AV* ar, I32 fill) + +=for hackers +Found in file av.c + =item av_len Returns the highest index in the array. Returns -1 if the array is @@ -153,9 +185,10 @@ Found in file av.c =item bytes_to_utf8 Converts a string C of length C from ASCII into UTF8 encoding. -Returns a pointer to the newly-created string. +Returns a pointer to the newly-created string, and sets C to +reflect the new length. - U8 * bytes_to_utf8(U8 *s, STRLEN len) + U8 * bytes_to_utf8(U8 *s, STRLEN *len) =for hackers Found in file utf8.c @@ -445,7 +478,7 @@ Found in file op.h =item GIMME_V The XSUB-writer's equivalent to Perl's C. Returns C, -C or C for void, scalar or array context, +C or C for void, scalar or list context, respectively. U32 GIMME_V @@ -466,18 +499,18 @@ Found in file gv.h Returns the glob with the given C and a defined subroutine or C. The glob lives in the given C, or in the stashes -accessible via @ISA and @UNIVERSAL. +accessible via @ISA and @UNIVERSAL. The argument C should be either 0 or -1. If C, as a side-effect creates a glob with the given C in the given C which in the case of success contains an alias for the subroutine, and sets -up caching info for this glob. Similarly for all the searched stashes. +up caching info for this glob. Similarly for all the searched stashes. This function grants C<"SUPER"> token as a postfix of the stash name. The GV returned from C may be a method cache entry, which is not visible to Perl code. So when calling C, you should not use the GV directly; instead, you should use the method's CV, which can be -obtained from the GV with the C macro. +obtained from the GV with the C macro. GV* gv_fetchmeth(HV* stash, const char* name, STRLEN len, I32 level) @@ -498,24 +531,24 @@ Found in file gv.c Returns the glob which contains the subroutine to call to invoke the method on the C. In fact in the presence of autoloading this may be the glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is -already setup. +already setup. The third parameter of C determines whether AUTOLOAD lookup is performed if the given method is not present: non-zero -means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD. +means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD. Calling C is equivalent to calling C -with a non-zero C parameter. +with a non-zero C parameter. These functions grant C<"SUPER"> token as a prefix of the method name. Note that if you want to keep the returned glob for a long time, you need to check for it being "AUTOLOAD", since at the later time the call may load a different subroutine due to $AUTOLOAD changing its value. Use the glob -created via a side effect to do this. +created via a side effect to do this. These functions have the same side-effects and as C with C. C should be writable if contains C<':'> or C<' ''>. The warning against passing the GV returned by C to -C apply equally to these functions. +C apply equally to these functions. GV* gv_fetchmethod_autoload(HV* stash, const char* name, I32 autoload) @@ -546,7 +579,7 @@ Found in file gv.c =item G_ARRAY -Used to indicate array context. See C, C and +Used to indicate list context. See C, C and L. =for hackers @@ -711,7 +744,7 @@ Found in file hv.c =item hv_delete Deletes a key/value pair in the hash. The value SV is removed from the -hash and returned to the caller. The C is the length of the key. +hash and returned to the caller. The C is the length of the key. The C value will normally be zero; if set to G_DISCARD then NULL will be returned. @@ -758,7 +791,7 @@ Found in file hv.c Returns the SV which corresponds to the specified key in the hash. The C is the length of the key. If C is set then the fetch will be part of a store. Check that the return value is non-null before -dereferencing it to a C. +dereferencing it to a C. See L for more information on how to use this function on tied hashes. @@ -776,7 +809,7 @@ if you want the function to compute it. IF C is set then the fetch will be part of a store. Make sure the return value is non-null before accessing it. The return value when C is a tied hash is a pointer to a static location, so be sure to make a copy of the structure if you need to -store it somewhere. +store it somewhere. See L for more information on how to use this function on tied hashes. @@ -790,7 +823,7 @@ Found in file hv.c Prepares a starting point to traverse a hash table. Returns the number of keys in the hash (i.e. the same as C). The return value is -currently only meaningful for hashes without tie magic. +currently only meaningful for hashes without tie magic. NOTE: Before version 5.004_65, C used to return the number of hash buckets that happen to be in use. If you still need that esoteric @@ -869,7 +902,7 @@ NULL if the operation failed or if the value did not need to be actually stored within the hash (as in the case of tied hashes). Otherwise it can be dereferenced to get the original C. Note that the caller is responsible for suitably incrementing the reference count of C before -the call, and decrementing it if the function returned NULL. +the call, and decrementing it if the function returned NULL. See L for more information on how to use this function on tied hashes. @@ -889,7 +922,7 @@ stored within the hash (as in the case of tied hashes). Otherwise the contents of the return value can be accessed using the C macros described here. Note that the caller is responsible for suitably incrementing the reference count of C before the call, and -decrementing it if the function returned NULL. +decrementing it if the function returned NULL. See L for more information on how to use this function on tied hashes. @@ -1168,7 +1201,7 @@ Found in file sv.c Creates a new SV. A non-zero C parameter indicates the number of bytes of preallocated string space the SV should have. An extra byte for a tailing NUL is also reserved. (SvPOK is not set for the SV even if string -space is allocated.) The reference count for the new SV is set to 1. +space is allocated.) The reference count for the new SV is set to 1. C is an integer id between 0 and 1299 (used to identify leaks). SV* NEWSV(int id, STRLEN len) @@ -1220,7 +1253,7 @@ Found in file sv.c =item newSVpvn Creates a new SV and copies a string into it. The reference count for the -SV is set to 1. Note that if C is zero, Perl will create a zero length +SV is set to 1. Note that if C is zero, Perl will create a zero length string. You are responsible for ensuring that the source string is at least C bytes long. @@ -1229,6 +1262,19 @@ C bytes long. =for hackers Found in file sv.c +=item newSVpvn_share + +Creates a new SV and populates it with a string from +the string table. Turns on READONLY and FAKE. +The idea here is that as string table is used for shared hash +keys these strings will have SvPVX == HeKEY and hash lookup +will avoid string compare. + + SV* newSVpvn_share(const char* s, STRLEN len, U32 hash) + +=for hackers +Found in file sv.c + =item newSVrv Creates a new SV for the RV, C, to point to. If C is not an RV then @@ -1568,7 +1614,7 @@ Found in file pp.h =item PUSHs -Push an SV onto the stack. The stack must have room for this element. +Push an SV onto the stack. The stack must have room for this element. Does not handle 'set' magic. See C. void PUSHs(SV* sv) @@ -1641,7 +1687,7 @@ Found in file XSUB.h The XSUB-writer's interface to the C C function. - void Safefree(void* src, void* dest, int nitems, type) + void Safefree(void* ptr) =for hackers Found in file handy.h @@ -1860,6 +1906,15 @@ the B setting. Use C. =for hackers Found in file sv.h +=item SvIOK_notUV + +Returns a boolean indicating whether the SV contains an signed integer. + + void SvIOK_notUV(SV* sv) + +=for hackers +Found in file sv.h + =item SvIOK_off Unsets the IV status of an SV. @@ -1887,6 +1942,24 @@ Tells an SV that it is an integer and disables all other OK bits. =for hackers Found in file sv.h +=item SvIOK_only_UV + +Tells and SV that it is an unsigned integer and disables all other OK bits. + + void SvIOK_only_UV(SV* sv) + +=for hackers +Found in file sv.h + +=item SvIOK_UV + +Returns a boolean indicating whether the SV contains an unsigned integer. + + void SvIOK_UV(SV* sv) + +=for hackers +Found in file sv.h + =item SvIV Coerces the given SV to an integer and returns it. @@ -1908,23 +1981,14 @@ Found in file sv.h =item SvLEN -Returns the size of the string buffer in the SV. See C. +Returns the size of the string buffer in the SV, not including any part +attributable to C. See C. STRLEN SvLEN(SV* sv) =for hackers Found in file sv.h -=item SvLOCK - -Aquires an internal mutex for a SV. Used to make sure multiple threads -don't stomp on the guts of an SV at the same time - - void SvLOCK(SV* sv) - -=for hackers -Found in file sv.h - =item SvNIOK Returns a boolean indicating whether the SV contains a number, integer or @@ -2087,6 +2151,16 @@ Tells an SV that it is a string and disables all other OK bits. =for hackers Found in file sv.h +=item SvPOK_only_UTF8 + +Tells an SV that it is a UTF8 string (do not use frivolously) +and disables all other OK bits. + + void SvPOK_only_UTF8(SV* sv) + +=for hackers +Found in file sv.h + =item SvPV Returns a pointer to the string in the SV, or a stringified form of the SV @@ -2347,21 +2421,39 @@ Type flag for blessed scalars. See C. =for hackers Found in file sv.h -=item SvUNLOCK +=item SvUPGRADE -Release the internal mutex for an SV. +Used to upgrade an SV to a more complex form. Uses C to +perform the upgrade if necessary. See C. - void SvUNLOCK(SV* sv) + void SvUPGRADE(SV* sv, svtype type) =for hackers Found in file sv.h -=item SvUPGRADE +=item SvUTF8 -Used to upgrade an SV to a more complex form. Uses C to -perform the upgrade if necessary. See C. +Returns a boolean indicating whether the SV contains UTF-8 encoded data. - void SvUPGRADE(SV* sv, svtype type) + void SvUTF8(SV* sv) + +=for hackers +Found in file sv.h + +=item SvUTF8_off + +Unsets the UTF8 status of an SV. + + void SvUTF8_off(SV *sv) + +=for hackers +Found in file sv.h + +=item SvUTF8_on + +Tells an SV that it is a string and encoded in UTF8. Do not use frivolously. + + void SvUTF8_on(SV *sv) =for hackers Found in file sv.h @@ -2486,7 +2578,7 @@ Found in file sv.c =item sv_chop -Efficient removal of characters from the beginning of the string buffer. +Efficient removal of characters from the beginning of the string buffer. SvPOK(sv) must be true and the C must be a pointer to somewhere inside the string buffer. The C becomes the first character of the adjusted string. @@ -2496,6 +2588,16 @@ string. =for hackers Found in file sv.c +=item sv_clear + +Clear an SV, making it empty. Does not free the memory used by the SV +itself. + + void sv_clear(SV* sv) + +=for hackers +Found in file sv.c + =item sv_cmp Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the @@ -2507,6 +2609,16 @@ C. =for hackers Found in file sv.c +=item sv_cmp_locale + +Compares the strings in two SVs in a locale-aware manner. See +L + + I32 sv_cmp_locale(SV* sv1, SV* sv2) + +=for hackers +Found in file sv.c + =item sv_dec Auto-decrement of the value in the SV. @@ -2537,6 +2649,25 @@ identical. =for hackers Found in file sv.c +=item sv_free + +Free the memory used by an SV. + + void sv_free(SV* sv) + +=for hackers +Found in file sv.c + +=item sv_gets + +Get a line from the filehandle and store it into the SV, optionally +appending to the currently-stored string. + + char* sv_gets(SV* sv, PerlIO* fp, I32 append) + +=for hackers +Found in file sv.c + =item sv_grow Expands the character buffer in the SV. This will use C and will @@ -2598,6 +2729,16 @@ Returns the length of the string in the SV. See also C. =for hackers Found in file sv.c +=item sv_len_utf8 + +Returns the number of characters in the string in an SV, counting wide +UTF8 bytes as a single character. + + STRLEN sv_len_utf8(SV* sv) + +=for hackers +Found in file sv.c + =item sv_magic Adds magic to an SV. @@ -2626,6 +2767,52 @@ Creates a new SV which is mortal. The reference count of the SV is set to 1. =for hackers Found in file sv.c +=item sv_pvn_force + +Get a sensible string out of the SV somehow. + + char* sv_pvn_force(SV* sv, STRLEN* lp) + +=for hackers +Found in file sv.c + +=item sv_pvutf8n_force + +Get a sensible UTF8-encoded string out of the SV somehow. See +L. + + char* sv_pvutf8n_force(SV* sv, STRLEN* lp) + +=for hackers +Found in file sv.c + +=item sv_reftype + +Returns a string describing what the SV is a reference to. + + char* sv_reftype(SV* sv, int ob) + +=for hackers +Found in file sv.c + +=item sv_replace + +Make the first argument a copy of the second, then delete the original. + + void sv_replace(SV* sv, SV* nsv) + +=for hackers +Found in file sv.c + +=item sv_rvweaken + +Weaken a reference. + + SV* sv_rvweaken(SV *sv) + +=for hackers +Found in file sv.c + =item sv_setiv Copies an integer into the given SV. Does not handle 'set' magic. See @@ -2841,6 +3028,24 @@ Like C, but also handles 'set' magic. =for hackers Found in file sv.c +=item sv_true + +Returns true if the SV has a true value by Perl's rules. + + I32 sv_true(SV *sv) + +=for hackers +Found in file sv.c + +=item sv_unmagic + +Removes magic from an SV. + + int sv_unmagic(SV* sv, int type) + +=for hackers +Found in file sv.c + =item sv_unref Unsets the RV status of the SV, and decrements the reference count of @@ -2865,7 +3070,7 @@ Found in file sv.c =item sv_usepvn Tells an SV to use C to find its string value. Normally the string is -stored inside the SV but sv_usepvn allows the SV to use an outside string. +stored inside the SV but sv_usepvn allows the SV to use an outside string. The C should point to memory that was allocated by C. The string length, C, must be supplied. This function will realloc the memory pointed to by C, so that pointer should not be freed or used by @@ -2886,6 +3091,43 @@ Like C, but also handles 'set' magic. =for hackers Found in file sv.c +=item sv_utf8_downgrade + +Attempt to convert the PV of an SV from UTF8-encoded to byte encoding. +This may not be possible if the PV contains non-byte encoding characters; +if this is the case, either returns false or, if C is not +true, croaks. + +NOTE: this function is experimental and may change or be +removed without notice. + + bool sv_utf8_downgrade(SV *sv, bool fail_ok) + +=for hackers +Found in file sv.c + +=item sv_utf8_encode + +Convert the PV of an SV to UTF8-encoded, but then turn off the C +flag so that it looks like bytes again. Nothing calls this. + +NOTE: this function is experimental and may change or be +removed without notice. + + void sv_utf8_encode(SV *sv) + +=for hackers +Found in file sv.c + +=item sv_utf8_upgrade + +Convert the PV of an SV to its UTF8-encoded form. + + void sv_utf8_upgrade(SV *sv) + +=for hackers +Found in file sv.c + =item sv_vcatpvfn Processes its arguments like C and appends the formatted output @@ -2938,12 +3180,57 @@ Converts the specified character to uppercase. =for hackers Found in file handy.h +=item U8 *s + +Returns true if first C bytes of the given string form valid a UTF8 +string, false otherwise. + + is_utf8_string U8 *s(STRLEN len) + +=for hackers +Found in file utf8.c + =item utf8_to_bytes -Converts a string C of length C from UTF8 into ASCII encoding. -Unlike C, this over-writes the original string. +Converts a string C of length C from UTF8 into byte encoding. +Unlike C, this over-writes the original string, and +updates len to contain the new length. +Returns zero on failure, setting C to -1. + + U8 * utf8_to_bytes(U8 *s, STRLEN *len) + +=for hackers +Found in file utf8.c + +=item utf8_to_uv + +Returns the character value of the first character in the string C +which is assumed to be in UTF8 encoding; C will be set to the +length, in bytes, of that character, and the pointer C will be +advanced to the end of the character. + +If C does not point to a well-formed UTF8 character, an optional UTF8 +warning is produced. + + U8* s utf8_to_uv(I32 *retlen) + +=for hackers +Found in file utf8.c + +=item utf8_to_uv_chk + +Returns the character value of the first character in the string C +which is assumed to be in UTF8 encoding; C will be set to the +length, in bytes, of that character, and the pointer C will be +advanced to the end of the character. + +If C does not point to a well-formed UTF8 character, the behaviour +is dependent on the value of C: if this is true, it is +assumed that the caller will raise a warning, and this function will +set C to C<-1> and return. If C is not true, an optional UTF8 +warning is produced. - U8 * utf8_to_bytes(U8 *s, STRLEN len) + U8* s utf8_to_uv_chk(I32 *retlen, I32 checking) =for hackers Found in file utf8.c @@ -3002,7 +3289,7 @@ Found in file pp.h =item XPUSHu -Push an unsigned integer onto the stack, extending the stack if necessary. +Push an unsigned integer onto the stack, extending the stack if necessary. See C. void XPUSHu(UV uv)