diff options
author | Karl Williamson <public@khwilliamson.com> | 2013-06-11 16:57:22 -0600 |
---|---|---|
committer | Karl Williamson <public@khwilliamson.com> | 2013-07-03 19:21:19 -0600 |
commit | e045dbedc7da04e20cc8cfccec8a2e3ccc62cc8b (patch) | |
tree | 4e3f84c2751b6512a15f8fb3a5c656e849152d20 /sv.h | |
parent | 05944450e0fc82eb8fc1fb5a4bf63f23785262a0 (diff) | |
download | perl-e045dbedc7da04e20cc8cfccec8a2e3ccc62cc8b.tar.gz |
Create SVt_INVLIST
This reshuffles the svtype enum to remove the dummy slot created in a
previous commit, and add the new SVt_INVLIST type in its proper order.
It still is unused, but since it is an extension of SVt_PV, it must be
greater than that type's enum value. Since it can't be upgraded to any
other PV type, it comes right after SVt_PV.
Affected tables in the core are updated.
Diffstat (limited to 'sv.h')
-rw-r--r-- | sv.h | 20 |
1 files changed, 14 insertions, 6 deletions
@@ -29,6 +29,7 @@ The types are: SVt_PVIV SVt_PVNV SVt_PVMG + SVt_INVLIST SVt_REGEXP SVt_PVGV SVt_PVLV @@ -56,7 +57,8 @@ typeglob has been assigned. Assigning to it again will stop it from being a typeglob. SVt_PVLV represents a scalar that delegates to another scalar behind the scenes. It is used, e.g., for the return value of C<substr> and for tied hash and array elements. It can hold any scalar value, including -a typeglob. SVt_REGEXP is for regular expressions. +a typeglob. SVt_REGEXP is for regular expressions. SVt_INVLIST is for Perl +core internal use only. SVt_PVMG represents a "normal" scalar (not a typeglob, regular expression, or delegate). Since most scalars do not need all the internal fields of a @@ -90,6 +92,9 @@ Type flag for scalars. See L</svtype>. =for apidoc AmU||SVt_PVMG Type flag for scalars. See L</svtype>. +=for apidoc AmU||SVt_INVLIST +Type flag for scalars. See L</svtype>. + =for apidoc AmU||SVt_REGEXP Type flag for regular expressions. See L</svtype>. @@ -119,11 +124,12 @@ Type flag for I/O objects. See L</svtype>. typedef enum { SVt_NULL, /* 0 */ - SVt_DUMMY, /* 1 */ - SVt_IV, /* 2 */ - SVt_NV, /* 3 */ + /* BIND was here, before INVLIST replaced it. */ + SVt_IV, /* 1 */ + SVt_NV, /* 2 */ /* RV was here, before it was merged with IV. */ - SVt_PV, /* 4 */ + SVt_PV, /* 3 */ + SVt_INVLIST, /* 4, implemented as a PV */ SVt_PVIV, /* 5 */ SVt_PVNV, /* 6 */ SVt_PVMG, /* 7 */ @@ -140,7 +146,9 @@ typedef enum { } svtype; /* *** any alterations to the SV types above need to be reflected in - * SVt_MASK and the various PL_valid_types_* tables */ + * SVt_MASK and the various PL_valid_types_* tables. As of this writing those + * tables are in perl.h. There are also two affected names tables in dump.c, + * one in B.xs, and 'bodies_by_type[]' in sv.c */ #define SVt_MASK 0xf /* smallest bitmask that covers all types */ |