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

Diff for /OpenXM_contrib2/asir2000/builtin/print.c between version 1.15 and 1.20

version 1.15, 2003/11/08 01:12:02 version 1.20, 2005/12/10 14:14:15
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/builtin/print.c,v 1.14 2001/10/09 01:36:07 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/print.c,v 1.19 2005/09/28 08:08:34 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
   
 void Pprint();  void Pprint();
 void Pquotetolist();  void Pquotetolist();
   void Pobjtoquote();
 void Peval_variables_in_quote();  void Peval_variables_in_quote();
 void Pset_print_function();  void Pset_print_function();
   
 struct ftab print_tab[] = {  struct ftab print_tab[] = {
         {"print",Pprint,-2},          {"print",Pprint,-2},
           {"objtoquote",Pobjtoquote,1},
         {"quotetolist",Pquotetolist,1},          {"quotetolist",Pquotetolist,1},
         {"eval_variables_in_quote",Peval_variables_in_quote,1},          {"eval_variables_in_quote",Peval_variables_in_quote,1},
         {"set_print_function",Pset_print_function,-1},          {"set_print_function",Pset_print_function,-1},
Line 66  struct ftab print_tab[] = {
Line 68  struct ftab print_tab[] = {
 void Pprint(NODE arg,pointer *rp)  void Pprint(NODE arg,pointer *rp)
 {  {
         Obj obj;          Obj obj;
         OPTLIST opt;          Q opt;
   
         if ( arg ) {          if ( arg ) {
                 obj = (Obj)ARG0(arg);                  obj = (Obj)ARG0(arg);
                 if ( NEXT(arg) ) {                  if ( NEXT(arg) ) {
                         opt = (OPTLIST)ARG1(arg);                          opt = (Q)ARG1(arg);
                         if ( INT(opt) ) {                          if ( INT(opt) ) {
                                 printexpr(CO,obj);                                  printexpr(CO,obj);
                                 switch ( QTOS((Q)opt) ) {                                  switch ( QTOS(opt) ) {
                                         case 0:                                          case 0:
                                                 break;                                                  break;
                                         case 2:                                          case 2:
Line 83  void Pprint(NODE arg,pointer *rp)
Line 85  void Pprint(NODE arg,pointer *rp)
                                         case 1: default:                                          case 1: default:
                                                 putc('\n',asir_out); break;                                                  putc('\n',asir_out); break;
                                 }                                  }
                         } else if ( OID(opt) == O_OPTLIST ) {  
                         } else                          } else
                                 error("print : invalid argument");                                  error("print : invalid argument");
                 } else {                  } else {
Line 94  void Pprint(NODE arg,pointer *rp)
Line 95  void Pprint(NODE arg,pointer *rp)
         *rp = 0;          *rp = 0;
 }  }
   
   void Pobjtoquote(NODE arg,QUOTE *rp)
   {
           objtoquote(ARG0(arg),rp);
   }
   
 void Pquotetolist(NODE arg,LIST *rp)  void Pquotetolist(NODE arg,LIST *rp)
 {  {
         asir_assert(ARG0(arg),O_QUOTE,"quotetolist");          asir_assert(ARG0(arg),O_QUOTE,"quotetolist");
Line 208  void fnodetotree(FNODE f,LIST *rp)
Line 214  void fnodetotree(FNODE f,LIST *rp)
                         MKLIST(*rp,n);                          MKLIST(*rp,n);
                         break;                          break;
   
                   case I_NARYOP:
                           /* head */
                           MKSTR(head,"n_op");
                           n = (NODE)FA1(f);
                           for ( t0 = 0; n; n = NEXT(n) ) {
                                   NEXTNODE(t0,t);
                                   fnodetotree((FNODE)BDY(n),&a1);
                                   BDY(t) = (pointer)a1;
                           }
                           MKSTR(op,((ARF)FA0(f))->name);
                           MKNODE(t,op,t0);
                           MKNODE(n,head,t);
                           MKLIST(*rp,n);
                           break;
   
                 /* ternary operators */                  /* ternary operators */
                 case I_CE:                  case I_CE:
                         MKSTR(head,"t_op");                          MKSTR(head,"t_op");
Line 235  void fnodetotree(FNODE f,LIST *rp)
Line 256  void fnodetotree(FNODE f,LIST *rp)
                         break;                          break;
   
                 /* function */                  /* function */
                 case I_FUNC: case I_CAR: case I_CDR: case I_EV:                  case I_FUNC: case I_FUNC_QARG: case I_CAR: case I_CDR: case I_EV:
                         MKSTR(head,"function");                          MKSTR(head,"function");
                         switch ( f->id ) {                          switch ( f->id ) {
                                 case I_FUNC:                                  case I_FUNC: case I_FUNC_QARG:
                                         MKSTR(op,((FUNC)FA0(f))->name);                                          MKSTR(op,((FUNC)FA0(f))->fullname);
                                         fnodetotree((FNODE)FA1(f),&a1);                                          fnodetotree((FNODE)FA1(f),&a1);
                                         break;                                          break;
                                 case I_CAR:                                  case I_CAR:

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.20

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