X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=sv.h;h=a80989a7fa4226720355e830f26bcc02f5b41749;hb=1a060de3a347634ff5a2b7210da233861f09acae;hp=fabf7fd09d96d0167a90148b6032855651e8c13a;hpb=1cc8b4c566f7901a54e4b576f09608beb4c81f86;p=p5sagit%2Fp5-mst-13.2.git diff --git a/sv.h b/sv.h index fabf7fd..a80989a 100644 --- a/sv.h +++ b/sv.h @@ -13,7 +13,7 @@ /* =for apidoc AmU||svtype -An enum of flags for Perl types. These are found in the file B +An enum of flags for Perl types. These are found in the file B in the C enum. Test these flags with the C macro. =for apidoc AmU||SVt_PV @@ -338,7 +338,7 @@ struct xpvfm { HV * xcv_stash; OP * xcv_start; OP * xcv_root; - void (*xcv_xsub)(pTHXo_ CV*); + void (*xcv_xsub)(pTHX_ CV*); ANY xcv_xsubany; GV * xcv_gv; char * xcv_file; @@ -351,7 +351,7 @@ struct xpvfm { #endif /* USE_5005THREADS */ cv_flags_t xcv_flags; - I32 xfm_lines; + IV xfm_lines; }; struct xpvio { @@ -378,10 +378,10 @@ struct xpvio { DIR * xiou_dirp; /* for opendir, readdir, etc */ void * xiou_any; /* for alignment */ } xio_dirpu; - long xio_lines; /* $. */ - long xio_page; /* $% */ - long xio_page_len; /* $= */ - long xio_lines_left; /* $- */ + IV xio_lines; /* $. */ + IV xio_page; /* $% */ + IV xio_page_len; /* $= */ + IV xio_lines_left; /* $- */ char * xio_top_name; /* $^ */ GV * xio_top_gv; /* $^ */ char * xio_fmt_name; /* $~ */ @@ -454,7 +454,7 @@ Returns a boolean indicating whether the SV contains an unsigned integer. Returns a boolean indicating whether the SV contains an unsigned integer. =for apidoc Am|void|SvIOK_notUV|SV* sv -Returns a boolean indicating whether the SV contains an signed integer. +Returns a boolean indicating whether the SV contains a signed integer. =for apidoc Am|bool|SvNOK|SV* sv Returns a boolean indicating whether the SV contains a double. @@ -646,7 +646,7 @@ and leaves the UTF8 status as it was. #define SvAMAGIC_on(sv) (SvFLAGS(sv) |= SVf_AMAGIC) #define SvAMAGIC_off(sv) (SvFLAGS(sv) &= ~SVf_AMAGIC) -#define SvGAMAGIC(sv) (SvFLAGS(sv) & (SVs_GMG|SVf_AMAGIC)) +#define SvGAMAGIC(sv) (SvFLAGS(sv) & (SVs_GMG|SVf_AMAGIC)) /* #define Gv_AMG(stash) \ @@ -705,7 +705,7 @@ and leaves the UTF8 status as it was. #ifdef USE_ITHREADS /* The following uses the FAKE flag to show that a regex pointer is infact - it's own offset in the regexpad for ithreads */ + its own offset in the regexpad for ithreads */ #define SvREPADTMP(sv) (SvFLAGS(sv) & SVf_FAKE) #define SvREPADTMP_on(sv) (SvFLAGS(sv) |= SVf_FAKE) #define SvREPADTMP_off(sv) (SvFLAGS(sv) &= ~SVf_FAKE) @@ -855,7 +855,7 @@ version which guarantees to evaluate sv only once. =for apidoc Am|IV|SvIVx|SV* sv Coerces the given SV to an integer and returns it. Guarantees to evaluate -sv only once. Use the more efficent C otherwise. +sv only once. Use the more efficient C otherwise. =for apidoc Am|NV|SvNV|SV* sv Coerce the given SV to a double and return it. See C for a version @@ -863,7 +863,7 @@ which guarantees to evaluate sv only once. =for apidoc Am|NV|SvNVx|SV* sv Coerces the given SV to a double and returns it. Guarantees to evaluate -sv only once. Use the more efficent C otherwise. +sv only once. Use the more efficient C otherwise. =for apidoc Am|UV|SvUV|SV* sv Coerces the given SV to an unsigned integer and returns it. See C @@ -871,20 +871,20 @@ for a version which guarantees to evaluate sv only once. =for apidoc Am|UV|SvUVx|SV* sv Coerces the given SV to an unsigned integer and returns it. Guarantees to -evaluate sv only once. Use the more efficent C otherwise. +evaluate sv only once. Use the more efficient C otherwise. =for apidoc Am|bool|SvTRUE|SV* sv Returns a boolean indicating whether Perl would evaluate the SV as true or false, defined or undefined. Does not handle 'get' magic. =for apidoc Am|char*|SvPVutf8_force|SV* sv|STRLEN len -Like C, but converts sv to uft8 first if necessary. +Like C, but converts sv to utf8 first if necessary. =for apidoc Am|char*|SvPVutf8|SV* sv|STRLEN len -Like C, but converts sv to uft8 first if necessary. +Like C, but converts sv to utf8 first if necessary. -=for apidoc Am|char*|SvPVutf8_nolen|SV* sv|STRLEN len -Like C, but converts sv to uft8 first if necessary. +=for apidoc Am|char*|SvPVutf8_nolen|SV* sv +Like C, but converts sv to utf8 first if necessary. =for apidoc Am|char*|SvPVbyte_force|SV* sv|STRLEN len Like C, but converts sv to byte representation first if necessary. @@ -892,27 +892,27 @@ Like C, but converts sv to byte representation first if necessary. =for apidoc Am|char*|SvPVbyte|SV* sv|STRLEN len Like C, but converts sv to byte representation first if necessary. -=for apidoc Am|char*|SvPVbyte_nolen|SV* sv|STRLEN len +=for apidoc Am|char*|SvPVbyte_nolen|SV* sv Like C, but converts sv to byte representation first if necessary. =for apidoc Am|char*|SvPVutf8x_force|SV* sv|STRLEN len -Like C, but converts sv to uft8 first if necessary. -Guarantees to evalute sv only once; use the more efficient C +Like C, but converts sv to utf8 first if necessary. +Guarantees to evaluate sv only once; use the more efficient C otherwise. =for apidoc Am|char*|SvPVutf8x|SV* sv|STRLEN len -Like C, but converts sv to uft8 first if necessary. -Guarantees to evalute sv only once; use the more efficient C +Like C, but converts sv to utf8 first if necessary. +Guarantees to evaluate sv only once; use the more efficient C otherwise. =for apidoc Am|char*|SvPVbytex_force|SV* sv|STRLEN len Like C, but converts sv to byte representation first if necessary. -Guarantees to evalute sv only once; use the more efficient C +Guarantees to evaluate sv only once; use the more efficient C otherwise. =for apidoc Am|char*|SvPVbytex|SV* sv|STRLEN len Like C, but converts sv to byte representation first if necessary. -Guarantees to evalute sv only once; use the more efficient C +Guarantees to evaluate sv only once; use the more efficient C otherwise. @@ -922,6 +922,8 @@ otherwise. #define SvPV_force(sv, lp) sv_pvn_force(sv, &lp) #define SvPV(sv, lp) sv_pvn(sv, &lp) #define SvPV_nolen(sv) sv_pv(sv) +#define SvPV_nomg(sv, lp) sv_pvn_nomg(sv, &lp) +#define SvPV_force_flags(sv, lp, flags) sv_pvn_force_flags(sv, &lp, flags) #define SvPVutf8_force(sv, lp) sv_pvutf8n_force(sv, &lp) #define SvPVutf8(sv, lp) sv_pvutf8n(sv, &lp) @@ -949,6 +951,14 @@ otherwise. #define SvUV(sv) SvUVx(sv) #define SvTRUE(sv) SvTRUEx(sv) +/* flag values for sv_*_flags functions */ +#define SV_IMMEDIATE_UNREF 1 +#define SV_GMAGIC 2 + +#define sv_pvn_force_nomg(sv, lp) sv_pvn_force_flags(sv, lp, 0) +#define sv_utf8_upgrade_nomg(sv) sv_utf8_upgrade_flags(sv, 0) +#define sv_catpvn_nomg(dsv, sstr, slen) sv_catpvn_flags(dsv, sstr, slen, 0) + #ifndef CRIPPLED_CC /* redefine some things to more efficient inlined versions */ @@ -962,30 +972,15 @@ otherwise. #undef SvNV #define SvNV(sv) (SvNOK(sv) ? SvNVX(sv) : sv_2nv(sv)) -/* flag values for sv_*_flags functions */ -#define SV_IMMEDIATE_UNREF 1 -#define SV_GMAGIC 2 - -#define sv_setsv_macro(dsv, ssv) sv_setsv_flags(dsv, ssv, SV_GMAGIC) +#define sv_setsv(dsv, ssv) sv_setsv_flags(dsv, ssv, SV_GMAGIC) #define sv_setsv_nomg(dsv, ssv) sv_setsv_flags(dsv, ssv, 0) -#define sv_catsv_macro(dsv, ssv) sv_catsv_flags(dsv, ssv, SV_GMAGIC) +#define sv_catsv(dsv, ssv) sv_catsv_flags(dsv, ssv, SV_GMAGIC) #define sv_catsv_nomg(dsv, ssv) sv_catsv_flags(dsv, ssv, 0) -#define sv_catpvn_macro(dsv, sstr, slen) sv_catpvn_flags(dsv, sstr, slen, SV_GMAGIC) -#define sv_catpvn_nomg(dsv, sstr, slen) sv_catpvn_flags(dsv, sstr, slen, 0) -#define sv_2pv_macro(sv, lp) sv_2pv_flags(sv, lp, SV_GMAGIC) +#define sv_catpvn(dsv, sstr, slen) sv_catpvn_flags(dsv, sstr, slen, SV_GMAGIC) +#define sv_2pv(sv, lp) sv_2pv_flags(sv, lp, SV_GMAGIC) #define sv_2pv_nomg(sv, lp) sv_2pv_flags(sv, lp, 0) -#define sv_pvn_force_macro(sv, lp) sv_pvn_force_flags(sv, lp, SV_GMAGIC) -#define sv_pvn_force_nomg(sv, lp) sv_pvn_force_flags(sv, lp, 0) -#define sv_utf8_upgrade_macro(sv) sv_utf8_upgrade_flags(sv, SV_GMAGIC) -#define sv_utf8_upgrade_nomg(sv) sv_utf8_upgrade_flags(sv, 0) - -/* function style also available for bincompat */ -#define sv_setsv(dsv, ssv) sv_setsv_macro(dsv, ssv) -#define sv_catsv(dsv, ssv) sv_catsv_macro(dsv, ssv) -#define sv_catpvn(dsv, sstr, slen) sv_catpvn_macro(dsv, sstr, slen) -#define sv_2pv(sv, lp) sv_2pv_macro(sv, lp) -#define sv_pvn_force(sv, lp) sv_pvn_force_macro(sv, lp) -#define sv_utf8_upgrade(sv) sv_utf8_upgrade_macro(sv) +#define sv_pvn_force(sv, lp) sv_pvn_force_flags(sv, lp, SV_GMAGIC) +#define sv_utf8_upgrade(sv) sv_utf8_upgrade_flags(sv, SV_GMAGIC) #undef SvPV #define SvPV(sv, lp) SvPV_flags(sv, lp, SV_GMAGIC) @@ -1169,7 +1164,7 @@ Like C, but does any set magic required afterwards. =for apidoc Am|char *|SvGROW|SV* sv|STRLEN len 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 to perform the expansion if necessary. +NUL character). Calls C to perform the expansion if necessary. Returns a pointer to the character buffer. =cut @@ -1225,7 +1220,7 @@ Returns a pointer to the character buffer. #define CLONEf_KEEP_PTR_TABLE 2 #define CLONEf_CLONE_HOST 4 -typedef struct { +struct clone_params { AV* stashes; UV flags; -} clone_params; +};