This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
pTHX_ / aTHX_ for ExtUtils/Constant.pm
[perl5.git] / globals.c
index b31b9b1..6368f28 100644 (file)
--- a/globals.c
+++ b/globals.c
@@ -6,12 +6,15 @@
 
 #undef PERLVAR
 #define PERLVAR(x, y)
+#undef PERLVARA
+#define PERLVARA(x, n, y)
 #undef PERLVARI
-#define PERLVARI(x, y, z) PL_##x = z;
+#define PERLVARI(x, y, z) interp.x = z;
 #undef PERLVARIC
-#define PERLVARIC(x, y, z) PL_##x = z;
+#define PERLVARIC(x, y, z) interp.x = z;
 
-CPerlObj::CPerlObj(IPerlMem* ipM, IPerlEnv* ipE, IPerlStdIO* ipStd,
+CPerlObj::CPerlObj(IPerlMem* ipM, IPerlMem* ipMS, IPerlMem* ipMP,
+                  IPerlEnv* ipE, IPerlStdIO* ipStd,
                   IPerlLIO* ipLIO, IPerlDir* ipD, IPerlSock* ipS,
                   IPerlProc* ipP)
 {
@@ -19,49 +22,70 @@ CPerlObj::CPerlObj(IPerlMem* ipM, IPerlEnv* ipE, IPerlStdIO* ipStd,
 
 #include "thrdvar.h"
 #include "intrpvar.h"
-#include "perlvars.h"
 
-    PL_piMem = ipM;
-    PL_piENV = ipE;
-    PL_piStdIO = ipStd;
-    PL_piLIO = ipLIO;
-    PL_piDir = ipD;
-    PL_piSock = ipS;
-    PL_piProc = ipP;
+    PL_Mem = ipM;
+    PL_MemShared = ipMS;
+    PL_MemParse = ipMP;
+    PL_Env = ipE;
+    PL_StdIO = ipStd;
+    PL_LIO = ipLIO;
+    PL_Dir = ipD;
+    PL_Sock = ipS;
+    PL_Proc = ipP;
 }
 
 void*
 CPerlObj::operator new(size_t nSize, IPerlMem *pvtbl)
 {
-    if(pvtbl != NULL)
-       return pvtbl->Malloc(nSize);
-
+    if(pvtbl)
+       return pvtbl->pMalloc(pvtbl, nSize);
+#ifndef __MINGW32__
+    /* operator new is supposed to throw std::bad_alloc */
     return NULL;
+#endif
 }
 
-int&
-CPerlObj::ErrorNo(void)
-{
-    return errno;
-}
-
+#ifndef __BORLANDC__
 void
-CPerlObj::Init(void)
+CPerlObj::operator delete(void *pPerl, IPerlMem *pvtbl)
 {
+    if(pvtbl)
+       pvtbl->pFree(pvtbl, pPerl);
 }
+#endif
 
 #ifdef WIN32           /* XXX why are these needed? */
 bool
-Perl_do_exec(pTHX_ char *cmd)
+Perl_do_exec(char *cmd)
 {
     return PerlProc_Cmd(cmd);
 }
 
 int
-do_aspawn(pTHX_ void *vreally, void **vmark, void **vsp)
+CPerlObj::do_aspawn(void *vreally, void **vmark, void **vsp)
 {
     return PerlProc_aspawn(vreally, vmark, vsp);
 }
 #endif  /* WIN32 */
 
 #endif   /* PERL_OBJECT */
+
+int
+Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...)
+{
+    dTHXs;
+    va_list(arglist);
+    va_start(arglist, format);
+    return PerlIO_vprintf(stream, format, arglist);
+}
+
+int
+Perl_printf_nocontext(const char *format, ...)
+{
+    dTHXs;
+    va_list(arglist);
+    va_start(arglist, format);
+    return PerlIO_vprintf(PerlIO_stdout(), format, arglist);
+}
+
+#include "perlapi.h"           /* bring in PL_force_link_funcs */