=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Kan/primitive.c,v retrieving revision 1.18 retrieving revision 1.21 diff -u -p -r1.18 -r1.21 --- OpenXM/src/kan96xx/Kan/primitive.c 2004/09/17 02:42:57 1.18 +++ OpenXM/src/kan96xx/Kan/primitive.c 2005/07/03 11:08:54 1.21 @@ -1,8 +1,10 @@ -/* $OpenXM: OpenXM/src/kan96xx/Kan/primitive.c,v 1.17 2004/09/16 02:22:03 takayama Exp $ */ +/* $OpenXM: OpenXM/src/kan96xx/Kan/primitive.c,v 1.20 2005/06/16 05:07:23 takayama Exp $ */ /* primitive.c */ /* The functions in this module were in stackmachine.c */ #include +#include +#include #include #include "datatype.h" #include "stackm.h" @@ -200,6 +202,9 @@ void printObject(ob,nl,fp) case Sdouble: fprintf(fp," "); break; + case SbyteArray: + fprintf(fp," "); + break; default: fprintf(fp,"",ob.tag); break; @@ -294,6 +299,9 @@ void printObject(ob,nl,fp) case Sdouble: fprintf(fp,"%f",KopDouble(ob)); break; + case SbyteArray: + printObject(byteArrayToArray(ob),nl,fp); /* Todo: I should save memory.*/ + break; default: fprintf(fp,"[Unknown object tag.]"); break; @@ -416,12 +424,12 @@ void KdefinePrimitiveFunctions() { int executePrimitive(ob) struct object ob; { - struct object ob1; - struct object ob2; - struct object ob3; - struct object ob4; - struct object ob5; - struct object rob; + struct object ob1 = OINIT; + struct object ob2 = OINIT; + struct object ob3 = OINIT; + struct object ob4 = OINIT; + struct object ob5 = OINIT; + struct object rob = OINIT; struct object obArray[OB_ARRAY_MAX]; struct object obArray2[OB_ARRAY_MAX]; int size; @@ -434,11 +442,11 @@ int executePrimitive(ob) FILE *fp; char *fname; int rank; - struct object oMat; + struct object oMat = OINIT; static int timerStart = 1; static struct tms before, after; static time_t before_real, after_real; - struct object oInput; + struct object oInput = OINIT; char *str; int ccflag = 0; extern int KeepInput; @@ -514,6 +522,11 @@ int executePrimitive(ob) } Kpush(ob3); break; + case SbyteArray: + n = getByteArraySize(ob2); + ob3 = newByteArray(n,ob2); + Kpush(ob3); + break; default: Kpush(ob2); break; @@ -656,6 +669,17 @@ int executePrimitive(ob) errorStackmachine("Index is out of bound. (put)\n"); } break; + case SbyteArray: + i = ob2.lc.ival; + size = getByteArraySize(ob3); + if ((0 <= i) && (i