cvs commit: ponie/src/pmc perl5cargo_cult.pmc
[email protected] (Nicholas Clark) 4 Nov 2004 08:38:41 -0000
| Newsgroups | perl.ponie.changes |
|---|---|
| Message-ID | <[email protected]> |
cvsuser 04/11/04 00:38:41
Modified: perl sv.c sv.h
src/pmc perl5cargo_cult.pmc
Log:
IO, IO, it's off to PMC we go.
Revision Changes Path
1.54 +17 -85 ponie/perl/sv.c
Index: sv.c
===================================================================
RCS file: /cvs/public/ponie/perl/sv.c,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -r1.53 -r1.54
--- sv.c 4 Nov 2004 07:40:08 -0000 1.53
+++ sv.c 4 Nov 2004 08:38:41 -0000 1.54
@@ -1150,139 +1150,71 @@
}
PerlIO** Perl_macro_IoIFP (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_ifp);
- }
- return &((XPVIO*)SvANY(sv))->xio_ifp;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOIFP);
}
PerlIO** Perl_macro_IoOFP (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_ofp);
- }
- return &((XPVIO*)SvANY(sv))->xio_ofp;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOOFP);
}
DIR** Perl_macro_IoDIRP (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_dirp);
- }
- return &((XPVIO*)SvANY(sv))->xio_dirp;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IODIRP);
}
void** Perl_macro_IoANY (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_any);
- }
- return &((XPVIO*)SvANY(sv))->xio_any;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOANY);
}
IV* Perl_macro_IoLINES (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_lines);
- }
- return &((XPVIO*)SvANY(sv))->xio_lines;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOLINES);
}
IV* Perl_macro_IoPAGE (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_page);
- }
- return &((XPVIO*)SvANY(sv))->xio_page;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOPAGE);
}
IV* Perl_macro_IoPAGE_LEN (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_page_len);
- }
- return &((XPVIO*)SvANY(sv))->xio_page_len;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOPAGE_LEN);
}
IV* Perl_macro_IoLINES_LEFT (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_lines_left);
- }
- return &((XPVIO*)SvANY(sv))->xio_lines_left;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOLINES_LEFT);
}
char** Perl_macro_IoTOP_NAME (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_top_name);
- }
- return &((XPVIO*)SvANY(sv))->xio_top_name;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOTOP_NAME);
}
GV** Perl_macro_IoTOP_GV (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_top_gv);
- }
- return &((XPVIO*)SvANY(sv))->xio_top_gv;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOTOP_GV);
}
char** Perl_macro_IoFMT_NAME (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_fmt_name);
- }
- return &((XPVIO*)SvANY(sv))->xio_fmt_name;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOFMT_NAME);
}
GV** Perl_macro_IoFMT_GV (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_fmt_gv);
- }
- return &((XPVIO*)SvANY(sv))->xio_fmt_gv;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOFMT_GV);
}
char** Perl_macro_IoBOTTOM_NAME (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_bottom_name);
- }
- return &((XPVIO*)SvANY(sv))->xio_bottom_name;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOBOTTOM_NAME);
}
GV** Perl_macro_IoBOTTOM_GV (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_bottom_gv);
- }
- return &((XPVIO*)SvANY(sv))->xio_bottom_gv;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOBOTTOM_GV);
}
short* Perl_macro_IoSUBPROCESS (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_subprocess);
- }
- return &((XPVIO*)SvANY(sv))->xio_subprocess;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOSUBPROCESS);
}
char* Perl_macro_IoTYPE (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_type);
- }
- return &((XPVIO*)SvANY(sv))->xio_type;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOTYPE);
}
char* Perl_macro_IoFLAGS (pTHX_ SV *sv) {
- if(SvPMC(sv)) {
- XPVIO* data = (XPVIO*) /**/ SvANY(sv);
- return &(data->xio_flags);
- }
- return &((XPVIO*)SvANY(sv))->xio_flags;
+ return Parrot_PMC_get_pointer_intkey(PL_Parrot,MUMBLE(sv), Ponie_P_IOFLAGS);
}
HV** Perl_macro_CvSTASH (pTHX_ SV *sv) {
1.57 +17 -0 ponie/perl/sv.h
Index: sv.h
===================================================================
RCS file: /cvs/public/ponie/perl/sv.h,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -r1.56 -r1.57
--- sv.h 4 Nov 2004 07:40:08 -0000 1.56
+++ sv.h 4 Nov 2004 08:38:41 -0000 1.57
@@ -211,6 +211,23 @@
Ponie_P_TARG, /* &LvTARG pointer */
Ponie_P_TARGOFF, /* &LvTARGOFF pointer */
Ponie_P_TARGLEN, /* &LvTARGLEN pointer */
+ Ponie_P_IOIFP, /* &IoIFP pointer */
+ Ponie_P_IOOFP, /* &IoOFP pointer */
+ Ponie_P_IODIRP, /* &IoDIRP pointer */
+ Ponie_P_IOANY, /* &IoANY pointer */
+ Ponie_P_IOLINES, /* &IoLINES pointer */
+ Ponie_P_IOPAGE, /* &IoPAGE pointer */
+ Ponie_P_IOPAGE_LEN, /* &IoPAGE_LEN pointer */
+ Ponie_P_IOLINES_LEFT, /* &IoLINES_LEFT pointer */
+ Ponie_P_IOTOP_NAME, /* &IoTOP_NAME pointer */
+ Ponie_P_IOTOP_GV, /* &IoTOP_GV pointer */
+ Ponie_P_IOFMT_NAME, /* &IoFMT_NAME pointer */
+ Ponie_P_IOFMT_GV, /* &IoFMT_GV pointer */
+ Ponie_P_IOBOTTOM_NAME, /* &IoBOTTOM_NAME pointer */
+ Ponie_P_IOBOTTOM_GV, /* &IoBOTTOM_GV pointer */
+ Ponie_P_IOSUBPROCESS, /* &IoSUBPROCESS pointer */
+ Ponie_P_IOTYPE, /* &IoTYPE pointer */
+ Ponie_P_IOFLAGS, /* &IoFLAGS pointer */
Ponie_P_RVX_0, /* Clear SvRVX pointer */
Ponie_P_PVX_0, /* Clear SvPVX pointer */
Ponie_P_MAX
1.43 +171 -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.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- perl5cargo_cult.pmc 4 Nov 2004 07:40:09 -0000 1.42
+++ perl5cargo_cult.pmc 4 Nov 2004 08:38:41 -0000 1.43
@@ -1,7 +1,7 @@
/* Perl5QQQ.pmc -*- c -*-
* Copyright: 2001-2004 The Perl Foundation. All Rights Reserved.
* CVS Info
- * $Id: perl5cargo_cult.pmc,v 1.42 2004/11/04 07:40:09 nicholas Exp $
+ * $Id: perl5cargo_cult.pmc,v 1.43 2004/11/04 08:38:41 nicholas Exp $
* Overview:
* These are the vtable functions for the Perl5QQQ base class
* Data Structure and Algorithms:
@@ -194,6 +194,176 @@
assert (any);
return &(any->xlv_targlen);
}
+ case Ponie_P_IOIFP:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_ifp);
+ }
+ case Ponie_P_IOOFP:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_ofp);
+ }
+ case Ponie_P_IODIRP:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_dirp);
+ }
+ case Ponie_P_IOANY:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_any);
+ }
+ case Ponie_P_IOLINES:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_lines);
+ }
+ case Ponie_P_IOPAGE:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_page);
+ }
+ case Ponie_P_IOPAGE_LEN:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_page_len);
+ }
+ case Ponie_P_IOLINES_LEFT:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_lines_left);
+ }
+ case Ponie_P_IOTOP_NAME:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_top_name);
+ }
+ case Ponie_P_IOTOP_GV:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_top_gv);
+ }
+ case Ponie_P_IOFMT_NAME:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_fmt_name);
+ }
+ case Ponie_P_IOFMT_GV:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_fmt_gv);
+ }
+ case Ponie_P_IOBOTTOM_NAME:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_bottom_name);
+ }
+ case Ponie_P_IOBOTTOM_GV:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_bottom_gv);
+ }
+ case Ponie_P_IOSUBPROCESS:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_subprocess);
+ }
+ case Ponie_P_IOTYPE:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_type);
+ }
+ case Ponie_P_IOFLAGS:
+ {
+ struct STRUCT_SV* sv = PMC_struct_val(SELF);
+ XPVIO *any;
+
+ assert (sv);
+ any = (XPVIO *)sv->sv_any;
+ assert (any);
+ return &(any->xio_flags);
+ }
case Ponie_P_IVX:
case Ponie_P_UVX:
case Ponie_P_AVOFF: