[BACK]Return to list.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / Kan

Diff for /OpenXM/src/kan96xx/Kan/list.c between version 1.3 and 1.4

version 1.3, 2001/05/04 01:06:24 version 1.4, 2004/09/09 11:42:22
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kan96xx/Kan/list.c,v 1.2 2000/01/16 07:55:39 takayama Exp $ */  /* $OpenXM: OpenXM/src/kan96xx/Kan/list.c,v 1.3 2001/05/04 01:06:24 takayama Exp $ */
 /* list.c */  /* list.c */
 #include <stdio.h>  #include <stdio.h>
 #include "datatype.h"  #include "datatype.h"
Line 180  static warningList(str)
Line 180  static warningList(str)
   fprintf(stderr,"Warning. list.c: %s\n",str);    fprintf(stderr,"Warning. list.c: %s\n",str);
 }  }
   
   struct object KvJoin(struct object listo1,struct object listo2) {
     struct object rob;
     struct object *op1,*op2;
     if (listo1.tag == Snull) return listo2;
     if (listo2.tag == Snull) return listo1;
     if ((listo1.tag == Slist) && (listo2.tag == Slist)) {
       op1 = (struct object *)sGC_malloc(sizeof(struct object));
       op2 = (struct object *)sGC_malloc(sizeof(struct object));
       if ((op1 == NULL) || (op2 == NULL)) errorKan1("%s\n","KvJoin, No more memory.");
       *op1 = listo1; *op2 = listo2;
       rob = *(vJoin(op1,op2));
       return rob;
     }else{
       errorKan1("%s\n","KvJoin(Slist,Slist)");
     }
   }
   struct object Kcar(struct object listo) {
     if (listo.tag == Snull) return listo;
     if (listo.tag == Slist) {
       return car(&listo);
     }else{
       errorKan1("%s\n","Kcar(Slist)");
     }
   }
   struct object Kcdr(struct object listo) {
     struct object *op;
     struct object rob;
     if (listo.tag == Snull) return listo;
     if (listo.tag == Slist) {
       op = cdr(&listo);
       if (isNullList(op)) {
         rob = NullObject;
       }else{
         rob = *op;
       }
       return rob;
     }else{
       errorKan1("%s\n","Kcar(Slist)");
     }
   }
   struct object KlistToArray(struct object listo) {
     if (listo.tag == Snull) {
       return newObjectArray(0);
     }
     if (listo.tag == Slist) {
       return listToArray(&listo);
     }else{
       errorKan1("%s\n","KlistToArray(Slist)");
     }
   }
   struct object KarrayToList(struct object ob) {
     struct object *op;
     if (ob.tag != Sarray) {
       errorKan1("%s\n","KarrayToList(Sarray)");
     }
     op = arrayToList(ob);
     if (isNullList(op)) return NullObject;
     return *op;
   }
   
 /********************** test codes for Stest: ********************/  /********************** test codes for Stest: ********************/
 /* test of objectArrayToObjectList. in Stest: stackmachine.c  /* test of objectArrayToObjectList. in Stest: stackmachine.c

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

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