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: