version 1.3, 1999/12/14 09:31:55 |
version 1.4, 2000/01/05 06:09:11 |
|
|
/* -*- mode: C; coding: euc-japan -*- */ |
/* -*- mode: C -*- */ |
/* $OpenXM: OpenXM/src/ox_math/mlo.c,v 1.2 1999/12/09 22:50:56 ohara Exp $ */ |
/* $OpenXM: OpenXM/src/ox_math/mlo.c,v 1.3 1999/12/14 09:31:55 ohara Exp $ */ |
|
|
/* Open Mathematica サーバ */ |
|
/* ファイルディスクリプタ 3, 4 は open されていると仮定して動作する. */ |
|
|
|
/* MathLink との通信部分 */ |
|
|
|
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
#include <unistd.h> |
#include <unistd.h> |
|
|
#include <mathlink.h> |
#include <mathlink.h> |
#include "oxtag.h" |
#include "oxtag.h" |
#include "ox.h" |
#include "ox.h" |
#include "parse.h" |
|
#include "mlo.h" |
#include "mlo.h" |
#include "serv2.h" |
#include "serv2.h" |
|
|
|
/* If this flag sets then we identify MLTKSYM to CMO_INDETERMINATE. */ |
int flag_mlo_symbol = FLAG_MLTKSYM_IS_INDETERMINATE; |
int flag_mlo_symbol = FLAG_MLTKSYM_IS_INDETERMINATE; |
|
|
/* MLINK はポインタ型. */ |
/* MLINK is a indentifier of MathLink connection. */ |
MLINK stdlink; |
MLINK stdlink; |
|
|
mlo *receive_mlo_zz() |
mlo *receive_mlo_zz() |
Line 131 cmo *receive_mlo_symbol() |
|
Line 126 cmo *receive_mlo_symbol() |
|
return ob; |
return ob; |
} |
} |
|
|
/* Mathematica との通信を開始する. */ |
/* starting a MathLink connection. */ |
int ml_init() |
int ml_init() |
{ |
{ |
int argc = 2; |
int argc = 2; |
|
|
return 0; |
return 0; |
} |
} |
|
|
/* Mathematica との通信を終了する. */ |
/* closing a MathLink connection. */ |
int ml_exit() |
int ml_exit() |
{ |
{ |
/* quit Mathematica then close the link */ |
/* quit Mathematica then close the link */ |
|
|
MLClose(stdlink); |
MLClose(stdlink); |
} |
} |
|
|
/* receive_mlo() する前に必ず ml_select() しなければならない */ |
/* Never forget call ml_select() before calling receive_mlo(). */ |
int ml_select() |
int ml_select() |
{ |
{ |
/* skip any packets before the first ReturnPacket */ |
/* skip any packets before the first ReturnPacket */ |
|
|
} |
} |
} |
} |
|
|
/* send_mlo() した後で必ず ml_flush() しなければならない */ |
/* Never forget call ml_flush() after calling send_mlo(). */ |
int ml_flush() |
int ml_flush() |
{ |
{ |
MLEndPacket(stdlink); |
MLEndPacket(stdlink); |
Line 180 cmo *receive_mlo() |
|
Line 175 cmo *receive_mlo() |
|
case MLTKSTR: |
case MLTKSTR: |
return receive_mlo_string(); |
return receive_mlo_string(); |
case MLTKREAL: |
case MLTKREAL: |
/* double はまだ... */ |
/* Yet we have no implementation of CMO_DOUBLE... */ |
fprintf(stderr, "--debug: MLO == MLTKREAL.\n"); |
fprintf(stderr, "--debug: MLO == MLTKREAL.\n"); |
MLGetString(stdlink, &s); |
MLGetString(stdlink, &s); |
return (cmo *)new_cmo_string(s); |
return (cmo *)new_cmo_string(s); |