[BACK]Return to ox_asir.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / io

Diff for /OpenXM_contrib2/asir2000/io/ox_asir.c between version 1.17 and 1.21

version 1.17, 2000/08/29 04:03:06 version 1.21, 2000/11/07 06:35:38
Line 44 
Line 44 
  * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY   * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  * $OpenXM: OpenXM_contrib2/asir2000/io/ox_asir.c,v 1.16 2000/08/22 05:04:18 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/io/ox_asir.c,v 1.20 2000/10/06 06:05:22 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 70  extern int little_endian,ox_sock_id;
Line 70  extern int little_endian,ox_sock_id;
 int ox_sock_id;  int ox_sock_id;
 int lib_ox_need_conv;  int lib_ox_need_conv;
   
 static int asir_OperandStackSize;  void create_error(ERR *,unsigned int ,char *);
 static Obj *asir_OperandStack;  
 static int asir_OperandStackPtr = -1;  
   
 static void create_error(ERR *,unsigned int ,char *);  int asir_OperandStackSize;
 static void ox_io_init();  Obj *asir_OperandStack;
 static void ox_asir_init(int,char **);  int asir_OperandStackPtr = -1;
 static Obj asir_pop_one();  
 static void asir_push_one(Obj);  void ox_io_init();
 static void asir_end_flush();  void ox_asir_init(int,char **);
 static void asir_executeFunction(int);  Obj asir_pop_one();
 static int asir_executeString();  Obj asir_peek_one();
 static void asir_evalName(unsigned int);  void asir_push_one(Obj);
 static void asir_setName(unsigned int);  void asir_end_flush();
 static void asir_pops();  int asir_executeString();
 static void asir_popString();  void asir_evalName(unsigned int);
 static void asir_popCMO(unsigned int);  void asir_setName(unsigned int);
 static void asir_popSerializedLocalObject();  void asir_pops();
 static LIST asir_GetErrorList();  void asir_popString();
 static char *name_of_cmd(int);  void asir_popCMO(unsigned int);
 static char *name_of_id(int);  void asir_popSerializedLocalObject();
   void asir_pushCMOtag(unsigned int);
   LIST asir_GetErrorList();
   char *name_of_cmd(int);
   char *name_of_id(int);
   
 static void asir_do_cmd(int,unsigned int);  static void asir_do_cmd(int,unsigned int);
   static void asir_executeFunction(int);
   
 #if MPI  #if MPI
 /* XXX : currently MPI version supports only a homogeneous cluster. */  /* XXX : currently MPI version supports only a homogeneous cluster. */
Line 126  void ox_mpi_slave_init() {
Line 130  void ox_mpi_slave_init() {
 }  }
 #endif  #endif
   
 static void create_error(ERR *err,unsigned int serial,char *msg)  
 {  
         int len;  
         USINT ui;  
         NODE n,n1;  
         LIST list;  
         char *msg1;  
         STRING errmsg;  
   
         MKUSINT(ui,serial);  
         len = strlen(msg);  
         msg1 = (char *)MALLOC(len+1);  
         strcpy(msg1,msg);  
         MKSTR(errmsg,msg1);  
         MKNODE(n1,errmsg,0); MKNODE(n,ui,n1); MKLIST(list,n);  
         MKERR(*err,list);  
 }  
   
 void ox_main(int argc,char **argv) {  void ox_main(int argc,char **argv) {
         int id;          int id;
         int cmd;          int cmd;
Line 271  static void asir_do_cmd(int cmd,unsigned int serial)
Line 257  static void asir_do_cmd(int cmd,unsigned int serial)
                         client_mathcap = (MATHCAP)asir_pop_one();                          client_mathcap = (MATHCAP)asir_pop_one();
                         store_remote_mathcap(0,client_mathcap);                          store_remote_mathcap(0,client_mathcap);
                         break;                          break;
                   case SM_pushCMOtag:
                           asir_pushCMOtag(serial);
                           break;
                 case SM_nop:                  case SM_nop:
                 default:                  default:
                         break;                          break;
         }          }
 }  }
   
 static char *name_of_id(int id)  char *name_of_id(int id)
 {  {
         switch ( id ) {          switch ( id ) {
                 case OX_COMMAND:                  case OX_COMMAND:
Line 298  static char *name_of_id(int id)
Line 287  static char *name_of_id(int id)
         }          }
 }  }
   
 static char *name_of_cmd(int cmd)  char *name_of_cmd(int cmd)
 {  {
         switch ( cmd ) {          switch ( cmd ) {
                 case SM_popSerializedLocalObject:                  case SM_popSerializedLocalObject:
Line 348  static char *name_of_cmd(int cmd)
Line 337  static char *name_of_cmd(int cmd)
                         break;                          break;
                 case SM_nop:                  case SM_nop:
                         return "SM_nop";                          return "SM_nop";
                   case SM_pushCMOtag:
                           return "SM_pushCMOtag";
                 default:                  default:
                         return "Unknown cmd";                          return "Unknown cmd";
                         break;                          break;
         }          }
 }  }
   
 static LIST asir_GetErrorList()  LIST asir_GetErrorList()
 {  {
         int i;          int i;
         NODE n,n0;          NODE n,n0;
Line 371  static LIST asir_GetErrorList()
Line 362  static LIST asir_GetErrorList()
         return err;          return err;
 }  }
   
 static void asir_popSerializedLocalObject()  void asir_popSerializedLocalObject()
 {  {
         Obj obj;          Obj obj;
         VL t,vl;          VL t,vl;
Line 387  static void asir_popSerializedLocalObject()
Line 378  static void asir_popSerializedLocalObject()
         ox_send_cmd(0,SM_endBlock);          ox_send_cmd(0,SM_endBlock);
 }  }
   
 static void asir_popCMO(unsigned int serial)  void asir_popCMO(unsigned int serial)
 {  {
         Obj obj;          Obj obj;
         ERR err;          ERR err;
Line 402  static void asir_popCMO(unsigned int serial)
Line 393  static void asir_popCMO(unsigned int serial)
         }          }
 }  }
   
 static void asir_popString()  void asir_pushCMOtag(unsigned int serial)
 {  {
           Obj obj;
           ERR err;
           USINT ui;
           int tag;
   
           obj = asir_peek_one();
           if ( cmo_tag(obj,&tag) ) {
                   MKUSINT(ui,tag);
                   asir_push_one((Obj)ui);
           } else {
                   create_error(&err,serial,"cannot convert to CMO object");
                   asir_push_one((Obj)err);
           }
   }
   
   void asir_popString()
   {
         Obj val;          Obj val;
         char *buf,*obuf;          char *buf,*obuf;
         int l;          int l;
Line 425  static void asir_popString()
Line 433  static void asir_popString()
         ox_send_data(0,str);          ox_send_data(0,str);
 }  }
   
 static void asir_pops()  void asir_pops()
 {  {
         int n;          int n;
   
Line 433  static void asir_pops()
Line 441  static void asir_pops()
         asir_OperandStackPtr = MAX(asir_OperandStackPtr-n,-1);          asir_OperandStackPtr = MAX(asir_OperandStackPtr-n,-1);
 }  }
   
 static void asir_setName(unsigned int serial)  void asir_setName(unsigned int serial)
 {  {
         char *name;          char *name;
         int l,n;          int l,n;
Line 455  static void asir_setName(unsigned int serial)
Line 463  static void asir_setName(unsigned int serial)
         }          }
 }  }
   
 static void asir_evalName(unsigned int serial)  void asir_evalName(unsigned int serial)
 {  {
         char *name;          char *name;
         int l,n;          int l,n;
Line 476  static void asir_evalName(unsigned int serial)
Line 484  static void asir_evalName(unsigned int serial)
         asir_push_one(val);          asir_push_one(val);
 }  }
   
 static int asir_executeString()  int asir_executeString()
 {  {
         SNODE snode;          SNODE snode;
         pointer val;          pointer val;
Line 581  error:
Line 589  error:
         asir_push_one(result);          asir_push_one(result);
 }  }
   
 static void asir_end_flush()  void asir_end_flush()
 {  {
         ox_flushing = 0;          ox_flushing = 0;
 }  }
Line 593  static void asir_end_flush()
Line 601  static void asir_end_flush()
 */  */
   
   
 static void asir_push_one(Obj obj)  void asir_push_one(Obj obj)
 {  {
         if ( !obj || OID(obj) != O_VOID ) {          if ( !obj || OID(obj) != O_VOID ) {
                 asir_OperandStackPtr++;                  asir_OperandStackPtr++;
Line 607  static void asir_push_one(Obj obj)
Line 615  static void asir_push_one(Obj obj)
         }          }
 }  }
   
 static Obj asir_pop_one() {  Obj asir_pop_one() {
         if ( asir_OperandStackPtr < 0 ) {          if ( asir_OperandStackPtr < 0 ) {
                 if ( do_message )                  if ( do_message )
                         fprintf(stderr,"OperandStack underflow");                          fprintf(stderr,"OperandStack underflow");
Line 619  static Obj asir_pop_one() {
Line 627  static Obj asir_pop_one() {
         }          }
 }  }
   
 static void ox_asir_init(int argc,char **argv)  Obj asir_peek_one() {
           if ( asir_OperandStackPtr < 0 ) {
                   if ( do_message )
                           fprintf(stderr,"OperandStack underflow");
                   return 0;
           } else {
                   if ( do_message )
                           fprintf(stderr,"peek at %d\n",asir_OperandStackPtr);
                   return asir_OperandStack[asir_OperandStackPtr];
           }
   }
   
   void ox_asir_init(int argc,char **argv)
 {  {
         int tmp;          int tmp;
         char ifname[BUFSIZ];          char ifname[BUFSIZ];
Line 703  static void ox_asir_init(int argc,char **argv)
Line 723  static void ox_asir_init(int argc,char **argv)
         create_my_mathcap("ox_asir");          create_my_mathcap("ox_asir");
 }  }
   
 static void ox_io_init() {  void ox_io_init() {
         unsigned char c,rc;          unsigned char c,rc;
           extern int I_am_server;
   
           I_am_server = 1;
         endian_init();          endian_init();
 #if defined(VISUAL)  #if defined(VISUAL)
         if ( !ox_sock_id )          if ( !ox_sock_id )

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.21

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