packages feed

mathlink-2.0.0.3: cbits/ml.c

#include <mathlink.h>
#include "ml.h"

int MLInterrupt = 0;
int MLAbort = 0;
int MLDone = 0;

MLINK stdlink = 0;
MLEnvironment stdenv = 0;

MLMessageHandlerObject stdhandler = 0;

void MLDefaultHandler(MLINK mlp, int message, int n)
{
  switch(message)
    {
    case MLTerminateMessage:
      MLDone = 1;
    case MLAbortMessage:
      MLAbort = 1;
    case MLInterruptMessage:
      MLInterrupt = 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(stdhandler) MLSetMessageHandler(stdlink, stdhandler);
  return 1;
}

void MLFinalizeMathLink()
{
  MLClose(stdlink);
  MLDeinitialize(stdenv);
}