cvs commit: ponie/src/pmc perl5cargo_cult.pmc
[email protected] (Nicholas Clark) 15 Oct 2004 10:49:58 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/10/15 03:49:58
Modified: perl sv.h
src/pmc perl5cargo_cult.pmc
Log:
RV flags via PMCs
Revision Changes Path
1.35 +3 -4 ponie/perl/sv.h
Index: sv.h
===================================================================
RCS file: /cvs/public/ponie/perl/sv.h,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -w -r1.34 -r1.35
--- sv.h 15 Oct 2004 10:06:47 -0000 1.34
+++ sv.h 15 Oct 2004 10:49:58 -0000 1.35
@@ -687,10 +687,9 @@
#define SvFAKE_on(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVf_FAKE, 1)
#define SvFAKE_off(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVf_FAKE, 0)
-
-#define SvROK(sv) (SvFLAGS(sv) & SVf_ROK)
-#define SvROK_on(sv) (SvFLAGS(sv) |= SVf_ROK)
-#define SvROK_off(sv) (SvFLAGS(sv) &= ~(SVf_ROK|SVf_AMAGIC))
+#define SvROK(sv) ((U32)Parrot_PMC_get_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVf_ROK))
+#define SvROK_on(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVf_ROK, 1)
+#define SvROK_off(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVf_ROK_AMAGIC, 0)
#define SvMAGICAL(sv) (SvFLAGS(sv) & (SVs_GMG|SVs_SMG|SVs_RMG))
#define SvMAGICAL_on(sv) (SvFLAGS(sv) |= (SVs_GMG|SVs_SMG|SVs_RMG))
1.24 +17 -1 ponie/src/pmc/perl5cargo_cult.pmc
Index: perl5cargo_cult.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5cargo_cult.pmc,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -w -r1.23 -r1.24
--- perl5cargo_cult.pmc 15 Oct 2004 10:06:45 -0000 1.23
+++ perl5cargo_cult.pmc 15 Oct 2004 10:49:58 -0000 1.24
@@ -1,7 +1,7 @@
/* Perl5QQQ.pmc -*- c -*-
* Copyright: 2001-2004 The Perl Foundation. All Rights Reserved.
* CVS Info
- * $Id: perl5cargo_cult.pmc,v 1.23 2004/10/15 10:06:45 nicholas Exp $
+ * $Id: perl5cargo_cult.pmc,v 1.24 2004/10/15 10:49:58 nicholas Exp $
* Overview:
* These are the vtable functions for the Perl5QQQ base class
* Data Structure and Algorithms:
@@ -147,6 +147,9 @@
case Ponie_I_SVf_FAKE:
return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
& SVf_FAKE;
+ case Ponie_I_SVf_ROK:
+ return ((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags
+ & SVf_ROK;
default:
croak ("Out of range or illegal key %d (max is %d) "
@@ -342,6 +345,19 @@
|= SVf_FAKE;
}
return;
+ case Ponie_I_SVf_ROK:
+ (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags) &= ~SVf_ROK;
+ if (value) {
+ (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
+ |= SVf_ROK;
+ }
+ return;
+ case Ponie_I_SVf_ROK_AMAGIC:
+ if (!value) {
+ (((struct STRUCT_SV *)PMC_struct_val(SELF))->sv_flags)
+ &= ~(SVf_ROK|SVf_AMAGIC);
+ return;
+ }
default:
/* Hush gcc. There is a default. */;