cvs commit: ponie/perl/pod perlapi.pod

[email protected] (Nicholas Clark) 10 Mar 2004 23:07:23 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
cvsuser     04/03/10 15:07:23

  Modified:    perl     embed.fnc embed.h global.sym proto.h sv.c sv.h
               perl/pod perlapi.pod
  Log:
  Wrappers for RVs, IOs, Formats and BM scalars
  
  Revision  Changes    Path
  1.14      +23 -0     ponie/perl/embed.fnc
  
  Index: embed.fnc
  ===================================================================
  RCS file: /cvs/public/ponie/perl/embed.fnc,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -w -r1.13 -r1.14
  --- embed.fnc	4 Mar 2004 12:10:16 -0000	1.13
  +++ embed.fnc	10 Mar 2004 23:07:23 -0000	1.14
  @@ -997,6 +997,29 @@
   Ap	|SV**	|macro_LvTARG	|SV *
   Ap	|STRLEN*	|macro_LvTARGLEN	|SV *
   Ap	|STRLEN*	|macro_LvTARGOFF	|SV *
  +Ap	|SV**	|macro_SvRV	|SV *
  +Ap	|U8*	|macro_BmRARE	|SV *
  +Ap	|I32*	|macro_BmUSEFUL	|SV *
  +Ap	|U16*	|macro_BmPREVIOUS	|SV *
  +Ap	|IV*	|macro_FmLINES	|SV *
  +Ap	|PerlIO**	|macro_IoIFP	|SV *
  +Ap	|PerlIO**	|macro_IoOFP	|SV *
  +Ap	|DIR**	|macro_IoDIRP	|SV *
  +Ap	|void**	|macro_IoANY	|SV *
  +Ap	|IV*	|macro_IoLINES	|SV *
  +Ap	|IV*	|macro_IoPAGE	|SV *
  +Ap	|IV*	|macro_IoPAGE_LEN	|SV *
  +Ap	|IV*	|macro_IoLINES_LEFT	|SV *
  +Ap	|char**	|macro_IoTOP_NAME	|SV *
  +Ap	|GV **	|macro_IoTOP_GV	|SV *
  +Ap	|char**	|macro_IoFMT_NAME	|SV *
  +Ap	|GV**	|macro_IoFMT_GV	|SV *
  +Ap	|char**	|macro_IoBOTTOM_NAME	|SV *
  +Ap	|GV**	|macro_IoBOTTOM_GV	|SV *
  +Ap	|short*	|macro_IoSUBPROCESS	|SV *
  +Ap	|char*	|macro_IoTYPE	|SV *
  +Ap	|char*	|macro_IoFLAGS	|SV *
  +
   
   END_EXTERN_C
   
  
  
  
  1.11      +44 -0     ponie/perl/embed.h
  
  Index: embed.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/embed.h,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -w -r1.10 -r1.11
  --- embed.h	29 Feb 2004 18:02:19 -0000	1.10
  +++ embed.h	10 Mar 2004 23:07:23 -0000	1.11
  @@ -1283,6 +1283,28 @@
   #define macro_LvTARG		Perl_macro_LvTARG
   #define macro_LvTARGLEN		Perl_macro_LvTARGLEN
   #define macro_LvTARGOFF		Perl_macro_LvTARGOFF
  +#define macro_SvRV		Perl_macro_SvRV
  +#define macro_BmRARE		Perl_macro_BmRARE
  +#define macro_BmUSEFUL		Perl_macro_BmUSEFUL
  +#define macro_BmPREVIOUS	Perl_macro_BmPREVIOUS
  +#define macro_FmLINES		Perl_macro_FmLINES
  +#define macro_IoIFP		Perl_macro_IoIFP
  +#define macro_IoOFP		Perl_macro_IoOFP
  +#define macro_IoDIRP		Perl_macro_IoDIRP
  +#define macro_IoANY		Perl_macro_IoANY
  +#define macro_IoLINES		Perl_macro_IoLINES
  +#define macro_IoPAGE		Perl_macro_IoPAGE
  +#define macro_IoPAGE_LEN	Perl_macro_IoPAGE_LEN
  +#define macro_IoLINES_LEFT	Perl_macro_IoLINES_LEFT
  +#define macro_IoTOP_NAME	Perl_macro_IoTOP_NAME
  +#define macro_IoTOP_GV		Perl_macro_IoTOP_GV
  +#define macro_IoFMT_NAME	Perl_macro_IoFMT_NAME
  +#define macro_IoFMT_GV		Perl_macro_IoFMT_GV
  +#define macro_IoBOTTOM_NAME	Perl_macro_IoBOTTOM_NAME
  +#define macro_IoBOTTOM_GV	Perl_macro_IoBOTTOM_GV
  +#define macro_IoSUBPROCESS	Perl_macro_IoSUBPROCESS
  +#define macro_IoTYPE		Perl_macro_IoTYPE
  +#define macro_IoFLAGS		Perl_macro_IoFLAGS
   #if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
   #ifdef PERL_CORE
   #define do_trans_simple		S_do_trans_simple
  @@ -3793,6 +3815,28 @@
   #define macro_LvTARG(a)		Perl_macro_LvTARG(aTHX_ a)
   #define macro_LvTARGLEN(a)	Perl_macro_LvTARGLEN(aTHX_ a)
   #define macro_LvTARGOFF(a)	Perl_macro_LvTARGOFF(aTHX_ a)
  +#define macro_SvRV(a)		Perl_macro_SvRV(aTHX_ a)
  +#define macro_BmRARE(a)		Perl_macro_BmRARE(aTHX_ a)
  +#define macro_BmUSEFUL(a)	Perl_macro_BmUSEFUL(aTHX_ a)
  +#define macro_BmPREVIOUS(a)	Perl_macro_BmPREVIOUS(aTHX_ a)
  +#define macro_FmLINES(a)	Perl_macro_FmLINES(aTHX_ a)
  +#define macro_IoIFP(a)		Perl_macro_IoIFP(aTHX_ a)
  +#define macro_IoOFP(a)		Perl_macro_IoOFP(aTHX_ a)
  +#define macro_IoDIRP(a)		Perl_macro_IoDIRP(aTHX_ a)
  +#define macro_IoANY(a)		Perl_macro_IoANY(aTHX_ a)
  +#define macro_IoLINES(a)	Perl_macro_IoLINES(aTHX_ a)
  +#define macro_IoPAGE(a)		Perl_macro_IoPAGE(aTHX_ a)
  +#define macro_IoPAGE_LEN(a)	Perl_macro_IoPAGE_LEN(aTHX_ a)
  +#define macro_IoLINES_LEFT(a)	Perl_macro_IoLINES_LEFT(aTHX_ a)
  +#define macro_IoTOP_NAME(a)	Perl_macro_IoTOP_NAME(aTHX_ a)
  +#define macro_IoTOP_GV(a)	Perl_macro_IoTOP_GV(aTHX_ a)
  +#define macro_IoFMT_NAME(a)	Perl_macro_IoFMT_NAME(aTHX_ a)
  +#define macro_IoFMT_GV(a)	Perl_macro_IoFMT_GV(aTHX_ a)
  +#define macro_IoBOTTOM_NAME(a)	Perl_macro_IoBOTTOM_NAME(aTHX_ a)
  +#define macro_IoBOTTOM_GV(a)	Perl_macro_IoBOTTOM_GV(aTHX_ a)
  +#define macro_IoSUBPROCESS(a)	Perl_macro_IoSUBPROCESS(aTHX_ a)
  +#define macro_IoTYPE(a)		Perl_macro_IoTYPE(aTHX_ a)
  +#define macro_IoFLAGS(a)	Perl_macro_IoFLAGS(aTHX_ a)
   #if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
   #ifdef PERL_CORE
   #define do_trans_simple(a)	S_do_trans_simple(aTHX_ a)
  
  
  
  1.11      +22 -0     ponie/perl/global.sym
  
  Index: global.sym
  ===================================================================
  RCS file: /cvs/public/ponie/perl/global.sym,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -w -r1.10 -r1.11
  --- global.sym	29 Feb 2004 18:02:19 -0000	1.10
  +++ global.sym	10 Mar 2004 23:07:23 -0000	1.11
  @@ -656,6 +656,28 @@
   Perl_macro_LvTARG
   Perl_macro_LvTARGLEN
   Perl_macro_LvTARGOFF
  +Perl_macro_SvRV
  +Perl_macro_BmRARE
  +Perl_macro_BmUSEFUL
  +Perl_macro_BmPREVIOUS
  +Perl_macro_FmLINES
  +Perl_macro_IoIFP
  +Perl_macro_IoOFP
  +Perl_macro_IoDIRP
  +Perl_macro_IoANY
  +Perl_macro_IoLINES
  +Perl_macro_IoPAGE
  +Perl_macro_IoPAGE_LEN
  +Perl_macro_IoLINES_LEFT
  +Perl_macro_IoTOP_NAME
  +Perl_macro_IoTOP_GV
  +Perl_macro_IoFMT_NAME
  +Perl_macro_IoFMT_GV
  +Perl_macro_IoBOTTOM_NAME
  +Perl_macro_IoBOTTOM_GV
  +Perl_macro_IoSUBPROCESS
  +Perl_macro_IoTYPE
  +Perl_macro_IoFLAGS
   Perl_Slab_Alloc
   Perl_Slab_Free
   Perl_sv_setsv_flags
  
  
  
  1.14      +23 -0     ponie/perl/proto.h
  
  Index: proto.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/proto.h,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -w -r1.13 -r1.14
  --- proto.h	4 Mar 2004 12:10:16 -0000	1.13
  +++ proto.h	10 Mar 2004 23:07:23 -0000	1.14
  @@ -955,6 +955,29 @@
   PERL_CALLCONV SV**	Perl_macro_LvTARG(pTHX_ SV *);
   PERL_CALLCONV STRLEN*	Perl_macro_LvTARGLEN(pTHX_ SV *);
   PERL_CALLCONV STRLEN*	Perl_macro_LvTARGOFF(pTHX_ SV *);
  +PERL_CALLCONV SV**	Perl_macro_SvRV(pTHX_ SV *);
  +PERL_CALLCONV U8*	Perl_macro_BmRARE(pTHX_ SV *);
  +PERL_CALLCONV I32*	Perl_macro_BmUSEFUL(pTHX_ SV *);
  +PERL_CALLCONV U16*	Perl_macro_BmPREVIOUS(pTHX_ SV *);
  +PERL_CALLCONV IV*	Perl_macro_FmLINES(pTHX_ SV *);
  +PERL_CALLCONV PerlIO**	Perl_macro_IoIFP(pTHX_ SV *);
  +PERL_CALLCONV PerlIO**	Perl_macro_IoOFP(pTHX_ SV *);
  +PERL_CALLCONV DIR**	Perl_macro_IoDIRP(pTHX_ SV *);
  +PERL_CALLCONV void**	Perl_macro_IoANY(pTHX_ SV *);
  +PERL_CALLCONV IV*	Perl_macro_IoLINES(pTHX_ SV *);
  +PERL_CALLCONV IV*	Perl_macro_IoPAGE(pTHX_ SV *);
  +PERL_CALLCONV IV*	Perl_macro_IoPAGE_LEN(pTHX_ SV *);
  +PERL_CALLCONV IV*	Perl_macro_IoLINES_LEFT(pTHX_ SV *);
  +PERL_CALLCONV char**	Perl_macro_IoTOP_NAME(pTHX_ SV *);
  +PERL_CALLCONV GV **	Perl_macro_IoTOP_GV(pTHX_ SV *);
  +PERL_CALLCONV char**	Perl_macro_IoFMT_NAME(pTHX_ SV *);
  +PERL_CALLCONV GV**	Perl_macro_IoFMT_GV(pTHX_ SV *);
  +PERL_CALLCONV char**	Perl_macro_IoBOTTOM_NAME(pTHX_ SV *);
  +PERL_CALLCONV GV**	Perl_macro_IoBOTTOM_GV(pTHX_ SV *);
  +PERL_CALLCONV short*	Perl_macro_IoSUBPROCESS(pTHX_ SV *);
  +PERL_CALLCONV char*	Perl_macro_IoTYPE(pTHX_ SV *);
  +PERL_CALLCONV char*	Perl_macro_IoFLAGS(pTHX_ SV *);
  +
   
   END_EXTERN_C
   
  
  
  
  1.16      +182 -1    ponie/perl/sv.c
  
  Index: sv.c
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.c,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -w -r1.15 -r1.16
  --- sv.c	2 Mar 2004 13:00:21 -0000	1.15
  +++ sv.c	10 Mar 2004 23:07:23 -0000	1.16
  @@ -1288,6 +1288,17 @@
     return &((XPVMG*)SvANY(sv))->xmg_stash;
   }
   
  +
  +SV** Perl_macro_SvRV (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XRV* data = (XRV*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xrv_rv);
  +  }
  +  return &((XRV*)SvANY(sv))->xrv_rv;
  +}
  +
  +
  +
   UV* Perl_macro_SvUVX (pTHX_ SV *sv) {
     if(SvPMC(sv)) {
       XPVUV* data = (XPVUV*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  @@ -1339,7 +1350,39 @@
       return &(data->xpv_cur);
     }
     return &((XPV*)SvANY(sv))->xpv_cur;
  +}
  +
  +
  +U8* Perl_macro_BmRARE (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVBM* data = (XPVBM*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xbm_rare);
  +  }
  +  return &((XPVBM*)SvANY(sv))->xbm_rare;
  +}
  +
  +I32* Perl_macro_BmUSEFUL (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVBM* data = (XPVBM*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xbm_useful);
  +  }
  +  return &((XPVBM*)SvANY(sv))->xbm_useful;
  +}
  +
  +U16* Perl_macro_BmPREVIOUS (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVBM* data = (XPVBM*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xbm_previous);
  +  }
  +  return &((XPVBM*)SvANY(sv))->xbm_previous;
  +}
     
  +IV* Perl_macro_FmLINES (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVFM* data = (XPVFM*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xfm_lines);
  +  }
  +  return &((XPVFM*)SvANY(sv))->xfm_lines;
   }
   
   char* Perl_macro_LvTYPE (pTHX_ SV* sv) {
  @@ -1373,6 +1416,144 @@
     data = (XPVLV*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));  
     return &(data->xlv_targlen);  
   }
  +
  +PerlIO** Perl_macro_IoIFP (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_ifp);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_ifp;
  +}
  +
  +PerlIO** Perl_macro_IoOFP (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_ofp);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_ofp;
  +}
  +
  +DIR** Perl_macro_IoDIRP (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_dirp);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_dirp;
  +}
  +
  +void** Perl_macro_IoANY (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_any);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_any;
  +}
  +
  +IV* Perl_macro_IoLINES (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_lines);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_lines;
  +}
  +
  +IV* Perl_macro_IoPAGE (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_page);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_page;
  +}
  +
  +IV* Perl_macro_IoPAGE_LEN (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_page_len);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_page_len;
  +}
  +
  +IV* Perl_macro_IoLINES_LEFT (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_lines_left);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_lines_left;
  +}
  +
  +char** Perl_macro_IoTOP_NAME (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_top_name);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_top_name;
  +}
  +
  +GV** Perl_macro_IoTOP_GV (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_top_gv);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_top_gv;
  +}
  +
  +char** Perl_macro_IoFMT_NAME (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_fmt_name);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_fmt_name;
  +}
  +
  +GV** Perl_macro_IoFMT_GV (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_fmt_gv);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_fmt_gv;
  +}
  +
  +char** Perl_macro_IoBOTTOM_NAME (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_bottom_name);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_bottom_name;
  +}
  +
  +GV** Perl_macro_IoBOTTOM_GV (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_bottom_gv);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_bottom_gv;
  +}
  +
  +short* Perl_macro_IoSUBPROCESS (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_subprocess);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_subprocess;
  +}
  +
  +char* Perl_macro_IoTYPE (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_type);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_type;
  +}
  +
  +char* Perl_macro_IoFLAGS (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVIO* data = (XPVIO*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xio_flags);
  +  }
  +  return &((XPVIO*)SvANY(sv))->xio_flags;
  +}
  +
  +
   
   /*
   =for apidoc sv_upgrade
  
  
  
  1.12      +22 -22    ponie/perl/sv.h
  
  Index: sv.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.h,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -w -r1.11 -r1.12
  --- sv.h	2 Mar 2004 12:03:02 -0000	1.11
  +++ sv.h	10 Mar 2004 23:07:23 -0000	1.12
  @@ -734,7 +734,7 @@
   #define SvREPADTMP_off(sv)	(SvFLAGS(sv) &= ~SVf_FAKE)
   #endif
   
  -#define SvRV(sv) ((XRV*)  SvANY(sv))->xrv_rv
  +#define SvRV(sv) (* Perl_macro_SvRV(aTHX_ (SV*) (sv)))
   #define SvRVx(sv) SvRV(sv)
   
   #define SvIVX(sv) (* Perl_macro_SvIVX(aTHX_ (SV*) (sv)))
  @@ -780,34 +780,34 @@
   	STMT_START { assert(SvTYPE(sv) >= SVt_PV); \
   		(SvCUR(sv) = val - SvPVX(sv)); } STMT_END
   
  -#define BmRARE(sv)	((XPVBM*)  SvANY(sv))->xbm_rare
  -#define BmUSEFUL(sv)	((XPVBM*)  SvANY(sv))->xbm_useful
  -#define BmPREVIOUS(sv)	((XPVBM*)  SvANY(sv))->xbm_previous
  +#define BmRARE(sv)	(* Perl_macro_BmRARE(aTHX_ (SV*)(sv)))
  +#define BmUSEFUL(sv)	(* Perl_macro_BmUSEFUL(aTHX_ (SV*)(sv)))
  +#define BmPREVIOUS(sv)	(* Perl_macro_BmPREVIOUS(aTHX_ (SV*)(sv)))
   
  -#define FmLINES(sv)	((XPVFM*)  SvANY(sv))->xfm_lines
  +#define FmLINES(sv)	(* Perl_macro_BmPREVIOUS(aTHX_ (SV*)(sv)))
   
   #define LvTYPE(sv)      (*Perl_macro_LvTYPE(aTHX_ (SV*)(sv)))
   #define LvTARG(sv)      ((SV*)*Perl_macro_LvTARG(aTHX_ (SV*)(sv)))
   #define LvTARGOFF(sv)   ( * Perl_macro_LvTARGOFF(aTHX_ (SV*)(sv)))
   #define LvTARGLEN(sv)   ( * Perl_macro_LvTARGLEN(aTHX_ (SV*)(sv)))
   
  -#define IoIFP(sv)	((XPVIO*)  SvANY(sv))->xio_ifp
  -#define IoOFP(sv)	((XPVIO*)  SvANY(sv))->xio_ofp
  -#define IoDIRP(sv)	((XPVIO*)  SvANY(sv))->xio_dirp
  -#define IoANY(sv)	((XPVIO*)  SvANY(sv))->xio_any
  -#define IoLINES(sv)	((XPVIO*)  SvANY(sv))->xio_lines
  -#define IoPAGE(sv)	((XPVIO*)  SvANY(sv))->xio_page
  -#define IoPAGE_LEN(sv)	((XPVIO*)  SvANY(sv))->xio_page_len
  -#define IoLINES_LEFT(sv)((XPVIO*)  SvANY(sv))->xio_lines_left
  -#define IoTOP_NAME(sv)	((XPVIO*)  SvANY(sv))->xio_top_name
  -#define IoTOP_GV(sv)	((XPVIO*)  SvANY(sv))->xio_top_gv
  -#define IoFMT_NAME(sv)	((XPVIO*)  SvANY(sv))->xio_fmt_name
  -#define IoFMT_GV(sv)	((XPVIO*)  SvANY(sv))->xio_fmt_gv
  -#define IoBOTTOM_NAME(sv)((XPVIO*) SvANY(sv))->xio_bottom_name
  -#define IoBOTTOM_GV(sv)	((XPVIO*)  SvANY(sv))->xio_bottom_gv
  -#define IoSUBPROCESS(sv)((XPVIO*)  SvANY(sv))->xio_subprocess
  -#define IoTYPE(sv)	((XPVIO*)  SvANY(sv))->xio_type
  -#define IoFLAGS(sv)	((XPVIO*)  SvANY(sv))->xio_flags
  +#define IoIFP(sv)	( * Perl_macro_IoIFP(aTHX_ (SV*)(sv)))
  +#define IoOFP(sv)	( * Perl_macro_IoOFP(aTHX_ (SV*)(sv)))
  +#define IoDIRP(sv)	( * Perl_macro_IoDIRP(aTHX_ (SV*)(sv)))
  +#define IoANY(sv)	( * Perl_macro_IoANY(aTHX_ (SV*)(sv)))
  +#define IoLINES(sv)	( * Perl_macro_IoLINES(aTHX_ (SV*)(sv)))
  +#define IoPAGE(sv)	( * Perl_macro_IoPAGE(aTHX_ (SV*)(sv)))
  +#define IoPAGE_LEN(sv)	( * Perl_macro_IoPAGE_LEN(aTHX_ (SV*)(sv)))
  +#define IoLINES_LEFT(sv)( * Perl_macro_IoLINES_LEFT(aTHX_ (SV*)(sv)))
  +#define IoTOP_NAME(sv)	( * Perl_macro_IoTOP_NAME(aTHX_ (SV*)(sv)))
  +#define IoTOP_GV(sv)	( * Perl_macro_IoTOP_GV(aTHX_ (SV*)(sv)))
  +#define IoFMT_NAME(sv)	( * Perl_macro_IoFMT_NAME(aTHX_ (SV*)(sv)))
  +#define IoFMT_GV(sv)	( * Perl_macro_IoFMT_GV(aTHX_ (SV*)(sv)))
  +#define IoBOTTOM_NAME(sv)( * Perl_macro_IoBOTTOM_NAME(aTHX_ (SV*)(sv)))
  +#define IoBOTTOM_GV(sv)	( * Perl_macro_IoBOTTOM_GV(aTHX_ (SV*)(sv)))
  +#define IoSUBPROCESS(sv)( * Perl_macro_IoSUBPROCESS(aTHX_ (SV*)(sv)))
  +#define IoTYPE(sv)	( * Perl_macro_IoTYPE(aTHX_ (SV*)(sv)))
  +#define IoFLAGS(sv)	( * Perl_macro_IoFLAGS(aTHX_ (SV*)(sv)))
   
   /* IoTYPE(sv) is a single character telling the type of I/O connection. */
   #define IoTYPE_RDONLY		'<'
  
  
  
  1.4       +23 -23    ponie/perl/pod/perlapi.pod
  
  Index: perlapi.pod
  ===================================================================
  RCS file: /cvs/public/ponie/perl/pod/perlapi.pod,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -w -r1.3 -r1.4
  --- perlapi.pod	15 Dec 2003 13:55:16 -0000	1.3
  +++ perlapi.pod	10 Mar 2004 23:07:23 -0000	1.4
  @@ -2868,22 +2868,22 @@
   =for hackers
   Found in file sv.h
   
  -=item SvIVx
  +=item SvIVX
   
  -Coerces the given SV to an integer and returns it. Guarantees to evaluate
  -sv only once. Use the more efficient C<SvIV> otherwise.
  +Returns the raw value in the SV's IV slot, without checks or conversions.
  +Only use when you are sure SvIOK is true. See also C<SvIV()>.
   
  -	IV	SvIVx(SV* sv)
  +	IV	SvIVX(SV* sv)
   
   =for hackers
   Found in file sv.h
   
  -=item SvIVX
  +=item SvIVx
   
  -Returns the raw value in the SV's IV slot, without checks or conversions.
  -Only use when you are sure SvIOK is true. See also C<SvIV()>.
  +Coerces the given SV to an integer and returns it. Guarantees to evaluate
  +sv only once. Use the more efficient C<SvIV> otherwise.
   
  -	IV	SvIVX(SV* sv)
  +	IV	SvIVx(SV* sv)
   
   =for hackers
   Found in file sv.h
  @@ -3192,21 +3192,21 @@
   =for hackers
   Found in file sv.h
   
  -=item SvPVx
  +=item SvPVX
   
  -A version of C<SvPV> which guarantees to evaluate sv only once.
  +Returns a pointer to the physical string in the SV.  The SV must contain a
  +string.
   
  -	char*	SvPVx(SV* sv, STRLEN len)
  +	char*	SvPVX(SV* sv)
   
   =for hackers
   Found in file sv.h
   
  -=item SvPVX
  +=item SvPVx
   
  -Returns a pointer to the physical string in the SV.  The SV must contain a
  -string.
  +A version of C<SvPV> which guarantees to evaluate sv only once.
   
  -	char*	SvPVX(SV* sv)
  +	char*	SvPVx(SV* sv, STRLEN len)
   
   =for hackers
   Found in file sv.h
  @@ -3445,22 +3445,22 @@
   =for hackers
   Found in file sv.h
   
  -=item SvUVX
  +=item SvUVx
   
  -Returns the raw value in the SV's UV slot, without checks or conversions.
  -Only use when you are sure SvIOK is true. See also C<SvUV()>.
  +Coerces the given SV to an unsigned integer and returns it. Guarantees to
  +evaluate sv only once. Use the more efficient C<SvUV> otherwise.
   
  -	UV	SvUVX(SV* sv)
  +	UV	SvUVx(SV* sv)
   
   =for hackers
   Found in file sv.h
   
  -=item SvUVx
  +=item SvUVX
   
  -Coerces the given SV to an unsigned integer and returns it. Guarantees to
  -evaluate sv only once. Use the more efficient C<SvUV> otherwise.
  +Returns the raw value in the SV's UV slot, without checks or conversions.
  +Only use when you are sure SvIOK is true. See also C<SvUV()>.
   
  -	UV	SvUVx(SV* sv)
  +	UV	SvUVX(SV* sv)
   
   =for hackers
   Found in file sv.h