X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=sv.h;h=4a4363befdbb99afc539740ed9649843dbb0b621;hb=ce29ac451034df067115e81c1d12f5f8c0114302;hp=e1281d28dce5119f35f452519dfaca2635cce6d4;hpb=8d6d96c1bf85fd984f18f84ea834be52b168c812;p=p5sagit%2Fp5-mst-13.2.git diff --git a/sv.h b/sv.h index e1281d2..4a4363b 100644 --- a/sv.h +++ b/sv.h @@ -193,7 +193,8 @@ perform the upgrade if necessary. See C. #define SVf_FAKE 0x00100000 /* glob or lexical is just a copy */ #define SVf_OOK 0x00200000 /* has valid offset value */ -#define SVf_BREAK 0x00400000 /* refcnt is artificially low */ +#define SVf_BREAK 0x00400000 /* refcnt is artificially low - used + * by SV's in final arena cleanup */ #define SVf_READONLY 0x00800000 /* may not be modified */ @@ -217,6 +218,7 @@ perform the upgrade if necessary. See C. /* SVpad_OUR may be set on SVt_PV{NV,MG,GV} types */ #define SVpad_OUR 0x80000000 /* pad name is "our" instead of "my" */ +#define SVpad_TYPED 0x40000000 /* Typed Lexical */ #define SVf_IVisUV 0x80000000 /* use XPVUV instead of XPVIV */ @@ -499,19 +501,19 @@ Unsets the RV status of an SV. Dereferences an RV to return the SV. =for apidoc Am|IV|SvIVX|SV* sv -Returns the integer which is stored in the SV, assuming SvIOK is -true. +Returns the raw value in the SV's IV slot, without checks or conversions. +Only use when you are sure SvIOK is true. See also C. =for apidoc Am|UV|SvUVX|SV* sv -Returns the unsigned integer which is stored in the SV, assuming SvIOK is -true. +Returns the raw value in the SV's UV slot, without checks or conversions. +Only use when you are sure SvIOK is true. See also C. =for apidoc Am|NV|SvNVX|SV* sv -Returns the double which is stored in the SV, assuming SvNOK is -true. +Returns the raw value in the SV's NV slot, without checks or conversions. +Only use when you are sure SvNOK is true. See also C. =for apidoc Am|char*|SvPVX|SV* sv -Returns a pointer to the string in the SV. The SV must contain a +Returns a pointer to the physical string in the SV. The SV must contain a string. =for apidoc Am|STRLEN|SvCUR|SV* sv @@ -594,7 +596,7 @@ Unsets the UTF8 status of an SV. =for apidoc Am|void|SvPOK_only_UTF8|SV* sv Tells an SV that it is a string and disables all other OK bits, and leaves the UTF8 status as it was. - + =cut */ @@ -823,27 +825,89 @@ Taints an SV if tainting is enabled Like but will force the SV into becoming a string (SvPOK). You want force if you are going to update the SvPVX directly. +=for apidoc Am|char*|SvPV_force_nomg|SV* sv|STRLEN len +Like but will force the SV into becoming a string (SvPOK). You want +force if you are going to update the SvPVX directly. Doesn't process magic. + =for apidoc Am|char*|SvPV|SV* sv|STRLEN len Returns a pointer to the string in the SV, or a stringified form of the SV -if the SV does not contain a string. Handles 'get' magic. +if the SV does not contain a string. Handles 'get' magic. See also +C for a version which guarantees to evaluate sv only once. + +=for apidoc Am|char*|SvPVx|SV* sv|STRLEN len +A version of C which guarantees to evaluate sv only once. =for apidoc Am|char*|SvPV_nolen|SV* sv Returns a pointer to the string in the SV, or a stringified form of the SV if the SV does not contain a string. Handles 'get' magic. =for apidoc Am|IV|SvIV|SV* sv -Coerces the given SV to an integer and returns it. +Coerces the given SV to an integer and returns it. See C for a +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. =for apidoc Am|NV|SvNV|SV* sv -Coerce the given SV to a double and return it. +Coerce the given SV to a double and return it. See C for a version +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. =for apidoc Am|UV|SvUV|SV* sv -Coerces the given SV to an unsigned integer and returns it. +Coerces the given SV to an unsigned integer and returns it. See C +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. =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. + +=for apidoc Am|char*|SvPVutf8|SV* sv|STRLEN len +Like C, but converts sv to uft8 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*|SvPVbyte_force|SV* sv|STRLEN len +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 +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 +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 +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 +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 +otherwise. + + =cut */ @@ -1088,6 +1152,12 @@ more than once. Calls a non-destructive version of C if dsv is not the same as ssv. May evaluate arguments more than once. +=for apidoc Am|void|SvSetMagicSV|SV* dsb|SV* ssv +Like C, but does any set magic required afterwards. + +=for apidoc Am|void|SvSetMagicSV_nosteal|SV* dsv|SV* ssv +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 @@ -1146,3 +1216,7 @@ Returns a pointer to the character buffer. #define CLONEf_COPY_STACKS 1 #define CLONEf_KEEP_PTR_TABLE 2 +typedef struct { + AV* stashes; + UV flags; +} clone_params;