[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.22 and 1.23

version 1.22, 2011/08/10 04:51:58 version 1.23, 2013/12/19 05:48:24
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.21 2006/02/08 02:11:20 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/plot/ox_plot.c,v 1.22 2011/08/10 04:51:58 saito Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 63  extern int asir_OperandStackSize;
Line 63  extern int asir_OperandStackSize;
 extern Obj *asir_OperandStack;  extern Obj *asir_OperandStack;
 extern int asir_OperandStackPtr;  extern int asir_OperandStackPtr;
   
 /* environement is defined in libpari.a */  // environement is defined in libpari.a
 #if !(PARI_VERSION_CODE > 131588)  #if !(PARI_VERSION_CODE > 131588)
 extern jmp_buf environnement;  extern jmp_buf environnement;
 #endif  #endif
Line 109  void ox_plot_main(int argc,char **argv)
Line 109  void ox_plot_main(int argc,char **argv)
   
 #if !defined(VISUAL)  #if !defined(VISUAL)
         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 )          if(use_x) ds=ConnectionNumber(display);
                 ds = ConnectionNumber(display);          else fprintf(stderr,"Entering no X mode\n");
         else  
                 fprintf(stderr,"Entering no X mode\n");  
 #endif  #endif
         if ( do_message )          if(do_message)fprintf(stderr,"I'm an ox_plot, Version %d.\n",ASIR_VERSION);
                 fprintf(stderr,"I'm an ox_plot, Version %d.\n",ASIR_VERSION);  
   
         if ( SETJMP(ox_env) ) {          if(SETJMP(ox_env)){
                 while ( NEXT(asir_infile) )                  while(NEXT(asir_infile))closecurrentinput();
                         closecurrentinput();  
                 reset_current_computation();                  reset_current_computation();
                 ox_send_sync(0);                  ox_send_sync(0);
         }          }
         while ( 1 ) {          while (1){
 #if defined(VISUAL)  #if defined(VISUAL)
                 process_ox();                  process_ox();
 #else  #else
                 if ( ox_data_is_available(0) )                  if(ox_data_is_available(0)) process_ox();
                         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) )                          if(FD_ISSET(3,&r)) process_ox();
                                 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;
Line 152  static void process_ox()
Line 144  static void process_ox()
         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 )          if(do_message) fprintf(stderr,"#%d Got %s",serial,name_of_id(id));
                 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 )                          if(ox_flushing) break;
                                 break;                          if(do_message) fprintf(stderr," %s\n",name_of_cmd(cmd));
                         if ( do_message )                          if(ret=SETJMP(main_env)){
                                 fprintf(stderr," %s\n",name_of_cmd(cmd));                                  if(ret==1){
                         if ( ret = SETJMP(main_env) ) {  
                                 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);
                                 }                                  }
Line 173  static void process_ox()
Line 162  static void process_ox()
                         break;                          break;
                 case OX_DATA:                  case OX_DATA:
                 case OX_LOCAL_OBJECT_ASIR:                  case OX_LOCAL_OBJECT_ASIR:
                         if ( ox_flushing )                          if(ox_flushing)break;
                                 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 )          if(do_message)fprintf(stderr,"\n");
                 fprintf(stderr,"\n");  
 }  }
   
 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;
Line 237  static void asir_do_cmd(unsigned int cmd,unsigned int 
Line 222  static void asir_do_cmd(unsigned int cmd,unsigned int 
                         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:
Line 246  static void asir_do_cmd(unsigned int cmd,unsigned int 
Line 231  static void asir_do_cmd(unsigned int cmd,unsigned int 
         }          }
 }  }
   
 static void asir_executeFunction(int serial)  static void asir_executeFunction(int serial){
 {          char *fn;
         char *func;          int argc,id;
         int argc;  
         int id;  
         FUNC f;          FUNC f;
         Q ret;          Q ret;
         VL vl;          VL vl;
Line 258  static void asir_executeFunction(int serial)
Line 241  static void asir_executeFunction(int serial)
         NODE n,n1;          NODE n,n1;
         LIST bytes;          LIST bytes;
   
         func = ((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 )          if(n)NEXT(n1)=0;
                 NEXT(n1) = 0;          id=-1;
         id = -1;          if(!strcmp(fn,"plot")){
         if ( !strcmp(func,"plot") ) {                  id=plot(n,MODE_PLOT);
                 id = plot(n);                  STOQ(id,ret);
                 STOQ(id,ret); asir_push_one((Obj)ret);                  asir_push_one((Obj)ret);
         } else if ( !strcmp(func,"memory_plot") ) {          } else if(!strcmp(fn,"ifplot")){
                 memory_plot(n,&bytes); asir_push_one((Obj)bytes);                  id=plot(n,MODE_IFPLOT);
 #if defined(INTERVAL)                  STOQ(id,ret);
         } else if ( !strcmp(func,"itvifplot") ) {                  asir_push_one((Obj)ret);
                 id = itvifplot(n);          } else if(!strcmp(fn,"conplot")){
                 STOQ(id,ret); asir_push_one((Obj)ret);                  id=plot(n,MODE_CONPLOT);
         } else if ( !strcmp(func,"itvplot1") ) {                  STOQ(id,ret);
                 id = itvplot1(n);                  asir_push_one((Obj)ret);
                 STOQ(id,ret); asir_push_one((Obj)ret);          } else if(!strcmp(fn,"polarplot")){
         } else if ( !strcmp(func,"itvplot2") ) {                  id=plot(n,MODE_POLARPLOT);
                 id = itvplot2(n);                  STOQ(id,ret);
                 STOQ(id,ret); asir_push_one((Obj)ret);                  asir_push_one((Obj)ret);
         } else if ( !strcmp(func,"itvplot3") ) {          } else if(!strcmp(fn,"memory_plot")){
                 id = itvplot3(n);                  memory_plot(n,&bytes);
                 STOQ(id,ret); asir_push_one((Obj)ret);                  asir_push_one((Obj)bytes);
         } else if ( !strcmp(func,"itvplot4") ) {          } else if(!strcmp(fn,"arrayplot")){
                 id = itvplot4(n);                  id=arrayplot(n);
                 STOQ(id,ret); asir_push_one((Obj)ret);                  STOQ(id,ret);
         } else if ( !strcmp(func,"ineqnover") ) {                  asir_push_one((Obj)ret);
                 id = ineqnover(n);          } else if(!strcmp(fn,"open_canvas")){
                 STOQ(id,ret); asir_push_one((Obj)ret);                  id=open_canvas(n);
         } else if ( !strcmp(func,"ineqn") ) {                  STOQ(id,ret);
                 id = ineqn(n);                  asir_push_one((Obj)ret);
                 STOQ(id,ret); asir_push_one((Obj)ret);          } else if(!strcmp(fn,"plotover")){
         } else if ( !strcmp(func,"objcp") ) {  
                 id = objcp(n);  
                 STOQ(id,ret); asir_push_one((Obj)ret);  
 #endif  
         } else if ( !strcmp(func,"arrayplot") ) {  
                 id = arrayplot(n);  
                 STOQ(id,ret); asir_push_one((Obj)ret);  
         } else if ( !strcmp(func,"open_canvas") ) {  
                 id = open_canvas(n);  
                 STOQ(id,ret); asir_push_one((Obj)ret);  
         } else if ( !strcmp(func,"plotover") ) {  
                 plotover(n);                  plotover(n);
         } else if ( !strcmp(func,"drawcircle") ) {          } else if(!strcmp(fn,"drawcircle")){
                 drawcircle(n);                  drawcircle(n);
         } else if ( !strcmp(func,"draw_obj") ) {          } else if(!strcmp(fn,"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);
                 }                  }
         } else if ( !strcmp(func,"draw_string") ) {          } else if(!strcmp(fn,"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);
                 }                  }
         } else if ( !strcmp(func,"clear_canvas") ) {          } else if(!strcmp(fn,"clear_canvas")){
                 clear_canvas(n);                  clear_canvas(n);
   // ifplotNG
           } else if(!strcmp(fn,"objcp")){
                   id=objcp(n);
                   STOQ(id,ret);
                   asir_push_one((Obj)ret);
           } else if(!(
                   strcmp(fn,"ifplotD")&strcmp(fn,"ifplotQ")&strcmp(fn,"ifplotB")&
                   strcmp(fn,"ineqnD")&strcmp(fn,"ineqnQ")&strcmp(fn,"ineqnB")&
                   strcmp(fn,"conplotD")&strcmp(fn,"conplotQ")&strcmp(fn,"conplotB"))){
                   id=ifplotNG(n,fn);
                   STOQ(id,ret);
                   asir_push_one((Obj)ret);
           } else if(!(
                   strcmp(fn,"ineqnandD")&strcmp(fn,"ineqnandQ")&strcmp(fn,"ineqnandB")&
                   strcmp(fn,"ineqnorD")&strcmp(fn,"ineqnorQ")&strcmp(fn,"ineqnorB")&
                   strcmp(fn,"ineqnxorD")&strcmp(fn,"ineqnxorQ")&strcmp(fn,"ineqnxorB")&
                   strcmp(fn,"plotoverD")&strcmp(fn,"plotoverQ")&strcmp(fn,"plotoverB"))){
                   id=ifplotOP(n,fn);
                   STOQ(id,ret);
                   asir_push_one((Obj)ret);
   #if defined(INTERVAL)
           } else if(!strcmp(fn,"itvifplot")){
                   id=ifplotNG(n,fn);
                   STOQ(id,ret);
                   asir_push_one((Obj)ret);
   #endif
         }          }
 }  }

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.23

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