User Guide

Integrating C functions 539
/* Definitions of global variables */
\
MM_Environment mmEnv; \
\
void \
MM_InitWrapper(MM_Environment *env, unsigned int envSize)
\
{ \
extern void MM_Init(); \
\
char **envPtr = (char **)env;
\
char **mmPtr = (char **)(&mmEnv);
\
char **envEnd = (char **)((char *)envPtr + envSize);
\
char **mmEnd = (char **)((char *)mmPtr + sizeof(MM_Environment));
\
\
/* Copy fields from env to mmEnv, one pointer at a time */
\
while (mmPtr < mmEnd && envPtr < envEnd)
\
*mmPtr++ = *envPtr++; \
\
/* If env doesn't define all of mmEnv's fields, set extras to NULL */
\
while (mmPtr < mmEnd) \
*mmPtr++ = (char *)0; \
\
/* Call user's MM_Init function */
\
MM_Init(); \
} \
#endif /* _MM_JSAPI_H_ */