cvs commit: ponie/perl embed.fnc embed.h global.sym proto.h sv.c sv.h

[email protected] (Arthur Bergman) 26 Feb 2004 11:42:49 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
cvsuser     04/02/26 03:42:49

  Modified:    perl     embed.fnc embed.h global.sym proto.h sv.c sv.h
  Log:
  Add SvMAGIC and SvSTASH wrappers
  
  Revision  Changes    Path
  1.7       +2 -0      ponie/perl/embed.fnc
  
  Index: embed.fnc
  ===================================================================
  RCS file: /cvs/public/ponie/perl/embed.fnc,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -w -r1.6 -r1.7
  --- embed.fnc	25 Feb 2004 16:08:15 -0000	1.6
  +++ embed.fnc	26 Feb 2004 11:42:49 -0000	1.7
  @@ -978,6 +978,8 @@
   Ap	|IV*	|macro_SvIVX	|SV *
   Ap	|NV*	|macro_SvNVX	|SV *
   Ap	|UV*	|macro_SvUVX	|SV *
  +Ap	|MAGIC**	|macro_SvMAGIC	|SV *
  +Ap	|HV**	|macro_SvSTASH	|SV *
   Ap	|char**	|macro_LvTYPE	|SV *
   Ap	|SV**	|macro_LvTARG	|SV *
   
  
  
  
  1.7       +4 -0      ponie/perl/embed.h
  
  Index: embed.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/embed.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -w -r1.6 -r1.7
  --- embed.h	25 Feb 2004 16:08:15 -0000	1.6
  +++ embed.h	26 Feb 2004 11:42:49 -0000	1.7
  @@ -1265,6 +1265,8 @@
   #define macro_SvIVX		Perl_macro_SvIVX
   #define macro_SvNVX		Perl_macro_SvNVX
   #define macro_SvUVX		Perl_macro_SvUVX
  +#define macro_SvMAGIC		Perl_macro_SvMAGIC
  +#define macro_SvSTASH		Perl_macro_SvSTASH
   #define macro_LvTYPE		Perl_macro_LvTYPE
   #define macro_LvTARG		Perl_macro_LvTARG
   #if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
  @@ -3759,6 +3761,8 @@
   #define macro_SvIVX(a)		Perl_macro_SvIVX(aTHX_ a)
   #define macro_SvNVX(a)		Perl_macro_SvNVX(aTHX_ a)
   #define macro_SvUVX(a)		Perl_macro_SvUVX(aTHX_ a)
  +#define macro_SvMAGIC(a)	Perl_macro_SvMAGIC(aTHX_ a)
  +#define macro_SvSTASH(a)	Perl_macro_SvSTASH(aTHX_ a)
   #define macro_LvTYPE(a)		Perl_macro_LvTYPE(aTHX_ a)
   #define macro_LvTARG(a)		Perl_macro_LvTARG(aTHX_ a)
   #if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
  
  
  
  1.7       +2 -0      ponie/perl/global.sym
  
  Index: global.sym
  ===================================================================
  RCS file: /cvs/public/ponie/perl/global.sym,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -w -r1.6 -r1.7
  --- global.sym	25 Feb 2004 16:08:15 -0000	1.6
  +++ global.sym	26 Feb 2004 11:42:49 -0000	1.7
  @@ -638,6 +638,8 @@
   Perl_macro_SvIVX
   Perl_macro_SvNVX
   Perl_macro_SvUVX
  +Perl_macro_SvMAGIC
  +Perl_macro_SvSTASH
   Perl_macro_LvTYPE
   Perl_macro_LvTARG
   Perl_Slab_Alloc
  
  
  
  1.7       +2 -0      ponie/perl/proto.h
  
  Index: proto.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/proto.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -w -r1.6 -r1.7
  --- proto.h	25 Feb 2004 16:08:15 -0000	1.6
  +++ proto.h	26 Feb 2004 11:42:49 -0000	1.7
  @@ -936,6 +936,8 @@
   PERL_CALLCONV IV*	Perl_macro_SvIVX(pTHX_ SV *);
   PERL_CALLCONV NV*	Perl_macro_SvNVX(pTHX_ SV *);
   PERL_CALLCONV UV*	Perl_macro_SvUVX(pTHX_ SV *);
  +PERL_CALLCONV MAGIC**	Perl_macro_SvMAGIC(pTHX_ SV *);
  +PERL_CALLCONV HV**	Perl_macro_SvSTASH(pTHX_ SV *);
   PERL_CALLCONV char**	Perl_macro_LvTYPE(pTHX_ SV *);
   PERL_CALLCONV SV**	Perl_macro_LvTARG(pTHX_ SV *);
   
  
  
  
  1.8       +18 -2     ponie/perl/sv.c
  
  Index: sv.c
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -w -r1.7 -r1.8
  --- sv.c	25 Feb 2004 16:08:15 -0000	1.7
  +++ sv.c	26 Feb 2004 11:42:49 -0000	1.8
  @@ -1265,6 +1265,22 @@
   #define new_XPVIO()	my_safemalloc(sizeof(XPVIO))
   #define del_XPVIO(p)	my_safefree(p)
   
  +MAGIC** Perl_macro_SvMAGIC (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVMG* data = (XPVMG*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xmg_magic);
  +  }
  +  return &((XPVMG*)SvANY(sv))->xmg_magic;
  +}
  +
  +HV** Perl_macro_SvSTASH (pTHX_ SV *sv) {
  +  if(SvPMC(sv)) {
  +    XPVMG* data = (XPVMG*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  +    return &(data->xmg_stash);
  +  }
  +  return &((XPVMG*)SvANY(sv))->xmg_stash;
  +}
  +
   UV* Perl_macro_SvUVX (pTHX_ SV *sv) {
     if(SvPMC(sv)) {
       XPVUV* data = (XPVUV*) Parrot_PMC_get_pointer(PL_Parrot, SvANY(sv));
  @@ -1520,8 +1536,8 @@
   	AvFILLp(sv)	= -1;
        	SvIVX(sv)	= 0;
   	SvNVX(sv)	= 0.0;
  -	//SvMAGIC(sv)	= magic;
  -		//SvSTASH(sv)	= stash; 
  +	SvMAGIC(sv)	= magic;
  +	SvSTASH(sv)	= stash; 
   	AvALLOC(sv)	= 0;
   	AvARYLEN(sv)	= 0;
   	AvFLAGS(sv)	= 0; 
  
  
  
  1.7       +2 -2      ponie/perl/sv.h
  
  Index: sv.h
  ===================================================================
  RCS file: /cvs/public/ponie/perl/sv.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -w -r1.6 -r1.7
  --- sv.h	25 Feb 2004 16:08:15 -0000	1.6
  +++ sv.h	26 Feb 2004 11:42:49 -0000	1.7
  @@ -756,8 +756,8 @@
   #define SvLENx(sv) SvLEN(sv)
   #define SvEND(sv)(((XPV*)  SvANY(sv))->xpv_pv + ((XPV*)SvANY(sv))->xpv_cur)
   #define SvENDx(sv) ((PL_Sv = (sv)), SvEND(PL_Sv))
  -#define SvMAGIC(sv)	((XPVMG*)  SvANY(sv))->xmg_magic
  -#define SvSTASH(sv)	((XPVMG*)  SvANY(sv))->xmg_stash
  +#define SvMAGIC(sv)	(* Perl_macro_SvMAGIC(aTHX_ (SV*) sv))
  +#define SvSTASH(sv)	(* Perl_macro_SvSTASH(aTHX_ (SV*) sv))
   
   /* Ask a scalar nicely to try to become an IV, if possible.
      Not guaranteed to stay returning void */