[BACK]Return to mlo.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / ox_math

Diff for /OpenXM/src/ox_math/mlo.c between version 1.2 and 1.3

version 1.2, 1999/12/09 22:50:56 version 1.3, 1999/12/14 09:31:55
Line 1 
Line 1 
 /* -*- mode: C; coding: euc-japan -*- */  /* -*- mode: C; coding: euc-japan -*- */
 /* $OpenXM: OpenXM/src/ox_math/mlo.c,v 1.1 1999/11/29 12:09:58 ohara Exp $ */  /* $OpenXM: OpenXM/src/ox_math/mlo.c,v 1.2 1999/12/09 22:50:56 ohara Exp $ */
   
 /* Open Mathematica サーバ */  /* Open Mathematica サーバ */
 /* ファイルディスクリプタ 3, 4 は open されていると仮定して動作する. */  /* ファイルディスクリプタ 3, 4 は open されていると仮定して動作する. */
Line 22  int flag_mlo_symbol = FLAG_MLTKSYM_IS_INDETERMINATE;
Line 22  int flag_mlo_symbol = FLAG_MLTKSYM_IS_INDETERMINATE;
 /* MLINK はポインタ型. */  /* MLINK はポインタ型. */
 MLINK stdlink;  MLINK stdlink;
   
 typedef cmo mlo;  
 typedef cmo_string mlo_string;  
 typedef cmo_zz mlo_zz;  
   
 mlo *receive_mlo_zz()  mlo *receive_mlo_zz()
 {  {
     char *s;      char *s;
Line 72  cmo *receive_mlo_function()
Line 68  cmo *receive_mlo_function()
     return m;      return m;
 }  }
   
   #if 0
   cmo *convert_mlo_to_cmo(mlo *m)
   {
           if (m->tag == MLO_FUNCTION) {
                   if (strcmp(((mlo_function *)m)->function, "List") == 0) {
                           return convert_mlo_function_list_to_cmo_list(m);
                   }
           }
           return m;
   }
   #endif
   
 mlo_function *new_mlo_function(char *function)  mlo_function *new_mlo_function(char *function)
 {  {
     mlo_function *c = malloc(sizeof(mlo_function));      mlo_function *c = malloc(sizeof(mlo_function));
Line 123  cmo *receive_mlo_symbol()
Line 131  cmo *receive_mlo_symbol()
     return ob;      return ob;
 }  }
   
 /* Mathematica を起動する. */  /* Mathematica との通信を開始する. */
 int ml_init()  int ml_init()
 {  {
     int argc = 2;      int argc = 2;
Line 137  int ml_init()
Line 145  int ml_init()
     return 0;      return 0;
 }  }
   
   /* Mathematica との通信を終了する. */
 int ml_exit()  int ml_exit()
 {  {
     /* quit Mathematica then close the link */      /* quit Mathematica then close the link */
Line 144  int ml_exit()
Line 153  int ml_exit()
     MLClose(stdlink);      MLClose(stdlink);
 }  }
   
 cmo *ml_get_object()  /* receive_mlo() する前に必ず ml_select() しなければならない */
   int ml_select()
 {  {
     /* skip any packets before the first ReturnPacket */      /* skip any packets before the first ReturnPacket */
     while (MLNextPacket(stdlink) != RETURNPKT) {      while (MLNextPacket(stdlink) != RETURNPKT) {
         usleep(10);          usleep(10);
         MLNewPacket(stdlink);          MLNewPacket(stdlink);
     }      }
     return receive_mlo();  
 }  }
   
   /* send_mlo() した後で必ず ml_flush() しなければならない */
   int ml_flush()
   {
       MLEndPacket(stdlink);
   }
   
 cmo *receive_mlo()  cmo *receive_mlo()
 {  {
     char *s;      char *s;
Line 199  int send_mlo_zz(cmo *m)
Line 214  int send_mlo_zz(cmo *m)
 {  {
     char *s;      char *s;
     MLPutFunction(stdlink, "ToExpression", 1);      MLPutFunction(stdlink, "ToExpression", 1);
     s = convert_cmo_to_string(m);      s = new_string_set_cmo(m);
     MLPutString(stdlink, s);      MLPutString(stdlink, s);
 }  }
   
Line 216  int send_mlo_list(cmo *c)
Line 231  int send_mlo_list(cmo *c)
     }      }
 }  }
   
 int ml_sendObject(cmo *m)  
 {  
     send_mlo(m);  
     MLEndPacket(stdlink);  
 }  
   
 int send_mlo(cmo *m)  int send_mlo(cmo *m)
 {  {
     char *s;      char *s;
Line 247  int send_mlo(cmo *m)
Line 256  int send_mlo(cmo *m)
         break;          break;
     default:      default:
         MLPutFunction(stdlink, "ToExpression", 1);          MLPutFunction(stdlink, "ToExpression", 1);
         s = convert_cmo_to_string(m);          s = new_string_set_cmo(m);
         MLPutString(stdlink, s);          MLPutString(stdlink, s);
         break;          break;
     }      }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>