X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/14d04a33467fd25c9767918f61a2bfaec64b0cfa..446b89af54d4dd848d5432e339a1456502eaee01:/gv.h diff --git a/gv.h b/gv.h index 0f91d19..d7ca92f 100644 --- a/gv.h +++ b/gv.h @@ -83,6 +83,18 @@ struct gp { Return the SV from the GV. +=for apidoc Am|AV*|GvAV|GV* gv + +Return the AV from the GV. + +=for apidoc Am|HV*|GvHV|GV* gv + +Return the HV from the GV. + +=for apidoc Am|CV*|GvCV|GV* gv + +Return the CV from the GV. + =cut */ @@ -129,8 +141,9 @@ Return the SV from the GV. #define GvLINE(gv) (GvGP(gv)->gp_line) #define GvFILE_HEK(gv) (GvGP(gv)->gp_file_hek) -#define GvFILE(gv) (GvFILE_HEK(gv) ? HEK_KEY(GvFILE_HEK(gv)) : NULL) -#define GvFILEGV(gv) (gv_fetchfile(GvFILE(gv))) +#define GvFILEx(gv) HEK_KEY(GvFILE_HEK(gv)) +#define GvFILE(gv) (GvFILE_HEK(gv) ? GvFILEx(gv) : NULL) +#define GvFILEGV(gv) (GvFILE_HEK(gv) ? gv_fetchfile(GvFILEx(gv)) : NULL) #define GvEGV(gv) (GvGP(gv)->gp_egv) #define GvEGVx(gv) (isGV_with_GP(gv) ? GvEGV(gv) : NULL) @@ -223,6 +236,9 @@ Return the SV from the GV. #define GV_NO_SVGMAGIC 0x800 /* Skip get-magic on an SV argument; used only by gv_fetchsv(_nomg) */ +/* Flags for gv_fetchmeth_pvn and gv_autoload_pvn*/ +#define GV_SUPER 0x1000 /* SUPER::method */ + /* Flags for gv_autoload_*/ #define GV_AUTOLOAD_ISMETHOD 1 /* autoloading a method? */ @@ -249,6 +265,13 @@ Return the SV from the GV. #define gv_autoload4(stash, name, len, method) \ gv_autoload_pvn(stash, name, len, !!(method)) #define newGVgen(pack) newGVgen_flags(pack, 0) +#define gv_method_changed(gv) \ + ( \ + assert_(isGV_with_GP(gv)) \ + GvREFCNT(gv) > 1 \ + ? (void)++PL_sub_generation \ + : mro_method_changed_in(GvSTASH(gv)) \ + ) #define gv_AVadd(gv) gv_add_by_type((gv), SVt_PVAV) #define gv_HVadd(gv) gv_add_by_type((gv), SVt_PVHV)