cvs commit: ponie/src/pmc perl5cargo_cult_static_get.c perl5pining.pmc perl5cargo_cult.pmc perl5cargo_cult_statics.c
[email protected] (Nicholas Clark) 2 May 2005 20:27:07 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 05/05/02 13:27:07
Modified: . write_makefile.pl
perl perl.c sv.c sv.h util.c
src/pmc perl5cargo_cult.pmc perl5cargo_cult_statics.c
Added: src/pmc perl5cargo_cult_static_get.c perl5pining.pmc
Log:
Add a new PMC type for scalars on the soon-to-be-dead queue used by S_del_SV
By squeezing SvANY and SvFLAGS into the main PMC body we don't need any
malloc()ed memory hanging from the PMC, which not only saves RAM but also
means that we don't need to have an active DESTROY method at the PMC level.
Revision Changes Path
1.11 +2 -2 ponie/write_makefile.pl
Index: write_makefile.pl
===================================================================
RCS file: /cvs/public/ponie/write_makefile.pl,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- write_makefile.pl 29 Apr 2005 22:11:31 -0000 1.10
+++ write_makefile.pl 2 May 2005 20:27:07 -0000 1.11
@@ -10,7 +10,7 @@
my $top = $FindBin::Bin;
my @allPMCs
- = qw(cargo_cult base null
+ = qw(cargo_cult base null pining
iv nv rv pv pviv pvnv pvmg pvbm pvgv pvlv pvav pvhv pvcv pvfm pvio);
my $parrotdir = "$top/parrot";
1.23 +8 -4 ponie/perl/perl.c
Index: perl.c
===================================================================
RCS file: /cvs/public/ponie/perl/perl.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- perl.c 1 May 2005 22:11:41 -0000 1.22
+++ perl.c 2 May 2005 20:27:07 -0000 1.23
@@ -211,9 +211,9 @@
const char *name;
} Ponie_pmc_init;
-#define PONIE_PMC_INIT(a) {CAT2(Ponie_PMC_Perl5_,a), "Perl5" STRINGIFY(a)}
+#define PONIE_PMC_INIT(a) {CAT2(SVt_,a), "Perl5" STRINGIFY(a)}
/* So PONIE_PMC_INIT(PVMG) goes to
- {Ponie_PMC_Perl5_PVMG, "Perl5PVMG"},\
+ {SVt_PVMG, "Perl5PVMG"},\
*/
void
@@ -231,10 +231,10 @@
#ifdef USE_ITHREADS
MUTEX_LOCK(&PL_pmcname_mutex);
#endif
- if (PL_pmcname[Ponie_PMC_ZERO] == 0) {
+ if (PL_pmcname[0] == 0) {
const static Ponie_pmc_init s[] =
{
- {Ponie_PMC_Perl5_NULL, "Perl5NULL"},
+ {SVt_NULL, "Perl5NULL"},
PONIE_PMC_INIT (IV),
PONIE_PMC_INIT (NV),
PONIE_PMC_INIT (RV),
@@ -250,6 +250,10 @@
PONIE_PMC_INIT (PVCV),
PONIE_PMC_INIT (PVFM),
PONIE_PMC_INIT (PVIO),
+ /* FIXME. Or at least THINKABOUTME. This code will put the pining
+ PMC in the reverse mapping table as a distinct type. Should it
+ reverse map as SVt_NULL? */
+ {Ponie_PMC_Perl5Pining, "Perl5Pining"},
{Ponie_PMC_Perl5_MAX, NULL}
};
const Ponie_pmc_init *i = s;
1.79 +5 -2 ponie/perl/sv.c
Index: sv.c
===================================================================
RCS file: /cvs/public/ponie/perl/sv.c,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -r1.78 -r1.79
--- sv.c 1 May 2005 22:11:41 -0000 1.78
+++ sv.c 2 May 2005 20:27:07 -0000 1.79
@@ -181,7 +181,7 @@
STATIC SV*
S_new_SV(pTHX)
{
- Parrot_PMC sv = Parrot_PMC_new(PL_Parrot, PL_pmcname[Ponie_PMC_Perl5_NULL]);
+ Parrot_PMC sv = Parrot_PMC_new(PL_Parrot, PL_pmcname[SVt_NULL]);
Parrot_register_pmc(PL_Parrot, sv);
sv = MUMBLE(sv);
LOCK_SV_MUTEX;
@@ -251,7 +251,10 @@
FREE_SV_DEBUG_FILE(p);
/* Is the SV mutex needed outside 5005 threads? */
LOCK_SV_MUTEX;
- SvANY_set(p, (void *)PL_sv_root);
+ Parrot_PMC_set_pointer_intkey(PL_Parrot, MUMBLE(p),
+ Ponie_P_PINE_FOR_FJORDS,
+ (void *)PL_sv_root
+ );
PL_sv_root = (p);
UNLOCK_SV_MUTEX;
}
1.82 +4 -18 ponie/perl/sv.h
Index: sv.h
===================================================================
RCS file: /cvs/public/ponie/perl/sv.h,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -r1.81 -r1.82
--- sv.h 1 May 2005 22:11:41 -0000 1.81
+++ sv.h 2 May 2005 20:27:07 -0000 1.82
@@ -59,7 +59,8 @@
SVt_PVHV, /* 12 */
SVt_PVCV, /* 13 */
SVt_PVFM, /* 14 */
- SVt_PVIO /* 15 */
+ SVt_PVIO, /* 15 */
+ SVt_MAX
} svtype;
/* Using C's structural equivalence to help emulate C++ inheritance here... */
@@ -180,23 +181,7 @@
#endif
typedef enum {
- Ponie_PMC_ZERO = 0,
- Ponie_PMC_Perl5_NULL = 0,
- Ponie_PMC_Perl5_IV,
- Ponie_PMC_Perl5_NV,
- Ponie_PMC_Perl5_RV,
- Ponie_PMC_Perl5_PV,
- Ponie_PMC_Perl5_PVIV,
- Ponie_PMC_Perl5_PVNV,
- Ponie_PMC_Perl5_PVMG,
- Ponie_PMC_Perl5_PVBM,
- Ponie_PMC_Perl5_PVGV,
- Ponie_PMC_Perl5_PVLV,
- Ponie_PMC_Perl5_PVAV,
- Ponie_PMC_Perl5_PVHV,
- Ponie_PMC_Perl5_PVCV,
- Ponie_PMC_Perl5_PVFM,
- Ponie_PMC_Perl5_PVIO,
+ Ponie_PMC_Perl5Pining = SVt_MAX,
Ponie_PMC_Perl5_MAX
} Ponie_pmcs;
@@ -265,6 +250,7 @@
Ponie_P_UNGLOB, /* Special things for sv_unglob */
Ponie_P_NEWRV_HACK, /* Special things for newSVrv */
Ponie_P_REPLACE, /* Special things for sv_replace */
+ Ponie_P_PINE_FOR_FJORDS, /* Free all internal storage and play dead */
Ponie_P_MAX
} Ponie_pointers;
1.15 +1 -1 ponie/perl/util.c
Index: util.c
===================================================================
RCS file: /cvs/public/ponie/perl/util.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- util.c 1 May 2005 22:11:41 -0000 1.14
+++ util.c 2 May 2005 20:27:07 -0000 1.15
@@ -867,7 +867,7 @@
/* Create as PVMG now, to avoid any upgrading later */
- pvpvmg = Parrot_PMC_new(PL_Parrot, PL_pmcname[Ponie_PMC_Perl5_PVMG]);
+ pvpvmg = Parrot_PMC_new(PL_Parrot, PL_pmcname[SVt_PVMG]);
Parrot_register_pmc(PL_Parrot, pvpvmg);
sv = MUMBLE(pvpvmg);
1.59 +22 -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.58
retrieving revision 1.59
diff -u -r1.58 -r1.59
--- perl5cargo_cult.pmc 1 May 2005 21:00:49 -0000 1.58
+++ perl5cargo_cult.pmc 2 May 2005 20:27:07 -0000 1.59
@@ -555,6 +555,27 @@
case Ponie_P_GET_UPGRADE:
Perl_croak(aTHX_ "Can't upgrade that kind of scalar");
break;
+ case Ponie_P_PINE_FOR_FJORDS:
+ {
+ U32 flags = PERL5_FLAGS(SELF);
+
+ assert(PMC_struct_val(SELF));
+ assert(!PERL5_REFCNT(SELF));
+
+ free(PMC_struct_val(SELF));
+ PMC_struct_val(SELF) = 0;
+ PObj_active_destroy_CLEAR(SELF);
+
+ SELF->vtable
+ = Parrot_base_vtables[PL_pmcname[Ponie_PMC_Perl5Pining]];
+
+ /* Collusion with the internals of the Perl5Pining PMC.
+ Not convinced that I want to give it a public way to set
+ the flags, as after creation they should be read only. */
+ PObj_bufstart(pmc) = value;
+ PObj_buflen(pmc) = flags;
+ break;
+ }
default:
croak ("Out of range or illegal key %d (max is %d), value %p"
" set_pointer_keyed_int", key, Ponie_P_MAX - 1, value);
1.3 +4 -122 ponie/src/pmc/perl5cargo_cult_statics.c
Index: perl5cargo_cult_statics.c
===================================================================
RCS file: /cvs/public/ponie/src/pmc/perl5cargo_cult_statics.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- perl5cargo_cult_statics.c 1 May 2005 21:00:49 -0000 1.2
+++ perl5cargo_cult_statics.c 2 May 2005 20:27:07 -0000 1.3
@@ -13,6 +13,8 @@
* References:
*/
+#include "perl5cargo_cult_static_get.c"
+
static void S_SvOK_off(PMC *pmc) {
assert_not_ROK(MUMBLE(pmc)) 0;
PERL5_FLAGS(pmc) &= ~(SVf_OK|SVf_AMAGIC|SVf_IVisUV|SVf_UTF8);
@@ -25,126 +27,6 @@
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_REFCNT:
- return PERL5_REFCNT(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)
{
@@ -160,7 +42,7 @@
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;
+ ((struct STRUCT_SV *)PMC_struct_val(pmc))->sv_any = (void *) 0xDEAD;
return;
case Ponie_I_SV_REFCNT:
PERL5_REFCNT(pmc) = value;
1.1 ponie/src/pmc/perl5cargo_cult_static_get.c
Index: perl5cargo_cult_static_get.c
===================================================================
/* perl5cargo_cult_statics.pmc -*- c -*-
* Copyright: 2005 The Perl Foundation. All Rights Reserved.
* CVS Info
* $Id: perl5cargo_cult_static_get.c,v 1.1 2005/05/02 20:27:07 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 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_REFCNT:
return PERL5_REFCNT(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;
}
/*
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*
* vim: expandtab shiftwidth=4:
*/
1.1 ponie/src/pmc/perl5pining.pmc
Index: perl5pining.pmc
===================================================================
/* Perl5NULL.pmc -*- c -*-
* Copyright: 2005 The Perl Foundation. All Rights Reserved.
* CVS Info
* $Id: perl5pining.pmc,v 1.1 2005/05/02 20:27:07 nicholas Exp $
* Overview:
* These are the vtable functions for PMCs that are marked for destruction
* sometime soon. They're not dead. They're just pining for the fjords.
* Data Structure and Algorithms:
* History:
* Notes:
* References:
*/
#include "ponie.h"
#define PERL5_FLAGS(pmc) PObj_buflen(pmc)
#define PERL5_REFCNT(pmc) 0
#include "perl5cargo_cult_static_get.c"
pmclass Perl5Pining dynpmc group Perl5_group {
INTVAL get_integer_keyed_int(INTVAL key) {
return S_get_integer_keyed_int(SELF, key);
}
void set_pointer_keyed_int(INTVAL key, void *value) {
switch (key) {
case Ponie_P_ANY:
PObj_bufstart(pmc) = value;
break;
default:
croak ("Out of range or illegal key %d (max is %d), value %p"
" set_pointer_keyed_int", key, Ponie_P_MAX - 1, value);
}
return;
}
void* get_pointer_keyed_int(INTVAL key) {
switch (key) {
case Ponie_P_ANY:
return PObj_bufstart(pmc);
default:
croak ("Out of range or illegal key %d (max is %d)"
" get_pointer_keyed_int", key, Ponie_P_MAX - 1);
}
return 0;
}
}
/*
* Local variables:
* c-indentation-style: bsd
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*
* vim: expandtab shiftwidth=4:
*/