X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/0fe84f7c4203febe7385a57fe43af2ee032318cf..895e25a51f0637b8e9bc8962fe7947a1e7e3b66f:/gv.h diff --git a/gv.h b/gv.h index 4ca5be1..30014b6 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 */ @@ -205,7 +217,8 @@ Return the SV from the GV. #define GV_ADD 0x01 /* add, if symbol not already there For gv_name_set, adding a HEK for the first time, so don't try to free what's there. */ -#define GV_ADDMULTI 0x02 /* add, pretending it has been added already */ +#define GV_ADDMULTI 0x02 /* add, pretending it has been added + already; used also by gv_init_* */ #define GV_ADDWARN 0x04 /* add, but warn if symbol wasn't already there */ #define GV_ADDINEVAL 0x08 /* add, as though we're doing so within an eval */ #define GV_NOINIT 0x10 /* add, but don't init symbol, if type != PVGV */ @@ -222,8 +235,12 @@ 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_autoload_*/ +#define GV_AUTOLOAD_ISMETHOD 1 /* autoloading a method? */ + /* SVf_UTF8 (more accurately the return value from SvUTF8) is also valid - as a flag to gv_fetch_pvn_flags, so ensure it lies outside this range. + as a flag to various gv_* functions, so ensure it lies + outside this range. */ #define GV_NOADD_MASK \ @@ -236,11 +253,14 @@ Return the SV from the GV. #define gv_efullname3(sv,gv,prefix) gv_efullname4(sv,gv,prefix,TRUE) #define gv_fetchmethod(stash, name) gv_fetchmethod_autoload(stash, name, TRUE) #define gv_fetchsv_nomg(n,f,t) gv_fetchsv(n,(f)|GV_NO_SVGMAGIC,t) -#define gv_init(gv,stash,name,len,multi) gv_init_pvn(gv,stash,name,len,multi,0) +#define gv_init(gv,stash,name,len,multi) \ + gv_init_pvn(gv,stash,name,len,GV_ADDMULTI*!!(multi)) #define gv_fetchmeth(stash,name,len,level) gv_fetchmeth_pvn(stash, name, len, level, 0) #define gv_fetchmeth_autoload(stash,name,len,level) gv_fetchmeth_pvn_autoload(stash, name, len, level, 0) #define gv_fetchmethod_flags(stash,name,flags) gv_fetchmethod_pv_flags(stash, name, flags) -#define gv_autoload4(stash, name, len, method) gv_autoload_pvn(stash, name, len, method, 0) +#define gv_autoload4(stash, name, len, method) \ + gv_autoload_pvn(stash, name, len, !!(method)) +#define newGVgen(pack) newGVgen_flags(pack, 0) #define gv_AVadd(gv) gv_add_by_type((gv), SVt_PVAV) #define gv_HVadd(gv) gv_add_by_type((gv), SVt_PVHV) @@ -251,8 +271,8 @@ Return the SV from the GV. * Local variables: * c-indentation-style: bsd * c-basic-offset: 4 - * indent-tabs-mode: t + * indent-tabs-mode: nil * End: * - * ex: set ts=8 sts=4 sw=4 noet: + * ex: set ts=8 sts=4 sw=4 et: */