summaryrefslogtreecommitdiff
path: root/sv.h
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2006-02-21 15:40:04 +0000
committerNicholas Clark <nick@ccl4.org>2006-02-21 15:40:04 +0000
commit26a32e18faa6fb3ffd3cdf7009426aef1a8abd16 (patch)
tree813bbf200fe409b340d4c4f57962e2497f869e41 /sv.h
parentd112a06dc75a9f656b2f32d92aeeff9c5d5f120b (diff)
downloadperl-26a32e18faa6fb3ffd3cdf7009426aef1a8abd16.tar.gz
Re-order the definitions of the private bits in SvFLAGS by value, so
that we can see where we're already double-booked. p4raw-id: //depot/perl@27259
Diffstat (limited to 'sv.h')
-rw-r--r--sv.h50
1 files changed, 30 insertions, 20 deletions
diff --git a/sv.h b/sv.h
index 515645bb3c..da1891d999 100644
--- a/sv.h
+++ b/sv.h
@@ -245,44 +245,54 @@ perform the upgrade if necessary. See C<svtype>.
#define SVp_NOK 0x02000000 /* has valid non-public numeric value */
#define SVp_POK 0x04000000 /* has valid non-public pointer value */
#define SVp_SCREAM 0x08000000 /* has been studied? */
+#define SVphv_CLONEABLE 0x08000000 /* PVHV (stashes) clone its objects */
-#define SVf_UTF8 0x20000000 /* SvPV is UTF-8 encoded */
-/* Ensure this value does not clash with the GV_ADD* flags in gv.h */
#define SVf_THINKFIRST (SVf_READONLY|SVf_ROK|SVf_FAKE)
#define SVf_OK (SVf_IOK|SVf_NOK|SVf_POK|SVf_ROK| \
SVp_IOK|SVp_NOK|SVp_POK)
-#define SVf_AMAGIC 0x10000000 /* has magical overloaded methods */
-
#define PRIVSHIFT 8 /* (SVp_?OK >> PRIVSHIFT) == SVf_?OK */
+#define SVf_AMAGIC 0x10000000 /* has magical overloaded methods */
+#define SVf_UTF8 0x20000000 /* SvPV is UTF-8 encoded */
+/* Ensure this value does not clash with the GV_ADD* flags in gv.h */
+
/* Some private flags. */
-/* SVpad_OUR may be set on SVt_PV{NV,MG,GV} types */
-#define SVpad_OUR 0x80000000 /* pad name is "our" instead of "my" */
+/* PVHV */
+#define SVphv_REHASH 0x10000000 /* PVHV is recalculating hash values */
+/* PVHV */
+#define SVphv_SHAREKEYS 0x20000000 /* PVHV
+ keys live on shared string table */
+/* PVNV, PVMG, PVGV, presumably only inside pads */
#define SVpad_TYPED 0x40000000 /* Typed Lexical */
-
-#define SVf_IVisUV 0x80000000 /* use XPVUV instead of XPVIV */
-
-#define SVpfm_COMPILED 0x80000000 /* FORMLINE is compiled */
-
-#define SVpbm_VALID 0x80000000
+/* PVAV */
+#define SVpav_REAL 0x40000000 /* free old entries */
+/* PVHV */
+#define SVphv_LAZYDEL 0x40000000 /* entry in xhv_eiter must be deleted */
+/* PVBM */
#define SVpbm_TAIL 0x40000000
-
+/* ??? */
#define SVrepl_EVAL 0x40000000 /* Replacement part of s///e */
-#define SVphv_CLONEABLE 0x08000000 /* for stashes: clone its objects */
-#define SVphv_REHASH 0x10000000 /* HV is recalculating hash values */
-#define SVphv_SHAREKEYS 0x20000000 /* keys live on shared string table */
-#define SVphv_LAZYDEL 0x40000000 /* entry in xhv_eiter must be deleted */
+/* PVNV, PVMG, PVGV, presumably only inside pads */
+#define SVpad_OUR 0x80000000 /* pad name is "our" instead of "my" */
+/* IV, PVIV, PVNV, PVMG, PVGV and (I assume) PVLV */
+/* Presumably IVs aren't stored in pads */
+#define SVf_IVisUV 0x80000000 /* use XPVUV instead of XPVIV */
+/* PVAV */
+#define SVpav_REIFY 0x80000000 /* can become real */
+/* PVHV */
#define SVphv_HASKFLAGS 0x80000000 /* keys have flag byte after hash */
-
+/* PVFM */
+#define SVpfm_COMPILED 0x80000000 /* FORMLINE is compiled */
+/* PVBM */
+#define SVpbm_VALID 0x80000000
+/* RV upwards. However, SVf_ROK and SVp_IOK are exclusive */
#define SVprv_WEAKREF 0x80000000 /* Weak reference */
-#define SVpav_REAL 0x40000000 /* free old entries */
-#define SVpav_REIFY 0x80000000 /* can become real */
struct xpv {
NV xnv_nv; /* numeric value, if any */