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

Diff for /OpenXM/src/kan96xx/Kan/kanExport0.c between version 1.31 and 1.33

version 1.31, 2004/09/09 03:14:46 version 1.33, 2004/09/11 01:00:42
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/kan96xx/Kan/kanExport0.c,v 1.30 2004/09/04 11:25:58 takayama Exp $  */  /* $OpenXM: OpenXM/src/kan96xx/Kan/kanExport0.c,v 1.32 2004/09/09 11:42:22 takayama Exp $  */
 #include <stdio.h>  #include <stdio.h>
 #include "datatype.h"  #include "datatype.h"
 #include "stackm.h"  #include "stackm.h"
Line 919  struct object KdataConversion(obj,key)
Line 919  struct object KdataConversion(obj,key)
       return(rob);        return(rob);
     }else if (strcmp(key,"poly") == 0) {      }else if (strcmp(key,"poly") == 0) {
       rob = KpoPOLY(ZERO);        rob = KpoPOLY(ZERO);
         return rob;
       }else if (strcmp(key,"array") == 0) {
         rob = newObjectArray(0);
         return rob;
     }else{      }else{
       warningKan("Sorry. The data conversion from null to this data type has not supported yet.\n");        warningKan("Sorry. The data conversion from null to this data type has not supported yet.\n");
     }      }
Line 1015  struct object KdataConversion(obj,key)
Line 1019  struct object KdataConversion(obj,key)
     if (strcmp(key,"array") == 0) {      if (strcmp(key,"array") == 0) {
       return(rob);        return(rob);
     }else if (strcmp(key,"list") == 0) {      }else if (strcmp(key,"list") == 0) {
       rob = *( arrayToList(obj) );        rob = KarrayToList(obj);
       return(rob);        return(rob);
     }else if (strcmp(key,"arrayOfPOLY")==0) {      }else if (strcmp(key,"arrayOfPOLY")==0) {
       rob = KpoArrayOfPOLY(arrayToArrayOfPOLY(obj));        rob = KpoArrayOfPOLY(arrayToArrayOfPOLY(obj));
Line 1108  struct object KdataConversion(obj,key)
Line 1112  struct object KdataConversion(obj,key)
     break;      break;
   case Slist:    case Slist:
     if (strcmp(key,"array") == 0) {      if (strcmp(key,"array") == 0) {
       rob = listToArray(&obj);        rob = KlistToArray(obj);
       return(rob);        return(rob);
     }      }
     break;      break;
Line 2958  struct object Krest(struct object ob) {
Line 2962  struct object Krest(struct object ob) {
       putoa(rob,i-1,getoa(ob,i));        putoa(rob,i-1,getoa(ob,i));
     }      }
     return rob;      return rob;
   }else if (ob.tag == Slist) {    }else if ((ob.tag == Slist) || (ob.tag == Snull)) {
     errorKan1("%s\n","Krest: it has not yet been implemented.");      return Kcdr(ob);
   }else{    }else{
     errorKan1("%s\n","Krest(ob): ob must be an array or a list.");      errorKan1("%s\n","Krest(ob): ob must be an array or a list.");
   }    }
Line 2977  struct object Kjoin(struct object ob1, struct object o
Line 2981  struct object Kjoin(struct object ob1, struct object o
       putoa(rob,i,getoa(ob2,i-n1));        putoa(rob,i,getoa(ob2,i-n1));
     }      }
     return rob;      return rob;
     }else if ((ob1.tag == Slist) || (ob1.tag == Snull)) {
           if ((ob2.tag == Slist) || (ob2.tag == Snull)) {
             return KvJoin(ob1,ob2);
           }else{
             errorKan1("%s\n","Kjoin: both argument must be a list.");
           }
   }else{    }else{
     errorKan1("%s\n","Kjoin: arguments must be arrays.");      errorKan1("%s\n","Kjoin: arguments must be arrays.");
   }    }
 }  }
   
   struct object Kget(struct object ob1, struct object ob2) {
     struct object rob;
     struct object tob;
     int i,j,size,n;
     if (ob2.tag == Sinteger) {
       i =ob2.lc.ival;
     }else if (ob2.tag == SuniversalNumber) {
       i = KopInteger(KdataConversion(ob2,"integer"));
     }else if (ob2.tag == Sarray) {
       n = getoaSize(ob2);
       if (n == 0) return ob1;
       rob = ob1;
       for (i=0; i<n; i++) {
         rob=Kget(rob,getoa(ob2,i));
       }
       return rob;
     }
     if (ob1.tag == Sarray) {
       size = getoaSize(ob1);
       if ((0 <= i) && (i<size)) {
         return(getoa(ob1,i));
       }else{
         errorKan1("%s\n","Kget: Index is out of bound. (get)\n");
       }
     }else if (ob1.tag == Slist) {
       rob = NullObject;
       if (i < 0) errorKan1("%s\n","Kget: Index is negative. (get)");
       for (j=0; j<i; j++) {
         rob = Kcdr(ob1);
         if ((ob1.tag == Snull) && (rob.tag == Snull)) {
           errorKan1("%s\n","Kget: Index is out of bound. (get) cdr of null list.\n");
         }
         ob1 = rob;
       }
       return Kcar(ob1);
     }else errorKan1("%s\n","Kget: argument must be an array or a list.");
   }
   
 /******************************************************************  /******************************************************************
      error handler       error handler

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

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