mathlink-1.0.0.0: src/state.c
#include <mathlink.h>
int MLAbort = 0;
int MLDone = 0;
MLINK stdlink = 0;
MLEnvironment stdenv = 0;
MLYieldFunctionObject stdyielder = (MLYieldFunctionObject)0;
MLMessageHandlerObject stdhandler = (MLMessageHandlerObject)0;
void MLDefaultHandler(MLINK mlp, int message, int n)
{
switch(message)
{
case MLTerminateMessage:
MLDone = 1;
case MLInterruptMessage:
case MLAbortMessage:
MLAbort = 1;
default:
return;
}
}
int MLInitializeMathLink(char * commandLine)
{
int err;
if(!stdenv) stdenv = MLInitialize((MLParametersPointer)0);
if(stdenv == (MLEnvironment)0) return 0;
if(!stdhandler) stdhandler = (MLMessageHandlerObject)MLDefaultHandler;
stdlink = MLOpenString(stdenv, commandLine, &err);
if(stdlink == (MLINK)0)
{
MLDeinitialize(stdenv);
stdenv = (MLEnvironment)0;
return 0;
}
if(stdyielder) MLSetYieldFunction(stdlink, stdyielder);
if(stdhandler) MLSetMessageHandler(stdlink, stdhandler);
return 1;
}
void MLFinalizeMathLink()
{
MLClose(stdlink);
MLDeinitialize(stdenv);
}