This is a listing of functions, macros, flags, and variables that may be
useful to extension writers or that may be found while reading other
extensions.
+The sort order of the listing is case insensitive, with any
+occurrences of '_' ignored for the the purpose of sorting.
=over 8
-=item AvFILL
-
-Same as C<av_len>.
-
=item av_clear
Clears an array, making it empty. Does not free the memory used by the
SV** av_fetch (AV* ar, I32 key, I32 lval)
+=item AvFILL
+
+Same as C<av_len>.
+
=item av_len
Returns the highest index in the array. Returns -1 if the array is empty.
source, C<d> is the destination, C<n> is the number of items, and C<t> is
the type. May fail on overlapping copies. See also C<Move>.
- (void) Copy( s, d, n, t )
+ void Copy( s, d, n, t )
=item croak
Returns the stash of the CV.
- HV * CvSTASH( SV* sv )
+ HV* CvSTASH( SV* sv )
=item DBsingle
EXTEND( sp, int x )
+=item fbm_compile
+
+Analyses the string in order to make fast searches on it using fbm_instr() --
+the Boyer-Moore algorithm.
+
+ void fbm_compile(SV* sv)
+
+=item fbm_instr
+
+Returns the location of the SV in the string delimited by C<str> and
+C<strend>. It returns C<Nullch> if the string can't be found. The
+C<sv> does not have to be fbm_compiled, but the search will not be as
+fast then.
+
+ char* fbm_instr(char *str, char *strend, SV *sv)
+
=item FREETMPS
Closing bracket for temporaries on a callback. See C<SAVETMPS> and
Used to indicate scalar context. See C<GIMME_V>, C<GIMME>, and L<perlcall>.
-=item G_VOID
-
-Used to indicate void context. See C<GIMME_V> and L<perlcall>.
-
=item gv_fetchmeth
Returns the glob with the given C<name> and a defined subroutine or
GV* gv_fetchmethod (HV* stash, char* name)
GV* gv_fetchmethod_autoload (HV* stash, char* name, I32 autoload)
+=item G_VOID
+
+Used to indicate void context. See C<GIMME_V> and L<perlcall>.
+
=item gv_stashpv
Returns a pointer to the stash for a specified package. If C<create> is set
=item HeHASH
-Returns the computed hash (type C<U32>) stored in the hash entry.
+Returns the computed hash stored in the hash entry.
- HeHASH(HE* he)
+ U32 HeHASH(HE* he)
=item HeKEY
C<HeKLEN()>. Can be assigned to. The C<HePV()> or C<HeSVKEY()> macros
are usually preferable for finding the value of a key.
- HeKEY(HE* he)
+ char* HeKEY(HE* he)
=item HeKLEN
Can be assigned to. The C<HePV()> macro is usually preferable for finding
key lengths.
- HeKLEN(HE* he)
+ int HeKLEN(HE* he)
=item HePV
This is very similar to the C<SvPV()> macro described elsewhere in
this document.
- HePV(HE* he, STRLEN len)
+ char* HePV(HE* he, STRLEN len)
=item HeSVKEY
Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one
operation.
- SV * hv_iternextsv (HV* hv, char** key, I32* retlen)
+ SV* hv_iternextsv (HV* hv, char** key, I32* retlen)
=item hv_iterval
Returns the package name of a stash. See C<SvSTASH>, C<CvSTASH>.
- char *HvNAME (HV* stash)
+ char* HvNAME (HV* stash)
=item hv_store
Returns a boolean indicating whether the C C<char> is an ascii alphanumeric
character or digit.
- int isALNUM (char c)
+ int isALNUM (char c)
=item isALPHA
Returns a boolean indicating whether the C C<char> is an ascii alphabetic
character.
- int isALPHA (char c)
+ int isALPHA (char c)
=item isDIGIT
Returns a boolean indicating whether the C C<char> is an ascii digit.
- int isDIGIT (char c)
+ int isDIGIT (char c)
=item isLOWER
Returns a boolean indicating whether the C C<char> is a lowercase character.
- int isLOWER (char c)
+ int isLOWER (char c)
=item isSPACE
Returns a boolean indicating whether the C C<char> is whitespace.
- int isSPACE (char c)
+ int isSPACE (char c)
=item isUPPER
Returns a boolean indicating whether the C C<char> is an uppercase character.
- int isUPPER (char c)
+ int isUPPER (char c)
=item items
LEAVE;
+=item looks_like_number
+
+Test if an the content of an SV looks like a number (or is a number).
+
+ int looks_like_number(SV*)
+
+
=item MARK
Stack marker variable for the XSUB. See C<dMARK>.
source, C<d> is the destination, C<n> is the number of items, and C<t> is
the type. Can do overlapping moves. See also C<Copy>.
- (void) Move( s, d, n, t )
+ void Move( s, d, n, t )
=item na
The XSUB-writer's interface to the C C<malloc> function.
- void * New( x, void *ptr, int size, type )
-
-=item Newc
-
-The XSUB-writer's interface to the C C<malloc> function, with cast.
-
- void * Newc( x, void *ptr, int size, type, cast )
-
-=item Newz
-
-The XSUB-writer's interface to the C C<malloc> function. The allocated
-memory is zeroed with C<memzero>.
-
- void * Newz( x, void *ptr, int size, type )
+ void* New( x, void *ptr, int size, type )
=item newAV
AV* newAV (void)
+=item Newc
+
+The XSUB-writer's interface to the C C<malloc> function, with cast.
+
+ void* Newc( x, void *ptr, int size, type, cast )
+
=item newHV
Creates a new HV. The reference count is set to 1.
=item NEWSV
-Creates a new SV. The C<len> parameter indicates the number of bytes of
-preallocated string space the SV should have. The reference count for the
-new SV is set to 1. C<id> is an integer id between 0 and 1299 (used to
-identify leaks).
+Creates a new SV. A non-zero C<len> 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. C<id> is an integer id between 0 and 1299 (used to identify
+leaks).
SV* NEWSV (int id, STRLEN len)
SV* newSVpv (char* s, STRLEN len)
+=item newSVpvf
+
+Creates a new SV an initialize it with the string formatted like
+C<sprintf>.
+
+ SV* newSVpvf(const char* pat, ...);
+
=item newSVpvn
Creates a new SV and copies a string into it. The reference count for the
Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to
the subs.
+=item Newz
+
+The XSUB-writer's interface to the C C<malloc> function. The allocated
+memory is zeroed with C<memzero>.
+
+ void* Newz( x, void *ptr, int size, type )
+
=item Nullav
Null AV pointer.
Pops an integer off the stack.
- int POPi()
+ int POPi()
=item POPl
Pops a long off the stack.
- long POPl()
+ long POPl()
=item POPp
Pops a string off the stack.
- char * POPp()
+ char* POPp()
=item POPn
Pops a double off the stack.
- double POPn()
+ double POPn()
=item POPs
Pops an SV off the stack.
- SV* POPs()
+ SV* POPs()
=item PUSHMARK
Push an integer onto the stack. The stack must have room for this element.
Handles 'set' magic. See C<XPUSHi>.
- PUSHi(int d)
+ void PUSHi(int d)
=item PUSHn
Push a double onto the stack. The stack must have room for this element.
Handles 'set' magic. See C<XPUSHn>.
- PUSHn(double d)
+ void PUSHn(double d)
=item PUSHp
The C<len> indicates the length of the string. Handles 'set' magic. See
C<XPUSHp>.
- PUSHp(char *c, int len )
+ void PUSHp(char *c, int len )
=item PUSHs
Push an SV onto the stack. The stack must have room for this element. Does
not handle 'set' magic. See C<XPUSHs>.
- PUSHs(sv)
+ void PUSHs(sv)
+
+=item PUSHu
+
+Push an unsigned integer onto the stack. The stack must have room for
+this element. See C<XPUSHu>.
+
+ void PUSHu(unsigned int d)
+
=item PUTBACK
The XSUB-writer's interface to the C C<realloc> function.
- void * Renew( void *ptr, int size, type )
+ void* Renew( void *ptr, int size, type )
=item Renewc
The XSUB-writer's interface to the C C<realloc> function, with cast.
- void * Renewc( void *ptr, int size, type, cast )
+ void* Renewc( void *ptr, int size, type, cast )
=item RETVAL
Used to access elements on the XSUB's stack.
- SV* ST(int x)
+ SV* ST(int x)
=item strEQ
Test two strings to see if they are equal. Returns true or false.
- int strEQ( char *s1, char *s2 )
+ int strEQ( char *s1, char *s2 )
=item strGE
Test two strings to see if the first, C<s1>, is greater than or equal to the
second, C<s2>. Returns true or false.
- int strGE( char *s1, char *s2 )
+ int strGE( char *s1, char *s2 )
=item strGT
Test two strings to see if the first, C<s1>, is greater than the second,
C<s2>. Returns true or false.
- int strGT( char *s1, char *s2 )
+ int strGT( char *s1, char *s2 )
=item strLE
Test two strings to see if the first, C<s1>, is less than or equal to the
second, C<s2>. Returns true or false.
- int strLE( char *s1, char *s2 )
+ int strLE( char *s1, char *s2 )
=item strLT
Test two strings to see if the first, C<s1>, is less than the second,
C<s2>. Returns true or false.
- int strLT( char *s1, char *s2 )
+ int strLT( char *s1, char *s2 )
=item strNE
Test two strings to see if they are different. Returns true or false.
- int strNE( char *s1, char *s2 )
+ int strNE( char *s1, char *s2 )
=item strnEQ
Test two strings to see if they are equal. The C<len> parameter indicates
the number of bytes to compare. Returns true or false.
- int strnEQ( char *s1, char *s2 )
+ int strnEQ( char *s1, char *s2 )
=item strnNE
Test two strings to see if they are different. The C<len> parameter
indicates the number of bytes to compare. Returns true or false.
- int strnNE( char *s1, char *s2, int len )
+ int strnNE( char *s1, char *s2, int len )
=item sv_2mortal
void sv_catsv_mg (SV* dsv, SV* ssv)
+=item sv_chop
+
+Efficient removal of characters from the beginning of the string
+buffer. SvPOK(sv) must be true and the C<ptr> must be a pointer to
+somewhere inside the string buffer. The C<ptr> becomes the first
+character of the adjusted string.
+
+ void sv_chop(SV* sv, char *ptr)
+
+
=item sv_cmp
Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the
Returns the length of the string which is in the SV. See C<SvLEN>.
- int SvCUR (SV* sv)
+ int SvCUR (SV* sv)
=item SvCUR_set
Set the length of the string which is in the SV. See C<SvCUR>.
- SvCUR_set (SV* sv, int val )
+ void SvCUR_set (SV* sv, int val )
=item sv_dec
void sv_dec (SV* sv)
+=item sv_derived_from
+
+Returns a boolean indicating whether the SV is a subclass of the
+specified class.
+
+ int sv_derived_from(SV* sv, char* class)
+
=item SvEND
Returns a pointer to the last character in the string which is in the SV.
See C<SvCUR>. Access the character as
- *SvEND(sv)
+ char* SvEND(sv)
=item sv_eq
=item SvGROW
-Expands the character buffer in the SV. Calls C<sv_grow> to perform the
-expansion if necessary. Returns a pointer to the character buffer.
+Expands the character buffer in the SV so that it has room for the
+indicated number of bytes (remember to reserve space for an extra
+trailing NUL character). Calls C<sv_grow> to perform the expansion if
+necessary. Returns a pointer to the character buffer.
- char * SvGROW( SV* sv, int len )
+ char* SvGROW( SV* sv, int len )
=item sv_grow
void sv_inc (SV* sv)
+=item sv_insert
+
+Inserts a string at the specified offset/length within the SV.
+Similar to the Perl substr() function.
+
+ void sv_insert(SV *sv, STRLEN offset, STRLEN len,
+ char *str, STRLEN strlen)
+
=item SvIOK
Returns a boolean indicating whether the SV contains an integer.
- int SvIOK (SV* SV)
+ int SvIOK (SV* SV)
=item SvIOK_off
Unsets the IV status of an SV.
- SvIOK_off (SV* sv)
+ void SvIOK_off (SV* sv)
=item SvIOK_on
Tells an SV that it is an integer.
- SvIOK_on (SV* sv)
+ void SvIOK_on (SV* sv)
=item SvIOK_only
Tells an SV that it is an integer and disables all other OK bits.
- SvIOK_on (SV* sv)
+ void SvIOK_only (SV* sv)
=item SvIOKp
Returns a boolean indicating whether the SV contains an integer. Checks the
B<private> setting. Use C<SvIOK>.
- int SvIOKp (SV* SV)
+ int SvIOKp (SV* SV)
=item sv_isa
int sv_isa (SV* sv, char* name)
-=item SvIV
-
-Returns the integer which is in the SV.
-
- int SvIV (SV* sv)
-
=item sv_isobject
Returns a boolean indicating whether the SV is an RV pointing to a blessed
int sv_isobject (SV* sv)
+=item SvIV
+
+Returns the integer which is in the SV.
+
+ int SvIV (SV* sv)
+
=item SvIVX
Returns the integer which is stored in the SV.
- int SvIVX (SV* sv)
+ int SvIVX (SV* sv)
=item SvLEN
Returns the size of the string buffer in the SV. See C<SvCUR>.
- int SvLEN (SV* sv)
+ int SvLEN (SV* sv)
=item sv_len
SV* sv_mortalcopy (SV* oldsv)
-=item SvOK
-
-Returns a boolean indicating whether the value is an SV.
-
- int SvOK (SV* sv)
-
=item sv_newmortal
Creates a new SV which is mortal. The reference count of the SV is set to 1.
SV* sv_newmortal (void)
-=item sv_no
-
-This is the C<false> SV. See C<sv_yes>. Always refer to this as C<&sv_no>.
-
=item SvNIOK
Returns a boolean indicating whether the SV contains a number, integer or
double.
- int SvNIOK (SV* SV)
+ int SvNIOK (SV* SV)
=item SvNIOK_off
Unsets the NV/IV status of an SV.
- SvNIOK_off (SV* sv)
+ void SvNIOK_off (SV* sv)
=item SvNIOKp
Returns a boolean indicating whether the SV contains a number, integer or
double. Checks the B<private> setting. Use C<SvNIOK>.
- int SvNIOKp (SV* SV)
+ int SvNIOKp (SV* SV)
+
+=item sv_no
+
+This is the C<false> SV. See C<sv_yes>. Always refer to this as C<&sv_no>.
=item SvNOK
Returns a boolean indicating whether the SV contains a double.
- int SvNOK (SV* SV)
+ int SvNOK (SV* SV)
=item SvNOK_off
Unsets the NV status of an SV.
- SvNOK_off (SV* sv)
+ void SvNOK_off (SV* sv)
=item SvNOK_on
Tells an SV that it is a double.
- SvNOK_on (SV* sv)
+ void SvNOK_on (SV* sv)
=item SvNOK_only
Tells an SV that it is a double and disables all other OK bits.
- SvNOK_on (SV* sv)
+ void SvNOK_only (SV* sv)
=item SvNOKp
Returns a boolean indicating whether the SV contains a double. Checks the
B<private> setting. Use C<SvNOK>.
- int SvNOKp (SV* SV)
+ int SvNOKp (SV* SV)
=item SvNV
Returns the double which is stored in the SV.
- double SvNV (SV* sv)
+ double SvNV (SV* sv)
=item SvNVX
Returns the double which is stored in the SV.
- double SvNVX (SV* sv)
+ double SvNVX (SV* sv)
+
+=item SvOK
+
+Returns a boolean indicating whether the value is an SV.
+
+ int SvOK (SV* sv)
+
+=item SvOOK
+
+Returns a boolean indicating whether the SvIVX is a valid offset value
+for the SvPVX. This hack is used internally to speed up removal of
+characters from the beginning of a SvPV. When SvOOK is true, then the
+start of the allocated string buffer is really (SvPVX - SvIVX).
+
+ int SvOOK(Sv* sv)
=item SvPOK
Returns a boolean indicating whether the SV contains a character string.
- int SvPOK (SV* SV)
+ int SvPOK (SV* SV)
=item SvPOK_off
Unsets the PV status of an SV.
- SvPOK_off (SV* sv)
+ void SvPOK_off (SV* sv)
=item SvPOK_on
Tells an SV that it is a string.
- SvPOK_on (SV* sv)
+ void SvPOK_on (SV* sv)
=item SvPOK_only
Tells an SV that it is a string and disables all other OK bits.
- SvPOK_on (SV* sv)
+ void SvPOK_only (SV* sv)
=item SvPOKp
Returns a boolean indicating whether the SV contains a character string.
Checks the B<private> setting. Use C<SvPOK>.
- int SvPOKp (SV* SV)
+ int SvPOKp (SV* SV)
=item SvPV
if the SV does not contain a string. If C<len> is C<na> then Perl will
handle the length on its own. Handles 'get' magic.
- char * SvPV (SV* sv, int len )
+ char* SvPV (SV* sv, int len )
+
+=item SvPV_force
+
+Like <SvPV> but will force the SV into becoming a string (SvPOK). You
+want force if you are going to update the SvPVX directly.
+
+ char* SvPV_force(SV* sv, int len)
+
=item SvPVX
Returns a pointer to the string in the SV. The SV must contain a string.
- char * SvPVX (SV* sv)
+ char* SvPVX (SV* sv)
=item SvREFCNT
Returns the value of the object's reference count.
- int SvREFCNT (SV* sv)
+ int SvREFCNT (SV* sv)
=item SvREFCNT_dec
Decrements the reference count of the given SV.
- void SvREFCNT_dec (SV* sv)
+ void SvREFCNT_dec (SV* sv)
=item SvREFCNT_inc
Increments the reference count of the given SV.
- void SvREFCNT_inc (SV* sv)
+ void SvREFCNT_inc (SV* sv)
=item SvROK
Tests if the SV is an RV.
- int SvROK (SV* sv)
+ int SvROK (SV* sv)
=item SvROK_off
Unsets the RV status of an SV.
- SvROK_off (SV* sv)
+ void SvROK_off (SV* sv)
=item SvROK_on
Tells an SV that it is an RV.
- SvROK_on (SV* sv)
+ void SvROK_on (SV* sv)
=item SvRV
void SvSETMAGIC( SV *sv )
-=item SvTAINT
-
-Taints an SV if tainting is enabled
-
- SvTAINT (SV* sv)
-
-=item SvTAINTED
-
-Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if not.
-
- SvTAINTED (SV* sv)
-
-=item SvTAINTED_off
-
-Untaints an SV. Be I<very> careful with this routine, as it short-circuits
-some of Perl's fundamental security features. XS module authors should
-not use this function unless they fully understand all the implications
-of unconditionally untainting the value. Untainting should be done in
-the standard perl fashion, via a carefully crafted regexp, rather than
-directly untainting variables.
-
- SvTAINTED_off (SV* sv)
-
-=item SvTAINTED_on
-
-Marks an SV as tainted.
-
- SvTAINTED_on (SV* sv)
-
=item sv_setiv
Copies an integer into the given SV. Does not handle 'set' magic.
Returns the stash of the SV.
- HV * SvSTASH (SV* sv)
+ HV* SvSTASH (SV* sv)
+
+=item SvTAINT
+
+Taints an SV if tainting is enabled
+
+ void SvTAINT (SV* sv)
+
+=item SvTAINTED
+
+Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if not.
+
+ int SvTAINTED (SV* sv)
+
+=item SvTAINTED_off
+
+Untaints an SV. Be I<very> careful with this routine, as it short-circuits
+some of Perl's fundamental security features. XS module authors should
+not use this function unless they fully understand all the implications
+of unconditionally untainting the value. Untainting should be done in
+the standard perl fashion, via a carefully crafted regexp, rather than
+directly untainting variables.
+
+ void SvTAINTED_off (SV* sv)
+
+=item SvTAINTED_on
+
+Marks an SV as tainted.
+
+ void SvTAINTED_on (SV* sv)
=item SVt_IV
Returns a boolean indicating whether Perl would evaluate the SV as true or
false, defined or undefined. Does not handle 'get' magic.
- int SvTRUE (SV* sv)
+ int SvTRUE (SV* sv)
=item SvTYPE
An enum of flags for Perl types. These are found in the file B<sv.h> in the
C<svtype> enum. Test these flags with the C<SvTYPE> macro.
-=item SvUPGRADE
-
-Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to perform
-the upgrade if necessary. See C<svtype>.
-
- bool SvUPGRADE (SV* sv, svtype mt)
-
-=item sv_upgrade
-
-Upgrade an SV to a more complex form. Use C<SvUPGRADE>. See C<svtype>.
-
=item sv_undef
This is the C<undef> SV. Always refer to this as C<&sv_undef>.
void sv_unref (SV* sv)
+=item SvUPGRADE
+
+Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to perform
+the upgrade if necessary. See C<svtype>.
+
+ bool SvUPGRADE (SV* sv, svtype mt)
+
+=item sv_upgrade
+
+Upgrade an SV to a more complex form. Use C<SvUPGRADE>. See C<svtype>.
+
=item sv_usepvn
Tells an SV to use C<ptr> to find its string value. Normally the string is
void sv_usepvn_mg (SV* sv, char* ptr, STRLEN len)
+=item SvUV
+
+Returns the unsigned integer which is in the SV.
+
+ UV SvUV(SV* sv)
+
+=item SvUVX
+
+Returns the unsigned integer which is stored in the SV.
+
+ UV SvUVX(SV* sv)
+
=item sv_yes
This is the C<true> SV. See C<sv_no>. Always refer to this as C<&sv_yes>.
Converts the specified character to lowercase.
- int toLOWER (char c)
+ int toLOWER (char c)
=item toUPPER
Converts the specified character to uppercase.
- int toUPPER (char c)
+ int toUPPER (char c)
=item warn
XPUSHs(sv)
+=item XPUSHu
+
+Push an unsigned integer onto the stack, extending the stack if
+necessary. See C<PUSHu>.
+
=item XS
Macro to declare an XSUB and its C parameter list. This is handled by
The XSUB-writer's interface to the C C<memzero> function. The C<d> is the
destination, C<n> is the number of items, and C<t> is the type.
- (void) Zero( d, n, t )
+ void Zero( d, n, t )
=back