#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)
{
#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)
+ if(pvtbl)
return pvtbl->pMalloc(pvtbl, nSize);
-
+#ifndef __MINGW32__
+ /* operator new is supposed to throw std::bad_alloc */
return NULL;
-}
-
-int&
-Perl_ErrorNo(void)
-{
- return errno;
+#endif
}
void
-CPerlObj::Init(void)
+CPerlObj::operator delete(void *pPerl, IPerlMem *pvtbl)
{
-}
-
-int
-CPerlObj::fprintf(PerlIO *stream, const char *format, ...)
-{
- va_list(arglist);
- va_start(arglist, format);
- return PerlIO_vprintf(stream, format, arglist);
+ if(pvtbl)
+ pvtbl->pFree(pvtbl, pPerl);
}
#ifdef WIN32 /* XXX why are these needed? */
#endif /* WIN32 */
#endif /* PERL_OBJECT */
+
+int
+Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...)
+{
+ dTHX;
+ va_list(arglist);
+ va_start(arglist, format);
+ return PerlIO_vprintf(stream, format, arglist);
+}