cvs commit: ponie/src/pmc perl5cargo_cult.pmc
[email protected] (Nicholas Clark) 15 Oct 2004 15:04:12 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/10/15 08:04:12
Modified: perl sv.h
src/pmc perl5cargo_cult.pmc
Log:
SvTEMP, SvOBJECT and SvREADONLY into the PMC
Revision Changes Path
1.40 +13 -13 ponie/perl/sv.h
Index: sv.h
===================================================================
RCS file: /cvs/public/ponie/perl/sv.h,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -w -r1.39 -r1.40
--- sv.h 15 Oct 2004 14:28:41 -0000 1.39
+++ sv.h 15 Oct 2004 15:04:12 -0000 1.40
@@ -739,17 +739,17 @@
#define SvPADMY(sv) ((U32)Parrot_PMC_get_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SV_PADMY))
#define SvPADMY_on(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SV_PADMY, 1)
-#define SvTEMP(sv) (SvFLAGS(sv) & SVs_TEMP)
-#define SvTEMP_on(sv) (SvFLAGS(sv) |= SVs_TEMP)
-#define SvTEMP_off(sv) (SvFLAGS(sv) &= ~SVs_TEMP)
-
-#define SvOBJECT(sv) (SvFLAGS(sv) & SVs_OBJECT)
-#define SvOBJECT_on(sv) (SvFLAGS(sv) |= SVs_OBJECT)
-#define SvOBJECT_off(sv) (SvFLAGS(sv) &= ~SVs_OBJECT)
-
-#define SvREADONLY(sv) (SvFLAGS(sv) & SVf_READONLY)
-#define SvREADONLY_on(sv) (SvFLAGS(sv) |= SVf_READONLY)
-#define SvREADONLY_off(sv) (SvFLAGS(sv) &= ~SVf_READONLY)
+#define SvTEMP(sv) ((U32)Parrot_PMC_get_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SV_TEMP))
+#define SvTEMP_on(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SV_TEMP, 1)
+#define SvTEMP_off(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SV_TEMP, 0)
+
+#define SvOBJECT(sv) ((U32)Parrot_PMC_get_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SV_OBJECT))
+#define SvOBJECT_on(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SV_OBJECT, 1)
+#define SvOBJECT_off(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SV_OBJECT, 0)
+
+#define SvREADONLY(sv) ((U32)Parrot_PMC_get_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SV_READONLY))
+#define SvREADONLY_on(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SV_READONLY, 1)
+#define SvREADONLY_off(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SV_READONLY, 0)
#define SvSCREAM(sv) (SvFLAGS(sv) & SVp_SCREAM)
#define SvSCREAM_on(sv) (SvFLAGS(sv) |= SVp_SCREAM)
1.30 +37 -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.29
retrieving revision 1.30
diff -u -w -r1.29 -r1.30
--- perl5cargo_cult.pmc 15 Oct 2004 14:28:41 -0000 1.29
+++ perl5cargo_cult.pmc 15 Oct 2004 15:04:12 -0000 1.30
@@ -1,7 +1,7 @@
/* Perl5QQQ.pmc -*- c -*-
* Copyright: 2001-2004 The Perl Foundation. All Rights Reserved.
* CVS Info
- * $Id: perl5cargo_cult.pmc,v 1.29 2004/10/15 14:28:41 nicholas Exp $
+ * $Id: perl5cargo_cult.pmc,v 1.30 2004/10/15 15:04:12 nicholas Exp $
* Overview:
* These are the vtable functions for the Perl5QQQ base class
* Data Structure and Algorithms:
@@ -183,6 +183,15 @@
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;
default:
croak ("Out of range or illegal key %d (max is %d) "
@@ -493,6 +502,33 @@
|= SVs_PADMY;
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;
default:
/* Hush gcc. There is a default. */;