This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
more pod patches
[perl5.git] / gv.h
diff --git a/gv.h b/gv.h
index fde836d..01764e3 100644 (file)
--- a/gv.h
+++ b/gv.h
@@ -1,6 +1,6 @@
 /*    gv.h
  *
- *    Copyright (c) 1991-1999, Larry Wall
+ *    Copyright (c) 1991-2001, Larry Wall
  *
  *    You may distribute under the terms of either the GNU General Public
  *    License or the Artistic License, as specified in the README file.
@@ -34,6 +34,14 @@ struct gp {
 #define GvSTASH(gv)    (GvXPVGV(gv)->xgv_stash)
 #define GvFLAGS(gv)    (GvXPVGV(gv)->xgv_flags)
 
+/*
+=for apidoc Am|SV*|GvSV|GV* gv
+
+Return the SV from the GV.
+
+=cut
+*/
+
 #define GvSV(gv)       (GvGP(gv)->gp_sv)
 #define GvREFCNT(gv)   (GvGP(gv)->gp_refcnt)
 #define GvIO(gv)       ((gv) && SvTYPE((SV*)gv) == SVt_PVGV ? GvIOp(gv) : 0)
@@ -71,7 +79,7 @@ HV *GvHVn();
 
 #define GvLINE(gv)     (GvGP(gv)->gp_line)
 #define GvFILE(gv)     (GvGP(gv)->gp_file)
-#define GvFILEGV(gv)   (gv_fetchfile(GvGP(gv)->gp_file))
+#define GvFILEGV(gv)   (gv_fetchfile(GvFILE(gv)))
 
 #define GvEGV(gv)      (GvGP(gv)->gp_egv)
 #define GvENAME(gv)    GvNAME(GvEGV(gv) ? GvEGV(gv) : gv)
@@ -123,6 +131,19 @@ HV *GvHVn();
 #define GvIN_PAD_on(gv)                (GvFLAGS(gv) |= GVf_IN_PAD)
 #define GvIN_PAD_off(gv)       (GvFLAGS(gv) &= ~GVf_IN_PAD)
 
+/* XXX: all GvFLAGS options are used, borrowing GvGPFLAGS for the moment */
+
+#define GVf_SHARED           0x0001
+#define GvSHARED(gv)         (GvGP(gv) && (GvGPFLAGS(gv) & GVf_SHARED))
+#define GvSHARED_on(gv)      (GvGPFLAGS(gv) |= GVf_SHARED)
+#define GvSHARED_off(gv)     (GvGPFLAGS(gv) &= ~GVf_SHARED)
+
+#ifdef USE_ITHREADS
+#define GV_SHARED_CHECK
+#else
+#undef  GV_SHARED_CHECK
+#endif
+
 #define Nullgv Null(GV*)
 
 #define DM_UID   0x003
@@ -141,4 +162,3 @@ HV *GvHVn();
 #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 */
-#define GV_ADDOUR      0x20    /* add "our" variable */