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

Diff for /OpenXM_contrib2/asir2000/plot/ox_plot.c between version 1.28 and 1.31

version 1.28, 2015/08/08 14:19:42 version 1.31, 2018/03/29 01:32:55
Line 45 
Line 45 
  * 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/plot/ox_plot.c,v 1.27 2015/08/06 10:01:53 fujimoto Exp $   * $OpenXM: OpenXM_contrib2/asir2000/plot/ox_plot.c,v 1.30 2017/08/30 09:40:30 ohara Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 57 
Line 57 
 #include "genpari.h"  #include "genpari.h"
 #endif  #endif
   
 void ox_usr1_handler();  
   
 extern int asir_OperandStackSize;  extern int asir_OperandStackSize;
 extern Obj *asir_OperandStack;  extern Obj *asir_OperandStack;
 extern int asir_OperandStackPtr;  extern int asir_OperandStackPtr;
Line 96  static void asir_do_cmd(unsigned int,unsigned int);
Line 94  static void asir_do_cmd(unsigned int,unsigned int);
 static void process_ox();  static void process_ox();
 static void asir_executeFunction();  static void asir_executeFunction();
   
 #if defined(VISUAL) || defined(__MINGW32__) || defined(__MINGW64__)  #if defined(VISUAL) || defined(__MINGW32__)
 void ox_plot_main()  void ox_plot_main()
 #else  #else
 void ox_plot_main(int argc,char **argv)  void ox_plot_main(int argc,char **argv)
 #endif  #endif
 {  {
         int ds;    int ds;
         fd_set r;    fd_set r;
         int n;    int n;
         int use_x;    int use_x;
   
 #if !defined(VISUAL) && !defined(__MINGW32__) && !defined(__MINGW64__)  #if !defined(VISUAL) && !defined(__MINGW32__)
         ox_asir_init(argc,argv,"ox_plot");    ox_asir_init(argc,argv,"ox_plot");
         use_x=init_plot_display(argc,argv);    use_x=init_plot_display(argc,argv);
         if(use_x) ds=ConnectionNumber(display);    if(use_x) ds=ConnectionNumber(display);
         else fprintf(stderr,"Entering no X mode\n");    else fprintf(stderr,"Entering no X mode\n");
 #endif  #endif
         if(do_message)fprintf(stderr,"I'm an ox_plot, Version %d.\n",ASIR_VERSION);    if(do_message)fprintf(stderr,"I'm an ox_plot, Version %d.\n",ASIR_VERSION);
 #if defined(__MINGW32__) || defined(__MINGW64__)    if(SETJMP(ox_env)){
         fflush(stderr);      while(NEXT(asir_infile))closecurrentinput();
 #endif      reset_current_computation();
         if(SETJMP(ox_env)){      ox_send_sync(0);
                 while(NEXT(asir_infile))closecurrentinput();    }
                 reset_current_computation();    while (1){
                 ox_send_sync(0);  #if defined(VISUAL) || defined(__MINGW32__)
         }      process_ox();
         while (1){  
 #if defined(VISUAL) || defined(__MINGW32__) || defined(__MINGW64__)  
                 process_ox();  
 #else  #else
                 if(ox_data_is_available(0)) process_ox();      if(ox_data_is_available(0)) process_ox();
                 else if(use_x){      else if(use_x){
                         FD_ZERO(&r);        FD_ZERO(&r);
                         FD_SET(3,&r); FD_SET(ds,&r);        FD_SET(3,&r); FD_SET(ds,&r);
                         select(FD_SETSIZE,&r,NULL,NULL,NULL);        select(FD_SETSIZE,&r,NULL,NULL,NULL);
                         if(FD_ISSET(3,&r)) process_ox();        if(FD_ISSET(3,&r)) process_ox();
                         else if(FD_ISSET(ds,&r)) process_xevent();        else if(FD_ISSET(ds,&r)) process_xevent();
                 }      }
         }    }
 #endif  #endif
 }  }
   
 static void process_ox(){  static void process_ox(){
         int id;    int id;
         unsigned int cmd;    unsigned int cmd;
         Obj obj;    Obj obj;
         ERR err;    ERR err;
         unsigned int serial;    unsigned int serial;
         int ret;    int ret;
   
         serial=ox_recv(0,&id,&obj);    serial=ox_recv(0,&id,&obj);
         if(do_message) fprintf(stderr,"#%d Got %s",serial,name_of_id(id));    if(do_message) fprintf(stderr,"#%d Got %s",serial,name_of_id(id));
         switch (id){    switch (id){
                 case OX_COMMAND:      case OX_COMMAND:
                         cmd=((USINT)obj)->body;        cmd=((USINT)obj)->body;
                         if(ox_flushing) break;        if(ox_flushing) break;
                         if(do_message) fprintf(stderr," %s\n",name_of_cmd(cmd));        if(do_message) fprintf(stderr," %s\n",name_of_cmd(cmd));
                         ret=SETJMP(main_env);        ret=SETJMP(main_env);
                         if(ret){        if(ret){
                                 if(ret==1){          if(ret==1){
                                         create_error(&err,serial,LastError,0);            create_error(&err,serial,LastError,0);
                                         asir_push_one((Obj)err);            asir_push_one((Obj)err);
                                 }          }
                                 break;          break;
                         }        }
                         asir_do_cmd(cmd,serial);        asir_do_cmd(cmd,serial);
                         break;        break;
                 case OX_DATA:      case OX_DATA:
                 case OX_LOCAL_OBJECT_ASIR:      case OX_LOCAL_OBJECT_ASIR:
                         if(ox_flushing)break;        if(ox_flushing)break;
                         if(do_message)fprintf(stderr," -> data pushed");        if(do_message)fprintf(stderr," -> data pushed");
                         asir_push_one(obj);        asir_push_one(obj);
                         break;        break;
                 case OX_SYNC_BALL:      case OX_SYNC_BALL:
                         asir_end_flush();        asir_end_flush();
                         break;        break;
                 default:      default:
                         break;        break;
         }    }
         if(do_message)fprintf(stderr,"\n");    if(do_message)fprintf(stderr,"\n");
 #if defined(__MINGW32__) || defined(__MINGW64__)  
         fflush(stderr);  
 #endif  
 }  }
   
 static void asir_do_cmd(unsigned int cmd,unsigned int serial){  static void asir_do_cmd(unsigned int cmd,unsigned int serial){
         MATHCAP client_mathcap;    MATHCAP client_mathcap;
         LIST list;    LIST list;
         int i;    int i;
         Q q;    Q q;
   
         switch (cmd){    switch (cmd){
                 case SM_dupErrors:      case SM_dupErrors:
                         list=asir_GetErrorList();        list=asir_GetErrorList();
                         asir_push_one((Obj)list);        asir_push_one((Obj)list);
                         break;        break;
                 case SM_getsp:      case SM_getsp:
                         i=asir_OperandStackPtr+1;        i=asir_OperandStackPtr+1;
                         STOQ(i,q);        STOQ(i,q);
                         asir_push_one((Obj)q);        asir_push_one((Obj)q);
                         break;        break;
                 case SM_popSerializedLocalObject:      case SM_popSerializedLocalObject:
                         asir_popSerializedLocalObject();        asir_popSerializedLocalObject();
                         break;        break;
                 case SM_popCMO:      case SM_popCMO:
                         asir_popCMO(serial);        asir_popCMO(serial);
                         break;        break;
                 case SM_popString:      case SM_popString:
                         asir_popString();        asir_popString();
                         break;        break;
                 case SM_setName:      case SM_setName:
                         asir_setName(serial);        asir_setName(serial);
                         break;        break;
                 case SM_evalName:      case SM_evalName:
                         asir_evalName(serial);        asir_evalName(serial);
                         break;        break;
                 case SM_executeStringByLocalParser:      case SM_executeStringByLocalParser:
                         asir_executeString();        asir_executeString();
                         break;        break;
                 case SM_executeFunction:      case SM_executeFunction:
                         asir_executeFunction(serial);        asir_executeFunction(serial);
                         break;        break;
                 case SM_shutdown:      case SM_shutdown:
                         asir_terminate(2);        asir_terminate(2);
                         break;        break;
                 case SM_pops:      case SM_pops:
                         asir_pops();        asir_pops();
                         break;        break;
                 case SM_mathcap:      case SM_mathcap:
                         asir_push_one((Obj)my_mathcap);        asir_push_one((Obj)my_mathcap);
                         break;        break;
                 case SM_setMathcap:      case SM_setMathcap:
                         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_nop:      case SM_nop:
                 default:      default:
                         break;        break;
         }    }
 }  }
   
 static void asir_executeFunction(int serial){  static void asir_executeFunction(int serial){
         char *fn;    char *fn;
         int argc,id,fno;    int argc,id,fno;
         FUNC f;    FUNC f;
         Q ret;    Q ret;
         VL vl;    VL vl;
         ERR err;    ERR err;
         NODE n,n1;    NODE n,n1;
         LIST bytes;    LIST bytes;
   
         fn=((STRING)asir_pop_one())->body;    fn=((STRING)asir_pop_one())->body;
         argc=(int)(((USINT)asir_pop_one())->body);    argc=(int)(((USINT)asir_pop_one())->body);
         for(n=0;argc;argc--){    for(n=0;argc;argc--){
                 NEXTNODE(n,n1);      NEXTNODE(n,n1);
                 BDY(n1)=(pointer)asir_pop_one();      BDY(n1)=(pointer)asir_pop_one();
         }    }
         if(n)NEXT(n1)=0;    if(n)NEXT(n1)=0;
         id=-1;    id=-1;
         fno=modeNO(fn);    fno=modeNO(fn);
         switch (fno){    switch (fno){
         case 0://IFPLOT    case 0://IFPLOT
                 id=plot(n,fno);      id=plot(n,fno);
                 STOQ(id,ret);      STOQ(id,ret);
                 asir_push_one((Obj)ret);      asir_push_one((Obj)ret);
                 break;      break;
         case 1://CONPLOT    case 1://CONPLOT
                 id=plot(n,fno);      id=plot(n,fno);
                 STOQ(id,ret);      STOQ(id,ret);
                 asir_push_one((Obj)ret);      asir_push_one((Obj)ret);
                 break;      break;
         case 2://PLOT    case 2://PLOT
                 id=plot(n,fno);      id=plot(n,fno);
                 STOQ(id,ret);      STOQ(id,ret);
                 asir_push_one((Obj)ret);      asir_push_one((Obj)ret);
                 break;      break;
         case 4://POLARPLOT    case 4://POLARPLOT
                 id=plot(n,fno);      id=plot(n,fno);
                 STOQ(id,ret);      STOQ(id,ret);
                 asir_push_one((Obj)ret);      asir_push_one((Obj)ret);
                 break;      break;
         case 30://MEMORY_PLOT    case 30://MEMORY_PLOT
                 memory_plot(n,&bytes);      memory_plot(n,&bytes);
                 asir_push_one((Obj)bytes);      asir_push_one((Obj)bytes);
                 break;      break;
         case 31://ARRAYPLOT    case 31://ARRAYPLOT
                 id=arrayplot(n);      id=arrayplot(n);
                 STOQ(id,ret);      STOQ(id,ret);
                 asir_push_one((Obj)ret);      asir_push_one((Obj)ret);
                 break;      break;
         case 32://OPEN_CANVAS    case 32://OPEN_CANVAS
                 id=open_canvas(n);      id=open_canvas(n);
                 STOQ(id,ret);      STOQ(id,ret);
                 asir_push_one((Obj)ret);      asir_push_one((Obj)ret);
                 break;      break;
         case 5://PLOTOVER    case 5://PLOTOVER
                 plotover(n);      plotover(n);
                 break;      break;
         case 33://DRAWCIRCLE    case 33://DRAWCIRCLE
                 drawcircle(n);      drawcircle(n);
                 break;      break;
         case 34://DRAW_OBJ    case 34://DRAW_OBJ
                 if(draw_obj(n) < 0 ){      if(draw_obj(n) < 0 ){
                         create_error(&err,serial,LastError,0);        create_error(&err,serial,LastError,0);
                         asir_push_one((Obj)err);        asir_push_one((Obj)err);
                 }      }
                 break;      break;
         case 35://DRAW_STRING    case 35://DRAW_STRING
                 if(draw_string(n)<0){      if(draw_string(n)<0){
                         create_error(&err,serial,LastError,0);        create_error(&err,serial,LastError,0);
                         asir_push_one((Obj)err);        asir_push_one((Obj)err);
                 }      }
                 break;      break;
         case 37://CLEAR_CANVAS    case 37://CLEAR_CANVAS
                 clear_canvas(n);      clear_canvas(n);
                 break;      break;
 // ifplotNG  // ifplotNG
         case 36://OBJ_CP    case 36://OBJ_CP
                 id=objcp(n);      id=objcp(n);
                 STOQ(id,ret);      STOQ(id,ret);
                 asir_push_one((Obj)ret);      asir_push_one((Obj)ret);
                 break;      break;
         case 6://IFPLOTD    case 6://IFPLOTD
         case 7://IFPLOTQ    case 7://IFPLOTQ
         case 8://IFPLOTB    case 8://IFPLOTB
         case 9://INEQND    case 9://INEQND
         case 10://INEQNQ    case 10://INEQNQ
         case 11://INEQNB    case 11://INEQNB
         case 21://CONPLOTD    case 21://CONPLOTD
         case 22://CONPLOTQ    case 22://CONPLOTQ
         case 23://CONPLOTB    case 23://CONPLOTB
 #if defined(INTERVAL)  #if defined(INTERVAL)
         case 24://ITVIFPLOT    case 24://ITVIFPLOT
 #endif  #endif
                 id=ifplotNG(n,fno);      id=ifplotNG(n,fno);
                 STOQ(id,ret);      STOQ(id,ret);
                 asir_push_one((Obj)ret);      asir_push_one((Obj)ret);
                 break;      break;
         case 12://INEQNDAND    case 12://INEQNDAND
         case 13://INEQNQAND    case 13://INEQNQAND
         case 14://INEQNBAND    case 14://INEQNBAND
         case 15://INEQNDOR    case 15://INEQNDOR
         case 16://INEQNQOR    case 16://INEQNQOR
         case 17://INEQNBOR    case 17://INEQNBOR
         case 18://INEQNDXOR    case 18://INEQNDXOR
         case 19://INEQNQXOR    case 19://INEQNQXOR
         case 20://INEQNBXOR    case 20://INEQNBXOR
         case 25://PLOTOVERD    case 25://PLOTOVERD
         case 26://PLOTOVERQ    case 26://PLOTOVERQ
         case 27://PLOTOVERB    case 27://PLOTOVERB
                 id=ifplotOP(n,fno);      id=ifplotOP(n,fno);
                 STOQ(id,ret);      STOQ(id,ret);
                 asir_push_one((Obj)ret);      asir_push_one((Obj)ret);
                 break;      break;
         case 38://POLARPLOTD    case 38://POLARPLOTD
                 id=polarplotNG(n);      id=polarplotNG(n);
                 STOQ(id,ret);      STOQ(id,ret);
                 asir_push_one((Obj)ret);      asir_push_one((Obj)ret);
                 break;      break;
         }    }
 }  }

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.31

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