cvs commit: ponie/src/pmc perl5cargo_cult.pmc
[email protected] (Nicholas Clark) 14 Oct 2004 18:04:37 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/10/14 11:04:37
Modified: perl sv.h
src/pmc perl5cargo_cult.pmc
Log:
Move SvIOK_only() and SvIOK_only_UV() to PMC
Revision Changes Path
1.31 +4 -4 ponie/perl/sv.h
Index: sv.h
===================================================================
RCS file: /cvs/public/ponie/perl/sv.h,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -w -r1.30 -r1.31
--- sv.h 14 Oct 2004 17:11:00 -0000 1.30
+++ sv.h 14 Oct 2004 18:04:37 -0000 1.31
@@ -428,6 +428,8 @@
Ponie_I_SVf_IOK,
Ponie_I_SVp_IOK,
Ponie_I_SVpf_IOK,
+ Ponie_I_SVpf_IOK_only,
+ Ponie_I_SVpf_IOK_only_exc_UV,
Ponie_I_SVf_NIOK,
Ponie_I_SVp_NIOK,
Ponie_I_SVpf_NIOK,
@@ -601,10 +603,8 @@
#define SvIOK(sv) ((U32)Parrot_PMC_get_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVf_IOK))
#define SvIOK_on(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVpf_IOK, 1)
#define SvIOK_off(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVpf_IOK, 0)
-#define SvIOK_only(sv) ((void)SvOK_off(sv), \
- SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
-#define SvIOK_only_UV(sv) ((void)SvOK_off_exc_UV(sv), \
- SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
+#define SvIOK_only(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVpf_IOK_only, 1)
+#define SvIOK_only_UV(sv) Parrot_PMC_set_intval_intkey(PL_Parrot,MUMBLE(sv), Ponie_I_SVpf_IOK_only_exc_UV, 1)
#define SvIOK_UV(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV)) \
== (SVf_IOK|SVf_IVisUV))
1.20 +31 -9 ponie/src/pmc/perl5cargo_cult.pmc
Index: perl5cargo_cult.pmc
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5cargo_cult.pmc,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -w -r1.19 -r1.20
--- perl5cargo_cult.pmc 14 Oct 2004 17:11:00 -0000 1.19
+++ perl5cargo_cult.pmc 14 Oct 2004 18:04:37 -0000 1.20
@@ -1,7 +1,7 @@
/* Perl5QQQ.pmc -*- c -*-
* Copyright: 2001-2004 The Perl Foundation. All Rights Reserved.
* CVS Info
- * $Id: perl5cargo_cult.pmc,v 1.19 2004/10/14 17:11:00 nicholas Exp $
+ * $Id: perl5cargo_cult.pmc,v 1.20 2004/10/14 18:04:37 nicholas Exp $
* Overview:
* These are the vtable functions for the Perl5QQQ base class
* Data Structure and Algorithms:
@@ -17,6 +17,20 @@
#undef HAS_OFF64_T
#include "perl.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));
+}
+
+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));
+}
+
pmclass Perl5QQQ dynpmc {
void init () {
@@ -119,18 +133,26 @@
case Ponie_I_SVf_OK:
if (!value) {
/* Only legal thing to do is turn this off. */
- assert_not_ROK(MUMBLE(SELF)) 0;
+ S_SvOK_off(SELF);
+ }
+ 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)
- &= ~(SVf_OK|SVf_AMAGIC|SVf_IVisUV|SVf_UTF8);
- SvOOK_off(MUMBLE(SELF));
+ |= (SVp_IOK|SVf_IOK);
}
case Ponie_I_SVf_OK_exc_UV:
if (!value) {
/* Only legal thing to do is turn this off. */
- assert_not_ROK(MUMBLE(SELF)) 0;
+ S_SvOK_off_exc_UV(SELF);
+ }
+ 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)
- &= ~(SVf_OK|SVf_AMAGIC|SVf_UTF8);
- SvOOK_off(MUMBLE(SELF));
+ |= (SVp_IOK|SVf_IOK);
}
case Ponie_I_SVp_IOK: