=over 8
+=item croak_xs_usage
+X<croak_xs_usage>
+
+A specialised variant of C<croak()> for emitting the usage message for xsubs
+
+ croak_xs_usage(cv, "eee_yow");
+
+works out the package name and subroutine name from C<cv>, and then calls
+C<croak()>. Hence if C<cv> is C<&ouch::awk>, it would call C<croak> as:
+
+ Perl_croak(aTHX_ "Usage %s::%s(%s)", "ouch" "awk", "eee_yow");
+
+ void croak_xs_usage(const CV *const cv, const char *const params)
+
+=for hackers
+Found in file universal.c
+
=item get_sv
X<get_sv>
Creates an RV wrapper for an SV. The reference count for the original
SV is B<not> incremented.
- SV* newRV_noinc(SV* sv)
+ SV* newRV_noinc(SV *const sv)
=for hackers
Found in file sv.c
L<perlhack/PERL_MEM_LOG>). The older API is still there for use in XS
modules supporting older perls.
- SV* newSV(STRLEN len)
+ SV* newSV(const STRLEN len)
=for hackers
Found in file sv.c
point to the shared string table where possible. Returns a new (undefined)
SV if the hek is NULL.
- SV* newSVhek(const HEK *hek)
+ SV* newSVhek(const HEK *const hek)
=for hackers
Found in file sv.c
Creates a new SV and copies an integer into it. The reference count for the
SV is set to 1.
- SV* newSViv(IV i)
+ SV* newSViv(const IV i)
=for hackers
Found in file sv.c
Creates a new SV and copies a floating point value into it.
The reference count for the SV is set to 1.
- SV* newSVnv(NV n)
+ SV* newSVnv(const NV n)
=for hackers
Found in file sv.c
SV is set to 1. If C<len> is zero, Perl will compute the length using
strlen(). For efficiency, consider using C<newSVpvn> instead.
- SV* newSVpv(const char* s, STRLEN len)
+ SV* newSVpv(const char *const s, const STRLEN len)
=for hackers
Found in file sv.c
Creates a new SV and initializes it with the string formatted like
C<sprintf>.
- SV* newSVpvf(const char* pat, ...)
+ SV* newSVpvf(const char *const pat, ...)
=for hackers
Found in file sv.c
string. You are responsible for ensuring that the source string is at least
C<len> bytes long. If the C<s> argument is NULL the new SV will be undefined.
- SV* newSVpvn(const char* s, STRLEN len)
+ SV* newSVpvn(const char *const s, const STRLEN len)
=for hackers
Found in file sv.c
#define newSVpvn_utf8(s, len, u) \
newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0)
- SV* newSVpvn_flags(const char* s, STRLEN len, U32 flags)
+ SV* newSVpvn_flags(const char *const s, const STRLEN len, const U32 flags)
=for hackers
Found in file sv.c
be blessed in the specified package. The new SV is returned and its
reference count is 1.
- SV* newSVrv(SV* rv, const char* classname)
+ SV* newSVrv(SV *const rv, const char *const classname)
=for hackers
Found in file sv.c
Creates a new SV which is an exact duplicate of the original SV.
(Uses C<sv_setsv>).
- SV* newSVsv(SV* old)
+ SV* newSVsv(SV *const old)
=for hackers
Found in file sv.c
Creates a new SV and copies an unsigned integer into it.
The reference count for the SV is set to 1.
- SV* newSVuv(UV u)
+ SV* newSVuv(const UV u)
=for hackers
Found in file sv.c
possible to set C<*st> and C<*gvp> to the stash and GV associated with it.
The flags in C<lref> are passed to sv_fetchsv.
- CV* sv_2cv(SV* sv, HV** st, GV** gvp, I32 lref)
+ CV* sv_2cv(SV* sv, HV **const st, GV **const gvp, const I32 lref)
=for hackers
Found in file sv.c
GV; or the recursive result if we're an RV; or the IO slot of the symbol
named after the PV if we're a string.
- IO* sv_2io(SV* sv)
+ IO* sv_2io(SV *const sv)
=for hackers
Found in file sv.c
string buffer can be "stolen" if this SV is copied. See also C<sv_newmortal>
and C<sv_mortalcopy>.
- SV* sv_2mortal(SV* sv)
+ SV* sv_2mortal(SV *const sv)
=for hackers
Found in file sv.c
must be designated by its stash (see C<gv_stashpv()>). The reference count
of the SV is unaffected.
- SV* sv_bless(SV* sv, HV* stash)
+ SV* sv_bless(SV *const sv, HV *const stash)
=for hackers
Found in file sv.c
If the SV has the UTF-8 status set, then the bytes appended should be
valid UTF-8. Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>.
- void sv_catpv(SV* sv, const char* ptr)
+ void sv_catpv(SV *const sv, const char* ptr)
=for hackers
Found in file sv.c
C<sv_catpvf_mg>. If the original SV was UTF-8, the pattern should be
valid UTF-8; if the original SV was bytes, the pattern should be too.
- void sv_catpvf(SV* sv, const char* pat, ...)
+ void sv_catpvf(SV *const sv, const char *const pat, ...)
=for hackers
Found in file sv.c
Like C<sv_catpvf>, but also handles 'set' magic.
- void sv_catpvf_mg(SV *sv, const char* pat, ...)
+ void sv_catpvf_mg(SV *const sv, const char *const pat, ...)
=for hackers
Found in file sv.c
appropriate, else not. C<sv_catpvn> and C<sv_catpvn_nomg> are implemented
in terms of this function.
- void sv_catpvn_flags(SV *dstr, const char *sstr, STRLEN len, I32 flags)
+ void sv_catpvn_flags(SV *const dstr, const char *sstr, const STRLEN len, const I32 flags)
=for hackers
Found in file sv.c
Like C<sv_catpv>, but also handles 'set' magic.
- void sv_catpv_mg(SV *sv, const char *ptr)
+ void sv_catpv_mg(SV *const sv, const char *const ptr)
=for hackers
Found in file sv.c
bit set, will C<mg_get> on the SVs if appropriate, else not. C<sv_catsv>
and C<sv_catsv_nomg> are implemented in terms of this function.
- void sv_catsv_flags(SV* dsv, SV* ssv, I32 flags)
+ void sv_catsv_flags(SV *const dsv, SV *const ssv, const I32 flags)
=for hackers
Found in file sv.c
Beware: after this function returns, C<ptr> and SvPVX_const(sv) may no longer
refer to the same chunk of data.
- void sv_chop(SV* sv, const char* ptr)
+ void sv_chop(SV *const sv, const char *const ptr)
=for hackers
Found in file sv.c
you'll want to call C<sv_free()> (or its macro wrapper C<SvREFCNT_dec>)
instead.
- void sv_clear(SV* sv)
+ void sv_clear(SV *const sv)
=for hackers
Found in file sv.c
C<sv2>. Is UTF-8 and 'use bytes' aware, handles get magic, and will
coerce its args to strings if necessary. See also C<sv_cmp_locale>.
- I32 sv_cmp(SV* sv1, SV* sv2)
+ I32 sv_cmp(SV *const sv1, SV *const sv2)
=for hackers
Found in file sv.c
'use bytes' aware, handles get magic, and will coerce its args to strings
if necessary. See also C<sv_cmp>.
- I32 sv_cmp_locale(SV* sv1, SV* sv2)
+ I32 sv_cmp_locale(SV *const sv1, SV *const sv2)
=for hackers
Found in file sv.c
memory comparison can be used to compare the data according to the locale
settings.
- char* sv_collxfrm(SV* sv, STRLEN* nxp)
+ char* sv_collxfrm(SV *const sv, STRLEN *const nxp)
=for hackers
Found in file sv.c
Auto-decrement of the value in the SV, doing string to numeric conversion
if necessary. Handles 'get' magic.
- void sv_dec(SV* sv)
+ void sv_dec(SV *const sv)
=for hackers
Found in file sv.c
C<sv_unref_flags()> when unrefing. C<sv_force_normal> calls this function
with flags set to 0.
- void sv_force_normal_flags(SV *sv, U32 flags)
+ void sv_force_normal_flags(SV *const sv, const U32 flags)
=for hackers
Found in file sv.c
the body; finally, deallocate the SV's head itself.
Normally called via a wrapper macro C<SvREFCNT_dec>.
- void sv_free(SV* sv)
+ void sv_free(SV *const sv)
=for hackers
Found in file sv.c
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)
+ char* sv_gets(SV *const sv, PerlIO *const fp, I32 append)
=for hackers
Found in file sv.c
Auto-increment of the value in the SV, doing string to numeric conversion
if necessary. Handles 'get' magic.
- void sv_inc(SV* sv)
+ void sv_inc(SV *const sv)
=for hackers
Found in file sv.c
X<sv_insert>
Inserts a string at the specified offset/length within the SV. Similar to
-the Perl substr() function.
+the Perl substr() function. Handles get magic.
+
+ void sv_insert(SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen)
+
+=for hackers
+Found in file sv.c
+
+=item sv_insert_flags
+X<sv_insert_flags>
+
+Same as C<sv_insert>, but the extra C<flags> are passed the C<SvPV_force_flags> that applies to C<bigstr>.
- void sv_insert(SV *bigstr, STRLEN offset, STRLEN len, const char *little, STRLEN littlelen)
+ void sv_insert_flags(SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen, const U32 flags)
=for hackers
Found in file sv.c
class. This does not check for subtypes; use C<sv_derived_from> to verify
an inheritance relationship.
- int sv_isa(SV* sv, const char* name)
+ int sv_isa(SV* sv, const char *const name)
=for hackers
Found in file sv.c
Returns the length of the string in the SV. Handles magic and type
coercion. See also C<SvCUR>, which gives raw access to the xpv_cur slot.
- STRLEN sv_len(SV* sv)
+ STRLEN sv_len(SV *const sv)
=for hackers
Found in file sv.c
Returns the number of characters in the string in an SV, counting wide
UTF-8 bytes as a single character. Handles magic and type coercion.
- STRLEN sv_len_utf8(SV* sv)
+ STRLEN sv_len_utf8(SV *const sv)
=for hackers
Found in file sv.c
You need to use C<sv_magicext> to add magic to SvREADONLY SVs and also
to add more than one instance of the same 'how'.
- void sv_magic(SV* sv, SV* obj, int how, const char* name, I32 namlen)
+ void sv_magic(SV *const sv, SV *const obj, const int how, const char *const name, const I32 namlen)
=for hackers
Found in file sv.c
(This is now used as a subroutine by C<sv_magic>.)
- MAGIC * sv_magicext(SV* sv, SV* obj, int how, const MGVTBL *vtbl, const char* name, I32 namlen)
+ MAGIC * sv_magicext(SV *const sv, SV *const obj, const int how, const MGVTBL *const vtbl, const char *const name, const I32 namlen)
=for hackers
Found in file sv.c
explicit call to FREETMPS, or by an implicit call at places such as
statement boundaries. See also C<sv_newmortal> and C<sv_2mortal>.
- SV* sv_mortalcopy(SV* oldsv)
+ SV* sv_mortalcopy(SV *const oldsv)
=for hackers
Found in file sv.c
Increment an SV's reference count. Use the C<SvREFCNT_inc()> wrapper
instead.
- SV* sv_newref(SV* sv)
+ SV* sv_newref(SV *const sv)
=for hackers
Found in file sv.c
start of the string, to a count of the equivalent number of UTF-8 chars.
Handles magic and type coercion.
- void sv_pos_b2u(SV* sv, I32* offsetp)
+ void sv_pos_b2u(SV *const sv, I32 *const offsetp)
=for hackers
Found in file sv.c
the offset, rather than from the start of the string. Handles magic and
type coercion.
- void sv_pos_u2b(SV* sv, I32* offsetp, I32* lenp)
+ void sv_pos_u2b(SV *const sv, I32 *const offsetp, I32 *const lenp)
=for hackers
Found in file sv.c
The backend for the C<SvPVbytex_force> macro. Always use the macro instead.
- char* sv_pvbyten_force(SV* sv, STRLEN* lp)
+ char* sv_pvbyten_force(SV *const sv, STRLEN *const lp)
=for hackers
Found in file sv.c
You normally want to use the various wrapper macros instead: see
C<SvPV_force> and C<SvPV_force_nomg>
- char* sv_pvn_force_flags(SV* sv, STRLEN* lp, I32 flags)
+ char* sv_pvn_force_flags(SV *const sv, STRLEN *const lp, const I32 flags)
=for hackers
Found in file sv.c
The backend for the C<SvPVutf8x_force> macro. Always use the macro instead.
- char* sv_pvutf8n_force(SV* sv, STRLEN* lp)
+ char* sv_pvutf8n_force(SV *const sv, STRLEN *const lp)
=for hackers
Found in file sv.c
Returns a string describing what the SV is a reference to.
- const char* sv_reftype(const SV* sv, int ob)
+ const char* sv_reftype(const SV *const sv, const int ob)
=for hackers
Found in file sv.c
Note that this is a rather specialist SV copying operation; most of the
time you'll want to use C<sv_setsv> or one of its many macro front-ends.
- void sv_replace(SV* sv, SV* nsv)
+ void sv_replace(SV *const sv, SV *const nsv)
=for hackers
Found in file sv.c
Underlying implementation for the C<reset> Perl function.
Note that the perl-level function is vaguely deprecated.
- void sv_reset(const char* s, HV* stash)
+ void sv_reset(const char* s, HV *const stash)
=for hackers
Found in file sv.c
associated with that magic. If the RV is magical, set magic will be
called after the RV is cleared.
- SV* sv_rvweaken(SV *sv)
+ SV* sv_rvweaken(SV *const sv)
=for hackers
Found in file sv.c
Copies a string into an SV. The string must be null-terminated. Does not
handle 'set' magic. See C<sv_setpv_mg>.
- void sv_setpv(SV* sv, const char* ptr)
+ void sv_setpv(SV *const sv, const char *const ptr)
=for hackers
Found in file sv.c
Works like C<sv_catpvf> but copies the text into the SV instead of
appending it. Does not handle 'set' magic. See C<sv_setpvf_mg>.
- void sv_setpvf(SV* sv, const char* pat, ...)
+ void sv_setpvf(SV *const sv, const char *const pat, ...)
=for hackers
Found in file sv.c
Like C<sv_setpvf>, but also handles 'set' magic.
- void sv_setpvf_mg(SV *sv, const char* pat, ...)
+ void sv_setpvf_mg(SV *const sv, const char *const pat, ...)
=for hackers
Found in file sv.c
Copies an integer into the given SV, also updating its string value.
Does not handle 'set' magic. See C<sv_setpviv_mg>.
- void sv_setpviv(SV* sv, IV num)
+ void sv_setpviv(SV *const sv, const IV num)
=for hackers
Found in file sv.c
Like C<sv_setpviv>, but also handles 'set' magic.
- void sv_setpviv_mg(SV *sv, IV iv)
+ void sv_setpviv_mg(SV *const sv, const IV iv)
=for hackers
Found in file sv.c
bytes to be copied. If the C<ptr> argument is NULL the SV will become
undefined. Does not handle 'set' magic. See C<sv_setpvn_mg>.
- void sv_setpvn(SV* sv, const char* ptr, STRLEN len)
+ void sv_setpvn(SV *const sv, const char *const ptr, const STRLEN len)
=for hackers
Found in file sv.c
Like C<sv_setpvn>, but also handles 'set' magic.
- void sv_setpvn_mg(SV *sv, const char *ptr, STRLEN len)
+ void sv_setpvn_mg(SV *const sv, const char *const ptr, const STRLEN len)
=for hackers
Found in file sv.c
Like C<sv_setpv>, but also handles 'set' magic.
- void sv_setpv_mg(SV *sv, const char *ptr)
+ void sv_setpv_mg(SV *const sv, const char *const ptr)
=for hackers
Found in file sv.c
blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV
will have a reference count of 1, and the RV will be returned.
- SV* sv_setref_iv(SV* rv, const char* classname, IV iv)
+ SV* sv_setref_iv(SV *const rv, const char *const classname, const IV iv)
=for hackers
Found in file sv.c
blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV
will have a reference count of 1, and the RV will be returned.
- SV* sv_setref_nv(SV* rv, const char* classname, NV nv)
+ SV* sv_setref_nv(SV *const rv, const char *const classname, const NV nv)
=for hackers
Found in file sv.c
Note that C<sv_setref_pvn> copies the string while this copies the pointer.
- SV* sv_setref_pv(SV* rv, const char* classname, void* pv)
+ SV* sv_setref_pv(SV *const rv, const char *const classname, void *const pv)
=for hackers
Found in file sv.c
Note that C<sv_setref_pv> copies the pointer while this copies the string.
- SV* sv_setref_pvn(SV* rv, const char* classname, const char* pv, STRLEN n)
+ SV* sv_setref_pvn(SV *const rv, const char *const classname, const char *const pv, const STRLEN n)
=for hackers
Found in file sv.c
blessing. Set C<classname> to C<NULL> to avoid the blessing. The new SV
will have a reference count of 1, and the RV will be returned.
- SV* sv_setref_uv(SV* rv, const char* classname, UV uv)
+ SV* sv_setref_uv(SV *const rv, const char *const classname, const UV uv)
=for hackers
Found in file sv.c
X<sv_tainted>
Test an SV for taintedness. Use C<SvTAINTED> instead.
- bool sv_tainted(SV* sv)
+ bool sv_tainted(SV *const sv)
=for hackers
Found in file sv.c
Use the C<SvTRUE> macro instead, which may call C<sv_true()> or may
instead use an in-line version.
- I32 sv_true(SV *sv)
+ I32 sv_true(SV *const sv)
=for hackers
Found in file sv.c
Removes all magic of type C<type> from an SV.
- int sv_unmagic(SV* sv, int type)
+ int sv_unmagic(SV *const sv, const int type)
=for hackers
Found in file sv.c
different from one or the reference being a readonly SV).
See C<SvROK_off>.
- void sv_unref_flags(SV *ref, U32 flags)
+ void sv_unref_flags(SV *const ref, const U32 flags)
=for hackers
Found in file sv.c
X<sv_untaint>
Untaint an SV. Use C<SvTAINTED_off> instead.
- void sv_untaint(SV* sv)
+ void sv_untaint(SV *const sv)
=for hackers
Found in file sv.c
will be skipped. (i.e. the buffer is actually at least 1 byte longer than
C<len>, and already meets the requirements for storing in C<SvPVX>)
- void sv_usepvn_flags(SV* sv, char* ptr, STRLEN len, U32 flags)
+ void sv_usepvn_flags(SV *const sv, char* ptr, const STRLEN len, const U32 flags)
=for hackers
Found in file sv.c
Usually used via its frontend C<sv_catpvf>.
- void sv_vcatpvf(SV* sv, const char* pat, va_list* args)
+ void sv_vcatpvf(SV *const sv, const char *const pat, va_list *const args)
=for hackers
Found in file sv.c
Usually used via one of its frontends C<sv_vcatpvf> and C<sv_vcatpvf_mg>.
- void sv_vcatpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
+ void sv_vcatpvfn(SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const I32 svmax, bool *const maybe_tainted)
=for hackers
Found in file sv.c
Usually used via its frontend C<sv_catpvf_mg>.
- void sv_vcatpvf_mg(SV* sv, const char* pat, va_list* args)
+ void sv_vcatpvf_mg(SV *const sv, const char *const pat, va_list *const args)
=for hackers
Found in file sv.c
Usually used via its frontend C<sv_setpvf>.
- void sv_vsetpvf(SV* sv, const char* pat, va_list* args)
+ void sv_vsetpvf(SV *const sv, const char *const pat, va_list *const args)
=for hackers
Found in file sv.c
Usually used via one of its frontends C<sv_vsetpvf> and C<sv_vsetpvf_mg>.
- void sv_vsetpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
+ void sv_vsetpvfn(SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const I32 svmax, bool *const maybe_tainted)
=for hackers
Found in file sv.c
Usually used via its frontend C<sv_setpvf_mg>.
- void sv_vsetpvf_mg(SV* sv, const char* pat, va_list* args)
+ void sv_vsetpvf_mg(SV *const sv, const char *const pat, va_list *const args)
=for hackers
Found in file sv.c