more complete support for implicit thread/interpreter pointer,
[p5sagit/p5-mst-13.2.git] / globals.c
CommitLineData
ecfc5424 1#include "INTERN.h"
864dbfa3 2#define PERL_IN_GLOBALS_C
ecfc5424 3#include "perl.h"
76e3520e 4
5#ifdef PERL_OBJECT
76e3520e 6
3dfd1da1 7#undef PERLVAR
8#define PERLVAR(x, y)
9#undef PERLVARI
4c2891ed 10#define PERLVARI(x, y, z) PL_##x = z;
3dfd1da1 11#undef PERLVARIC
4c2891ed 12#define PERLVARIC(x, y, z) PL_##x = z;
3dfd1da1 13
76e3520e 14CPerlObj::CPerlObj(IPerlMem* ipM, IPerlEnv* ipE, IPerlStdIO* ipStd,
864dbfa3 15 IPerlLIO* ipLIO, IPerlDir* ipD, IPerlSock* ipS,
16 IPerlProc* ipP)
76e3520e 17{
18 memset(((char*)this)+sizeof(void*), 0, sizeof(CPerlObj)-sizeof(void*));
3dfd1da1 19
20#include "thrdvar.h"
21#include "intrpvar.h"
22#include "perlvars.h"
23
4c2891ed 24 PL_piMem = ipM;
25 PL_piENV = ipE;
26 PL_piStdIO = ipStd;
27 PL_piLIO = ipLIO;
28 PL_piDir = ipD;
29 PL_piSock = ipS;
30 PL_piProc = ipP;
76e3520e 31}
32
33void*
34CPerlObj::operator new(size_t nSize, IPerlMem *pvtbl)
35{
36 if(pvtbl != NULL)
37 return pvtbl->Malloc(nSize);
38
39 return NULL;
40}
41
42int&
43CPerlObj::ErrorNo(void)
44{
5a092403 45 return errno;
76e3520e 46}
47
48void
49CPerlObj::Init(void)
50{
76e3520e 51}
52
ab39fa9d 53#ifdef WIN32 /* XXX why are these needed? */
76e3520e 54bool
864dbfa3 55Perl_do_exec(pTHX_ char *cmd)
76e3520e 56{
c69f6586 57 return PerlProc_Cmd(cmd);
76e3520e 58}
59
60int
cea2e8a9 61S_do_aspawn(pTHX_ void *vreally, void **vmark, void **vsp)
76e3520e 62{
c69f6586 63 return PerlProc_aspawn(vreally, vmark, vsp);
76e3520e 64}
76e3520e 65#endif /* WIN32 */
66
67#endif /* PERL_OBJECT */