version 1.3, 1999/12/14 09:31:55 |
version 1.6, 2000/03/10 12:38:46 |
|
|
/* -*- 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.5 2000/01/22 06:29:18 ohara Exp $ */ |
|
|
/* Open Mathematica サーバ */ |
/* |
/* ファイルディスクリプタ 3, 4 は open されていると仮定して動作する. */ |
Copyright (C) Katsuyoshi OHARA, 2000. |
|
Portions copyright 1999 Wolfram Research, Inc. |
|
|
/* MathLink との通信部分 */ |
You must see OpenXM/Copyright/Copyright.generic. |
|
The MathLink Library is licensed from Wolfram Research Inc.. |
|
See OpenXM/Copyright/Copyright.mathlink for detail. |
|
*/ |
|
|
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
#include <unistd.h> |
#include <unistd.h> |
#include <gmp.h> |
|
#include <mathlink.h> |
#include <mathlink.h> |
#include "oxtag.h" |
#include <ox_toolkit.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 133 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 182 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); |