cvs commit: ponie/src/pmc perl5cargo_cult_statics.c perl5cargo_cult.pmc
[email protected] (Nicholas Clark) 30 Apr 2005 21:59:21 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 05/04/30 14:59:21
Modified: src/pmc perl5cargo_cult.pmc
Added: src/pmc perl5cargo_cult_statics.c
Log:
Move the flags accessing code out into a separate C file, so that Perl5NULL
can place the flags in an alternative location, but share most of the code.
Revision Changes Path
1.55 +6 -658 ponie/src/pmc/perl5cargo_cult.pmc
Index: perl5cargo_cult.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5cargo_cult.pmc,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- perl5cargo_cult.pmc 30 Apr 2005 17:35:36 -0000 1.54
+++ perl5cargo_cult.pmc 30 Apr 2005 21:59:21 -0000 1.55
@@ -14,24 +14,9 @@
#include "ponie.h"
-static void S_SvOK_off(PMC *pmc) {
- assert_not_ROK(MUMBLE(pmc)) 0;
- (((struct STRUCT_SV *)PMC_struct_val(pmc))->sv_flags)
- &= ~(SVf_OK|SVf_AMAGIC|SVf_IVisUV|SVf_UTF8);
- SvOOK_off(MUMBLE(pmc));
-}
+#define PERL5_FLAGS(pmc) (((struct STRUCT_SV *)PMC_struct_val(pmc))->sv_flags)
-static void S_SvOK_off_exc_UV(PMC *pmc) {
- assert_not_ROK(MUMBLE(pmc)) 0;
- (((struct STRUCT_SV *)PMC_struct_val(pmc))->sv_flags)
- &= ~(SVf_OK|SVf_AMAGIC|SVf_UTF8);
- SvOOK_off(MUMBLE(pmc));
-}
-
-static I32 S_SvMAGICAL(PMC *pmc) {
- return (((struct STRUCT_SV *)PMC_struct_val(pmc))->sv_flags)
- & (SVs_GMG|SVs_SMG|SVs_RMG);
-}
+#include "perl5cargo_cult_statics.c"
void Ponie_freescalar_common(SV *sv) {
/* OOK cannot be true on anything < PVIV, so no need to worry about
@@ -87,7 +72,7 @@
case Ponie_P_ANY:
return PMC_struct_val(SELF);
case Ponie_P_RV:
- assert (!(((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags & SVp_POK));
+ assert (!(PERL5_FLAGS(SELF) & SVp_POK));
return &(PMC_pmc_val(SELF));
/*return &(((struct xrv*)((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_any)->xrv_rv);*/
case Ponie_P_PVX:
@@ -565,648 +550,11 @@
}
INTVAL get_integer_keyed_int(INTVAL key) {
- switch (key) {
- case Ponie_I_SV_FLAGS:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags;
- case Ponie_I_SV_TYPE:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVTYPEMASK;
- case Ponie_I_SVp_OK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & (SVp_IOK|SVp_NOK|SVp_POK);
- case Ponie_I_SVf_OK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVf_OK;
-
- case Ponie_I_SVp_IOK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVp_IOK;
- case Ponie_I_SVf_IOK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVf_IOK;
- case Ponie_I_SVf_IVisUV:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVf_IVisUV;
- case Ponie_I_SVpf_IOK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & (SVf_IOK|SVf_IOK);
- case Ponie_I_SVf_IOK_UV:
- return (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & (SVf_IOK|SVf_IVisUV))
- == (SVf_IOK|SVf_IVisUV);
- case Ponie_I_SVf_IOK_notUV:
- return (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & (SVf_IOK|SVf_IVisUV))
- == (SVf_IOK);
-
- case Ponie_I_SVp_NIOK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & (SVp_IOK|SVp_NOK);
- case Ponie_I_SVf_NIOK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & (SVf_IOK|SVf_NOK);
- case Ponie_I_SVpf_NIOK:
- croak ("Invalid key %d (Ponie_I_SVpf_NIOK)", key);
-
- case Ponie_I_SVp_NOK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVp_NOK;
- case Ponie_I_SVf_NOK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVf_NOK;
- case Ponie_I_SVpf_NOK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & (SVf_NOK|SVf_NOK);
-
- case Ponie_I_SVp_POK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVp_POK;
- case Ponie_I_SVf_POK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVf_POK;
- case Ponie_I_SVpf_POK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & (SVf_POK|SVf_POK);
- case Ponie_I_SVf_UTF8:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVf_UTF8;
- case Ponie_I_SV_VOK:
- return S_SvMAGICAL(SELF) && mg_find(MUMBLE(SELF),'V');
- case Ponie_I_SVf_OOK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVf_OOK;
- case Ponie_I_SVf_FAKE:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVf_FAKE;
- case Ponie_I_SVf_BREAK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVf_BREAK;
- case Ponie_I_SVf_ROK:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVf_ROK;
- case Ponie_I_SV_WEAKREF:
- return (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & (SVf_ROK|SVprv_WEAKREF)) == (SVf_ROK|SVprv_WEAKREF);
- case Ponie_I_SV_MAGICAL:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & (SVs_GMG|SVs_SMG|SVs_RMG);
- case Ponie_I_SV_GMAGICAL:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVs_GMG;
- case Ponie_I_SV_SMAGICAL:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVs_SMG;
- case Ponie_I_SV_RMAGICAL:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVs_RMG;
- case Ponie_I_SV_AMAGIC:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVf_AMAGIC;
- case Ponie_I_SV_GAMAGIC:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & (SVs_GMG|SVf_AMAGIC);
- case Ponie_I_SV_THINKFIRST:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVf_THINKFIRST;
- case Ponie_I_SV_PADSTALE:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVs_PADSTALE;
- case Ponie_I_SV_PADTMP:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVs_PADTMP;
- case Ponie_I_SV_PADMY:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVs_PADMY;
- case Ponie_I_SV_TEMP:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVs_TEMP;
- case Ponie_I_SV_OBJECT:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVs_OBJECT;
- case Ponie_I_SV_READONLY:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVf_READONLY;
- case Ponie_I_SV_SCREAM:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVp_SCREAM;
- case Ponie_I_SV_COMPILED:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVpfm_COMPILED;
- case Ponie_I_SV_EVALED:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVrepl_EVAL;
- case Ponie_I_SV_TAIL:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVpbm_TAIL;
- case Ponie_I_SV_VALID:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVpbm_VALID;
- case Ponie_I_HV_SHAREKEYS:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVphv_SHAREKEYS;
- case Ponie_I_HV_HASKFLAGS:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVphv_HASKFLAGS;
- case Ponie_I_HV_LAZYDEL:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVphv_LAZYDEL;
- case Ponie_I_HV_REHASH:
- return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- & SVphv_REHASH;
-
- default:
- croak ("Out of range or illegal key %d (max is %d) "
- "in get_integer_keyed_int", key, Ponie_I_MAX - 1);
- }
- return 0;
+ return S_get_integer_keyed_int(SELF, key);
}
void set_integer_keyed_int(INTVAL key, INTVAL value) {
- switch (key) {
- case Ponie_I_SV_TYPE:
- /* Some of the internals needs to force the type. */
- ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags &= ~SVTYPEMASK;
- ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- |= (value & SVTYPEMASK);
- return;
- case Ponie_I_SV_ZERO_FLAGS_SET_TYPE:
- ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- = (value & SVTYPEMASK);
- return;
- case Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD:
- ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
- = SVTYPEMASK | SVf_BREAK;
- /*SvANY(sv) = (void *) 0xDEAD;*/
- ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_any = 0xDEAD;
- return;
- case Ponie_I_SV_UPGRADE:
- if ((((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags & SVTYPEMASK) >= value)
- return;
- /* Fall through */
- case Ponie_I_SV_UPGRADE_func:
- if (value < 0 || value >= Ponie_PMC_Perl5_MAX) {
- croak ("Out of range or illegal type %d (max is %d) "
- "for sv upgrade", value, Ponie_PMC_Perl5_MAX - 1);
- }
- DYNSELF.morph(PL_pmcname[value]);
- return;
-
- case Ponie_I_SVf_OK:
- if (!value) {
- /* Only legal thing to do is turn this off. */
- S_SvOK_off(SELF);
- return;
- }
- break;
- case Ponie_I_SVpf_IOK_only:
- if (value) {
- /* Only legal thing to do is turn this on. */
- S_SvOK_off(SELF);
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= (SVp_IOK|SVf_IOK);
- return;
- }
- break;
- case Ponie_I_SVf_OK_exc_UV:
- if (!value) {
- /* Only legal thing to do is turn this off. */
- S_SvOK_off_exc_UV(SELF);
- return;
- }
- break;
- case Ponie_I_SVpf_IOK_only_exc_UV:
- if (value) {
- /* Only legal thing to do is turn this on. */
- S_SvOK_off_exc_UV(SELF);
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= (SVp_IOK|SVf_IOK);
- return;
- }
- break;
-
- case Ponie_I_SVp_IOK:
- if (value) {
- SvRELEASE_IVX(MUMBLE(SELF));
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVp_IOK;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVp_IOK;
- }
- return;
- case Ponie_I_SVf_IOK:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVf_IOK;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVf_IOK;
- }
- return;
- case Ponie_I_SVpf_IOK:
- if (value) {
- SvRELEASE_IVX(MUMBLE(SELF));
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= (SVp_IOK|SVf_IOK);
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~(SVp_IOK|SVf_IOK);
- }
- return;
- case Ponie_I_SVpf_IOK_UTF8:
- if (!value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~(SVp_IOK|SVf_IOK|SVf_IVisUV);
- return;
- }
- case Ponie_I_SVf_IVisUV:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVf_IVisUV;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVf_IVisUV;
- }
- return;
-
- case Ponie_I_SVpf_NIOK:
- if (!value) {
- /* Only legal thing to do is turn this off. */
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~(SVf_IOK|SVf_NOK|SVp_IOK|SVp_NOK|SVf_IVisUV);
- return;
- }
- break;
-
- case Ponie_I_SVp_NOK:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVp_NOK;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVp_NOK;
- }
- return;
- case Ponie_I_SVf_NOK:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVf_NOK;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVf_NOK;
- }
- return;
- case Ponie_I_SVpf_NOK:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= (SVp_NOK|SVf_NOK);
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~(SVp_NOK|SVf_NOK);
- }
- return;
- case Ponie_I_SVpf_NOK_only:
- if (value) {
- /* Only legal thing to do is turn this on. */
- S_SvOK_off(SELF);
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= (SVp_NOK|SVf_NOK);
- return;
- }
- break;
-
-
- case Ponie_I_SVp_POK:
- if (value) {
- assert_not_ROK(MUMBLE(SELF)) 0;
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVp_POK;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVp_POK;
- }
- return;
- case Ponie_I_SVf_POK:
- if (value) {
- assert_not_ROK(MUMBLE(SELF)) 0;
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVf_POK;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVf_POK;
- }
- return;
- case Ponie_I_SVpf_POK:
- if (value) {
- assert_not_ROK(MUMBLE(SELF)) 0;
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= (SVp_POK|SVf_POK);
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~(SVp_POK|SVf_POK);
- }
- return;
- case Ponie_I_SVpf_POK_only:
- if (value) {
- assert_not_ROK(MUMBLE(SELF)) 0;
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~(SVf_OK|SVf_AMAGIC|SVf_IVisUV|SVf_UTF8);
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= (SVp_POK|SVf_POK);
- return;
- }
- break;
- case Ponie_I_SVpf_POK_only_UTF8:
- if (value) {
- assert_not_ROK(MUMBLE(SELF)) 0;
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~(SVf_OK|SVf_AMAGIC|SVf_IVisUV);
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= (SVp_POK|SVf_POK);
- return;
- }
- break;
- case Ponie_I_SVf_UTF8:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVf_UTF8;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVf_UTF8;
- }
- return;
- case Ponie_I_SVf_OOK:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~(SVp_IOK|SVf_IOK|SVf_IVisUV);
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVf_OOK;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVf_OOK;
- }
- return;
- case Ponie_I_SVf_OOK_backoff:
- if (value) {
- if ((((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- & SVf_OOK) {
- sv_backoff(MUMBLE(SELF));
- }
- return;
- }
- case Ponie_I_SVf_FAKE:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVf_FAKE;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVf_FAKE;
- }
- return;
- case Ponie_I_SVf_BREAK:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVf_BREAK;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVf_BREAK;
- }
- return;
- case Ponie_I_SVf_ROK:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVf_ROK;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVf_ROK;
- }
- return;
- case Ponie_I_SV_WEAKREF:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= (SVf_ROK|SVprv_WEAKREF);
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~(SVf_ROK|SVprv_WEAKREF);
- }
- return;
- case Ponie_I_SVf_ROK_AMAGIC:
- if (!value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~(SVf_ROK|SVf_AMAGIC);
- return;
- }
- case Ponie_I_SV_MAGICAL:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= (SVs_GMG|SVs_SMG|SVs_RMG);
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~(SVs_GMG|SVs_SMG|SVs_RMG);
- }
- return;
- case Ponie_I_SV_GMAGICAL:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVs_GMG;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVs_GMG;
- }
- return;
- case Ponie_I_SV_SMAGICAL:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVs_SMG;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVs_SMG;
- }
- return;
- case Ponie_I_SV_RMAGICAL:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVs_RMG;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVs_RMG;
- }
- return;
- case Ponie_I_SV_AMAGIC:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVf_AMAGIC;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVf_AMAGIC;
- }
- return;
- case Ponie_I_SV_MAGICAL_SET:
- if (value & ~(SVs_GMG|SVs_SMG|SVs_RMG)) {
- croak("panic: Ponie_I_SV_MAGICAL_SET with value %08X, expect "
- "only bits from %08X", value, (SVs_GMG|SVs_SMG|SVs_RMG));
- }
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= value;
- return;
- case Ponie_I_SV_NP_PRIVSHIFT:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= ((((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags) &
- (SVp_NOK|SVp_POK)) >> PRIVSHIFT;
- return;
- }
- case Ponie_I_SV_PADSTALE:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVs_PADSTALE;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVs_PADSTALE;
- }
- return;
- case Ponie_I_SV_PADTMP:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVs_PADTMP;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVs_PADTMP;
- }
- return;
- case Ponie_I_SV_PADMY:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVs_PADMY;
- return;
- }
- case Ponie_I_SV_PADTYPED:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVpad_TYPED;
- return;
- }
- case Ponie_I_SV_PADOUR:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVpad_OUR;
- return;
- }
- case Ponie_I_SV_TEMP:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVs_TEMP;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVs_TEMP;
- }
- return;
- case Ponie_I_SV_OBJECT:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVs_OBJECT;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVs_OBJECT;
- }
- return;
- case Ponie_I_SV_READONLY:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVf_READONLY;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVf_READONLY;
- }
- return;
- case Ponie_I_SV_SCREAM:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVp_SCREAM;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVp_SCREAM;
- }
- return;
- case Ponie_I_SV_COMPILED:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVpfm_COMPILED;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVpfm_COMPILED;
- }
- return;
- case Ponie_I_SV_EVALED:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVrepl_EVAL;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVrepl_EVAL;
- }
- return;
- case Ponie_I_SV_TAIL:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVpbm_TAIL;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVpbm_TAIL;
- }
- return;
- case Ponie_I_SV_VALID:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVpbm_VALID;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVpbm_VALID;
- }
- return;
-
- case Ponie_I_HV_SHAREKEYS:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVphv_SHAREKEYS;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVphv_SHAREKEYS;
- }
- return;
- case Ponie_I_HV_HASKFLAGS:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVphv_HASKFLAGS;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVphv_HASKFLAGS;
- }
- return;
- case Ponie_I_HV_LAZYDEL:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVphv_LAZYDEL;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVphv_LAZYDEL;
- }
- return;
- case Ponie_I_HV_REHASH:
- if (value) {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- |= SVphv_REHASH;
- } else {
- (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
- &= ~SVphv_REHASH;
- }
- return;
- default:
- /* Hush gcc. There is a default. */;
- }
- croak ("Out of range or illegal key %d (max is %d), value is %d"
- " in set_integer_keyed_int", key, Ponie_I_MAX - 1, value);
- return;
+ set_integer_keyed_int(interpreter, SELF, key, value);
}
1.1 ponie/src/pmc/perl5cargo_cult_statics.c
Index: perl5cargo_cult_statics.c
===================================================================
/* perl5cargo_cult_statics.pmc -*- c -*-
* Copyright: 2005 The Perl Foundation. All Rights Reserved.
* CVS Info
* $Id: perl5cargo_cult_statics.c,v 1.1 2005/04/30 21:59:21 nicholas Exp $
* Overview:
* These are functions for the temporary Perl5cargo_cult base class that
* are also needed within Perl5NULL until the data layout is changed
* properly. Code in here will be moved out into more suitable locations as
* it is refactored.
* Data Structure and Algorithms:
* History:
* Notes:
* References:
*/
static void S_SvOK_off(PMC *pmc) {
assert_not_ROK(MUMBLE(pmc)) 0;
PERL5_FLAGS(pmc) &= ~(SVf_OK|SVf_AMAGIC|SVf_IVisUV|SVf_UTF8);
SvOOK_off(MUMBLE(pmc));
}
static void S_SvOK_off_exc_UV(PMC *pmc) {
assert_not_ROK(MUMBLE(pmc)) 0;
PERL5_FLAGS(pmc) &= ~(SVf_OK|SVf_AMAGIC|SVf_UTF8);
SvOOK_off(MUMBLE(pmc));
}
static I32 S_SvMAGICAL(PMC *pmc) {
return PERL5_FLAGS(pmc) & (SVs_GMG|SVs_SMG|SVs_RMG);
}
static INTVAL
S_get_integer_keyed_int(PMC *pmc, INTVAL key) {
switch (key) {
case Ponie_I_SV_FLAGS:
return PERL5_FLAGS(pmc);
case Ponie_I_SV_TYPE:
return PERL5_FLAGS(pmc) & SVTYPEMASK;
case Ponie_I_SVp_OK:
return PERL5_FLAGS(pmc) & (SVp_IOK|SVp_NOK|SVp_POK);
case Ponie_I_SVf_OK:
return PERL5_FLAGS(pmc) & SVf_OK;
case Ponie_I_SVp_IOK:
return PERL5_FLAGS(pmc) & SVp_IOK;
case Ponie_I_SVf_IOK:
return PERL5_FLAGS(pmc) & SVf_IOK;
case Ponie_I_SVf_IVisUV:
return PERL5_FLAGS(pmc) & SVf_IVisUV;
case Ponie_I_SVpf_IOK:
return PERL5_FLAGS(pmc) & (SVf_IOK|SVf_IOK);
case Ponie_I_SVf_IOK_UV:
return (PERL5_FLAGS(pmc) & (SVf_IOK|SVf_IVisUV))
== (SVf_IOK|SVf_IVisUV);
case Ponie_I_SVf_IOK_notUV:
return (PERL5_FLAGS(pmc) & (SVf_IOK|SVf_IVisUV))
== (SVf_IOK);
case Ponie_I_SVp_NIOK:
return PERL5_FLAGS(pmc) & (SVp_IOK|SVp_NOK);
case Ponie_I_SVf_NIOK:
return PERL5_FLAGS(pmc) & (SVf_IOK|SVf_NOK);
case Ponie_I_SVpf_NIOK:
croak ("Invalid key %d (Ponie_I_SVpf_NIOK)", key);
case Ponie_I_SVp_NOK:
return PERL5_FLAGS(pmc) & SVp_NOK;
case Ponie_I_SVf_NOK:
return PERL5_FLAGS(pmc) & SVf_NOK;
case Ponie_I_SVpf_NOK:
return PERL5_FLAGS(pmc) & (SVf_NOK|SVf_NOK);
case Ponie_I_SVp_POK:
return PERL5_FLAGS(pmc) & SVp_POK;
case Ponie_I_SVf_POK:
return PERL5_FLAGS(pmc) & SVf_POK;
case Ponie_I_SVpf_POK:
return PERL5_FLAGS(pmc) & (SVf_POK|SVf_POK);
case Ponie_I_SVf_UTF8:
return PERL5_FLAGS(pmc) & SVf_UTF8;
case Ponie_I_SV_VOK:
return S_SvMAGICAL(pmc) && mg_find(MUMBLE(pmc),'V');
case Ponie_I_SVf_OOK:
return PERL5_FLAGS(pmc) & SVf_OOK;
case Ponie_I_SVf_FAKE:
return PERL5_FLAGS(pmc) & SVf_FAKE;
case Ponie_I_SVf_BREAK:
return PERL5_FLAGS(pmc) & SVf_BREAK;
case Ponie_I_SVf_ROK:
return PERL5_FLAGS(pmc) & SVf_ROK;
case Ponie_I_SV_WEAKREF:
return (PERL5_FLAGS(pmc) & (SVf_ROK|SVprv_WEAKREF))
== (SVf_ROK|SVprv_WEAKREF);
case Ponie_I_SV_MAGICAL:
return PERL5_FLAGS(pmc) & (SVs_GMG|SVs_SMG|SVs_RMG);
case Ponie_I_SV_GMAGICAL:
return PERL5_FLAGS(pmc) & SVs_GMG;
case Ponie_I_SV_SMAGICAL:
return PERL5_FLAGS(pmc) & SVs_SMG;
case Ponie_I_SV_RMAGICAL:
return PERL5_FLAGS(pmc) & SVs_RMG;
case Ponie_I_SV_AMAGIC:
return PERL5_FLAGS(pmc) & SVf_AMAGIC;
case Ponie_I_SV_GAMAGIC:
return PERL5_FLAGS(pmc) & (SVs_GMG|SVf_AMAGIC);
case Ponie_I_SV_THINKFIRST:
return PERL5_FLAGS(pmc) & SVf_THINKFIRST;
case Ponie_I_SV_PADSTALE:
return PERL5_FLAGS(pmc) & SVs_PADSTALE;
case Ponie_I_SV_PADTMP:
return PERL5_FLAGS(pmc) & SVs_PADTMP;
case Ponie_I_SV_PADMY:
return PERL5_FLAGS(pmc) & SVs_PADMY;
case Ponie_I_SV_TEMP:
return PERL5_FLAGS(pmc) & SVs_TEMP;
case Ponie_I_SV_OBJECT:
return PERL5_FLAGS(pmc) & SVs_OBJECT;
case Ponie_I_SV_READONLY:
return PERL5_FLAGS(pmc) & SVf_READONLY;
case Ponie_I_SV_SCREAM:
return PERL5_FLAGS(pmc) & SVp_SCREAM;
case Ponie_I_SV_COMPILED:
return PERL5_FLAGS(pmc) & SVpfm_COMPILED;
case Ponie_I_SV_EVALED:
return PERL5_FLAGS(pmc) & SVrepl_EVAL;
case Ponie_I_SV_TAIL:
return PERL5_FLAGS(pmc) & SVpbm_TAIL;
case Ponie_I_SV_VALID:
return PERL5_FLAGS(pmc) & SVpbm_VALID;
case Ponie_I_HV_SHAREKEYS:
return PERL5_FLAGS(pmc) & SVphv_SHAREKEYS;
case Ponie_I_HV_HASKFLAGS:
return PERL5_FLAGS(pmc) & SVphv_HASKFLAGS;
case Ponie_I_HV_LAZYDEL:
return PERL5_FLAGS(pmc) & SVphv_LAZYDEL;
case Ponie_I_HV_REHASH:
return PERL5_FLAGS(pmc) & SVphv_REHASH;
default:
croak ("Out of range or illegal key %d (max is %d) "
"in get_integer_keyed_int", key, Ponie_I_MAX - 1);
}
return 0;
}
STATIC void
set_integer_keyed_int(Interp* interpreter, PMC *pmc, INTVAL key, INTVAL value)
{
switch (key) {
case Ponie_I_SV_TYPE:
/* Some of the internals needs to force the type. */
PERL5_FLAGS(pmc) &= ~SVTYPEMASK;
PERL5_FLAGS(pmc) |= (value & SVTYPEMASK);
return;
case Ponie_I_SV_ZERO_FLAGS_SET_TYPE:
PERL5_FLAGS(pmc) = (value & SVTYPEMASK);
return;
case Ponie_I_SV_ZERO_FLAGS_SET_TYPEMASK_BREAK_DEAD:
PERL5_FLAGS(pmc) = SVTYPEMASK | SVf_BREAK;
/*SvANY(sv) = (void *) 0xDEAD;*/
((struct STRUCT_SV *)PMC_struct_val(pmc))->sv_any = 0xDEAD;
return;
case Ponie_I_SV_UPGRADE:
if ((PERL5_FLAGS(pmc) & SVTYPEMASK) >= value)
return;
/* Fall through */
case Ponie_I_SV_UPGRADE_func:
if (value < 0 || value >= Ponie_PMC_Perl5_MAX) {
croak ("Out of range or illegal type %d (max is %d) "
"for sv upgrade", value, Ponie_PMC_Perl5_MAX - 1);
}
/* Yes, this is a hack. But so are .pmc files that aren't actually
C, and don't like CPP directives within them, let alone allow
#include */
/* DYNpmc.morph(PL_pmcname[value]); */
VTABLE_morph(interpreter, pmc, PL_pmcname[value]);
return;
case Ponie_I_SVf_OK:
if (!value) {
/* Only legal thing to do is turn this off. */
S_SvOK_off(pmc);
return;
}
break;
case Ponie_I_SVpf_IOK_only:
if (value) {
/* Only legal thing to do is turn this on. */
S_SvOK_off(pmc);
PERL5_FLAGS(pmc) |= (SVp_IOK|SVf_IOK);
return;
}
break;
case Ponie_I_SVf_OK_exc_UV:
if (!value) {
/* Only legal thing to do is turn this off. */
S_SvOK_off_exc_UV(pmc);
return;
}
break;
case Ponie_I_SVpf_IOK_only_exc_UV:
if (value) {
/* Only legal thing to do is turn this on. */
S_SvOK_off_exc_UV(pmc);
PERL5_FLAGS(pmc) |= (SVp_IOK|SVf_IOK);
return;
}
break;
case Ponie_I_SVp_IOK:
if (value) {
SvRELEASE_IVX(MUMBLE(pmc));
PERL5_FLAGS(pmc) |= SVp_IOK;
} else {
PERL5_FLAGS(pmc) &= ~SVp_IOK;
}
return;
case Ponie_I_SVf_IOK:
if (value) {
PERL5_FLAGS(pmc) |= SVf_IOK;
} else {
PERL5_FLAGS(pmc) &= ~SVf_IOK;
}
return;
case Ponie_I_SVpf_IOK:
if (value) {
SvRELEASE_IVX(MUMBLE(pmc));
PERL5_FLAGS(pmc) |= (SVp_IOK|SVf_IOK);
} else {
PERL5_FLAGS(pmc) &= ~(SVp_IOK|SVf_IOK);
}
return;
case Ponie_I_SVpf_IOK_UTF8:
if (!value) {
PERL5_FLAGS(pmc) &= ~(SVp_IOK|SVf_IOK|SVf_IVisUV);
return;
}
case Ponie_I_SVf_IVisUV:
if (value) {
PERL5_FLAGS(pmc) |= SVf_IVisUV;
} else {
PERL5_FLAGS(pmc) &= ~SVf_IVisUV;
}
return;
case Ponie_I_SVpf_NIOK:
if (!value) {
/* Only legal thing to do is turn this off. */
PERL5_FLAGS(pmc) &= ~(SVf_IOK|SVf_NOK|SVp_IOK|SVp_NOK|SVf_IVisUV);
return;
}
break;
case Ponie_I_SVp_NOK:
if (value) {
PERL5_FLAGS(pmc) |= SVp_NOK;
} else {
PERL5_FLAGS(pmc) &= ~SVp_NOK;
}
return;
case Ponie_I_SVf_NOK:
if (value) {
PERL5_FLAGS(pmc) |= SVf_NOK;
} else {
PERL5_FLAGS(pmc) &= ~SVf_NOK;
}
return;
case Ponie_I_SVpf_NOK:
if (value) {
PERL5_FLAGS(pmc) |= (SVp_NOK|SVf_NOK);
} else {
PERL5_FLAGS(pmc) &= ~(SVp_NOK|SVf_NOK);
}
return;
case Ponie_I_SVpf_NOK_only:
if (value) {
/* Only legal thing to do is turn this on. */
S_SvOK_off(pmc);
PERL5_FLAGS(pmc) |= (SVp_NOK|SVf_NOK);
return;
}
break;
case Ponie_I_SVp_POK:
if (value) {
assert_not_ROK(MUMBLE(pmc)) 0;
PERL5_FLAGS(pmc) |= SVp_POK;
} else {
PERL5_FLAGS(pmc) &= ~SVp_POK;
}
return;
case Ponie_I_SVf_POK:
if (value) {
assert_not_ROK(MUMBLE(pmc)) 0;
PERL5_FLAGS(pmc) |= SVf_POK;
} else {
PERL5_FLAGS(pmc) &= ~SVf_POK;
}
return;
case Ponie_I_SVpf_POK:
if (value) {
assert_not_ROK(MUMBLE(pmc)) 0;
PERL5_FLAGS(pmc) |= (SVp_POK|SVf_POK);
} else {
PERL5_FLAGS(pmc) &= ~(SVp_POK|SVf_POK);
}
return;
case Ponie_I_SVpf_POK_only:
if (value) {
assert_not_ROK(MUMBLE(pmc)) 0;
PERL5_FLAGS(pmc) &= ~(SVf_OK|SVf_AMAGIC|SVf_IVisUV|SVf_UTF8);
PERL5_FLAGS(pmc) |= (SVp_POK|SVf_POK);
return;
}
break;
case Ponie_I_SVpf_POK_only_UTF8:
if (value) {
assert_not_ROK(MUMBLE(pmc)) 0;
PERL5_FLAGS(pmc) &= ~(SVf_OK|SVf_AMAGIC|SVf_IVisUV);
PERL5_FLAGS(pmc) |= (SVp_POK|SVf_POK);
return;
}
break;
case Ponie_I_SVf_UTF8:
if (value) {
PERL5_FLAGS(pmc) |= SVf_UTF8;
} else {
PERL5_FLAGS(pmc) &= ~SVf_UTF8;
}
return;
case Ponie_I_SVf_OOK:
if (value) {
PERL5_FLAGS(pmc) &= ~(SVp_IOK|SVf_IOK|SVf_IVisUV);
PERL5_FLAGS(pmc) |= SVf_OOK;
} else {
PERL5_FLAGS(pmc) &= ~SVf_OOK;
}
return;
case Ponie_I_SVf_OOK_backoff:
if (value) {
if (PERL5_FLAGS(pmc) & SVf_OOK) {
sv_backoff(MUMBLE(pmc));
}
return;
}
case Ponie_I_SVf_FAKE:
if (value) {
PERL5_FLAGS(pmc) |= SVf_FAKE;
} else {
PERL5_FLAGS(pmc) &= ~SVf_FAKE;
}
return;
case Ponie_I_SVf_BREAK:
if (value) {
PERL5_FLAGS(pmc) |= SVf_BREAK;
} else {
PERL5_FLAGS(pmc) &= ~SVf_BREAK;
}
return;
case Ponie_I_SVf_ROK:
if (value) {
PERL5_FLAGS(pmc) |= SVf_ROK;
} else {
PERL5_FLAGS(pmc) &= ~SVf_ROK;
}
return;
case Ponie_I_SV_WEAKREF:
if (value) {
PERL5_FLAGS(pmc) |= (SVf_ROK|SVprv_WEAKREF);
} else {
PERL5_FLAGS(pmc) &= ~(SVf_ROK|SVprv_WEAKREF);
}
return;
case Ponie_I_SVf_ROK_AMAGIC:
if (!value) {
PERL5_FLAGS(pmc) &= ~(SVf_ROK|SVf_AMAGIC);
return;
}
case Ponie_I_SV_MAGICAL:
if (value) {
PERL5_FLAGS(pmc) |= (SVs_GMG|SVs_SMG|SVs_RMG);
} else {
PERL5_FLAGS(pmc) &= ~(SVs_GMG|SVs_SMG|SVs_RMG);
}
return;
case Ponie_I_SV_GMAGICAL:
if (value) {
PERL5_FLAGS(pmc) |= SVs_GMG;
} else {
PERL5_FLAGS(pmc) &= ~SVs_GMG;
}
return;
case Ponie_I_SV_SMAGICAL:
if (value) {
PERL5_FLAGS(pmc) |= SVs_SMG;
} else {
PERL5_FLAGS(pmc) &= ~SVs_SMG;
}
return;
case Ponie_I_SV_RMAGICAL:
if (value) {
PERL5_FLAGS(pmc) |= SVs_RMG;
} else {
PERL5_FLAGS(pmc) &= ~SVs_RMG;
}
return;
case Ponie_I_SV_AMAGIC:
if (value) {
PERL5_FLAGS(pmc) |= SVf_AMAGIC;
} else {
PERL5_FLAGS(pmc) &= ~SVf_AMAGIC;
}
return;
case Ponie_I_SV_MAGICAL_SET:
if (value & ~(SVs_GMG|SVs_SMG|SVs_RMG)) {
croak("panic: Ponie_I_SV_MAGICAL_SET with value %08X, expect "
"only bits from %08X", value, (SVs_GMG|SVs_SMG|SVs_RMG));
}
PERL5_FLAGS(pmc) |= value;
return;
case Ponie_I_SV_NP_PRIVSHIFT:
if (value) {
PERL5_FLAGS(pmc) |= (PERL5_FLAGS(pmc) &
(SVp_NOK|SVp_POK)) >> PRIVSHIFT;
return;
}
case Ponie_I_SV_PADSTALE:
if (value) {
PERL5_FLAGS(pmc) |= SVs_PADSTALE;
} else {
PERL5_FLAGS(pmc) &= ~SVs_PADSTALE;
}
return;
case Ponie_I_SV_PADTMP:
if (value) {
PERL5_FLAGS(pmc) |= SVs_PADTMP;
} else {
PERL5_FLAGS(pmc) &= ~SVs_PADTMP;
}
return;
case Ponie_I_SV_PADMY:
if (value) {
PERL5_FLAGS(pmc) |= SVs_PADMY;
return;
}
case Ponie_I_SV_PADTYPED:
if (value) {
PERL5_FLAGS(pmc) |= SVpad_TYPED;
return;
}
case Ponie_I_SV_PADOUR:
if (value) {
PERL5_FLAGS(pmc) |= SVpad_OUR;
return;
}
case Ponie_I_SV_TEMP:
if (value) {
PERL5_FLAGS(pmc) |= SVs_TEMP;
} else {
PERL5_FLAGS(pmc) &= ~SVs_TEMP;
}
return;
case Ponie_I_SV_OBJECT:
if (value) {
PERL5_FLAGS(pmc) |= SVs_OBJECT;
} else {
PERL5_FLAGS(pmc) &= ~SVs_OBJECT;
}
return;
case Ponie_I_SV_READONLY:
if (value) {
PERL5_FLAGS(pmc) |= SVf_READONLY;
} else {
PERL5_FLAGS(pmc) &= ~SVf_READONLY;
}
return;
case Ponie_I_SV_SCREAM:
if (value) {
PERL5_FLAGS(pmc) |= SVp_SCREAM;
} else {
PERL5_FLAGS(pmc) &= ~SVp_SCREAM;
}
return;
case Ponie_I_SV_COMPILED:
if (value) {
PERL5_FLAGS(pmc) |= SVpfm_COMPILED;
} else {
PERL5_FLAGS(pmc) &= ~SVpfm_COMPILED;
}
return;
case Ponie_I_SV_EVALED:
if (value) {
PERL5_FLAGS(pmc) |= SVrepl_EVAL;
} else {
PERL5_FLAGS(pmc) &= ~SVrepl_EVAL;
}
return;
case Ponie_I_SV_TAIL:
if (value) {
PERL5_FLAGS(pmc) |= SVpbm_TAIL;
} else {
PERL5_FLAGS(pmc) &= ~SVpbm_TAIL;
}
return;
case Ponie_I_SV_VALID:
if (value) {
PERL5_FLAGS(pmc) |= SVpbm_VALID;
} else {
PERL5_FLAGS(pmc) &= ~SVpbm_VALID;
}
return;
case Ponie_I_HV_SHAREKEYS:
if (value) {
PERL5_FLAGS(pmc) |= SVphv_SHAREKEYS;
} else {
PERL5_FLAGS(pmc) &= ~SVphv_SHAREKEYS;
}
return;
case Ponie_I_HV_HASKFLAGS:
if (value) {
PERL5_FLAGS(pmc) |= SVphv_HASKFLAGS;
} else {
PERL5_FLAGS(pmc) &= ~SVphv_HASKFLAGS;
}
return;
case Ponie_I_HV_LAZYDEL:
if (value) {
PERL5_FLAGS(pmc) |= SVphv_LAZYDEL;
} else {
PERL5_FLAGS(pmc) &= ~SVphv_LAZYDEL;
}
return;
case Ponie_I_HV_REHASH:
if (value) {
PERL5_FLAGS(pmc) |= SVphv_REHASH;
} else {
PERL5_FLAGS(pmc) &= ~SVphv_REHASH;
}
return;
default:
/* Hush gcc. There is a default. */;
}
croak ("Out of range or illegal key %d (max is %d), value is %d"
" in set_integer_keyed_int", key, Ponie_I_MAX - 1, value);
return;
}
/*
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*
* vim: expandtab shiftwidth=4:
*/