diff options
author | Nick Ing-Simmons <nik@tiuk.ti.com> | 1997-11-05 01:04:10 +0000 |
---|---|---|
committer | Nick Ing-Simmons <nik@tiuk.ti.com> | 1997-11-05 01:04:10 +0000 |
commit | 4e35701fd273ba8d0093a29660dee38a92408e9b (patch) | |
tree | afa97d9bf675ea146b86cf09a7c27e1bfbb980f3 /sv.h | |
parent | 2b544454484ed91b6f1ae2cffef4c29b1302dcd7 (diff) | |
download | perl-4e35701fd273ba8d0093a29660dee38a92408e9b.tar.gz |
Builds C++ Borland, MSVC++ (Win32) and GCC++ (Solaris)
p4raw-id: //depot/ansiperl@203
Diffstat (limited to 'sv.h')
-rw-r--r-- | sv.h | 65 |
1 files changed, 24 insertions, 41 deletions
@@ -70,19 +70,16 @@ struct io { #define SvANY(sv) (sv)->sv_any #define SvFLAGS(sv) (sv)->sv_flags -#define SvREFCNT(sv) (sv)->sv_refcnt -#ifdef __GNUC__ -# define SvREFCNT_inc(sv) ({SV *nsv = (SV*)(sv); ++SvREFCNT(nsv); nsv;}) +#define SvREFCNT(sv) (sv)->sv_refcnt +#ifdef CRIPPLED_CC +#define SvREFCNT_inc(sv) sv_newref((SV*)sv) +#define SvREFCNT_dec(sv) sv_free((SV*)sv) #else -# if defined(CRIPPLED_CC) || defined(USE_THREADS) -# define SvREFCNT_inc(sv) sv_newref((SV*)sv) -# else -# define SvREFCNT_inc(sv) ((Sv = (SV*)(sv)), ++SvREFCNT(Sv), (SV*)Sv) -# endif -#endif - +#define SvREFCNT_inc(sv) ((Sv = (SV*)(sv)), \ + (Sv && ++SvREFCNT(Sv)), (SV*)Sv) #define SvREFCNT_dec(sv) sv_free((SV*)sv) +#endif #define SVTYPEMASK 0xff #define SvTYPE(sv) ((sv)->sv_flags & SVTYPEMASK) @@ -494,20 +491,19 @@ struct xpvio { #ifdef CRIPPLED_CC -IV SvIV _((SV* sv)); -UV SvUV _((SV* sv)); -double SvNV _((SV* sv)); #define SvPV_force(sv, lp) sv_pvn_force(sv, &lp) #define SvPV(sv, lp) sv_pvn(sv, &lp) -char *sv_pvn _((SV *, STRLEN *)); -I32 SvTRUE _((SV *)); - -#define SvIVx(sv) SvIV(sv) -#define SvUVx(sv) SvUV(sv) -#define SvNVx(sv) SvNV(sv) +#define SvIVx(sv) sv_iv(sv) +#define SvUVx(sv) sv_uv(sv) +#define SvNVx(sv) sv_nv(sv) #define SvPVx(sv, lp) sv_pvn(sv, &lp) #define SvPVx_force(sv, lp) sv_pvn_force(sv, &lp) -#define SvTRUEx(sv) SvTRUE(sv) +#define SvTRUEx(sv) sv_true(sv) + +#define SvIV(sv) SvIVx(sv) +#define SvNV(sv) SvNVx(sv) +#define SvUV(sv) SvIVx(sv) +#define SvTRUE(sv) SvTRUEx(sv) #else /* !CRIPPLED_CC */ @@ -547,32 +543,19 @@ I32 SvTRUE _((SV *)); ? SvNVX(sv) != 0.0 \ : sv_2bool(sv) ) -#ifdef __GNUC__ -# define SvIVx(sv) ({SV *nsv = (SV*)(sv); SvIV(nsv); }) -# define SvUVx(sv) ({SV *nsv = (SV*)(sv); SvUV(nsv); }) -# define SvNVx(sv) ({SV *nsv = (SV*)(sv); SvNV(nsv); }) -# define SvPVx(sv, lp) ({SV *nsv = (sv); SvPV(nsv, lp); }) -#else -# define SvIVx(sv) ((Sv = (sv)), SvIV(Sv)) -# define SvUVx(sv) ((Sv = (sv)), SvUV(Sv)) -# define SvNVx(sv) ((Sv = (sv)), SvNV(Sv)) -# define SvPVx(sv, lp) ((Sv = (sv)), SvPV(Sv, lp)) -#endif /* __GNUC__ */ - +#define SvIVx(sv) ((Sv = (sv)), SvIV(Sv)) +#define SvUVx(sv) ((Sv = (sv)), SvUV(Sv)) +#define SvNVx(sv) ((Sv = (sv)), SvNV(Sv)) +#define SvPVx(sv, lp) ((Sv = (sv)), SvPV(Sv, lp)) #define SvTRUEx(sv) ((Sv = (sv)), SvTRUE(Sv)) #endif /* CRIPPLED_CC */ #define newRV_inc(sv) newRV(sv) -#ifdef __GNUC__ -# define newRV_noinc(sv) ({SV *nsv=newRV((sv)); --SvREFCNT(SvRV(nsv)); nsv;}) -#else -# if defined(CRIPPLED_CC) || defined(USE_THREADS) -SV *newRV_noinc _((SV *)); -# else -# define newRV_noinc(sv) ((Sv = newRV(sv)), --SvREFCNT(SvRV(Sv)), Sv) -# endif -#endif /* __GNUC__ */ +#ifndef CRIPPLED_CC +#undef newRV_noinc +#define newRV_noinc(sv) ((Sv = newRV(sv)), --SvREFCNT(SvRV(Sv)), Sv) +#endif /* the following macro updates any magic values this sv is associated with */ |