version 1.17, 2004/09/16 02:22:03 |
version 1.19, 2004/09/20 02:11:22 |
|
|
/* $OpenXM: OpenXM/src/kan96xx/Kan/primitive.c,v 1.16 2004/09/12 10:58:28 takayama Exp $ */ |
/* $OpenXM: OpenXM/src/kan96xx/Kan/primitive.c,v 1.18 2004/09/17 02:42:57 takayama Exp $ */ |
/* primitive.c */ |
/* primitive.c */ |
/* The functions in this module were in stackmachine.c */ |
/* The functions in this module were in stackmachine.c */ |
|
|
Line 200 void printObject(ob,nl,fp) |
|
Line 200 void printObject(ob,nl,fp) |
|
case Sdouble: |
case Sdouble: |
fprintf(fp,"<double> "); |
fprintf(fp,"<double> "); |
break; |
break; |
|
case SbyteArray: |
|
fprintf(fp,"<byteArray> "); |
|
break; |
default: |
default: |
fprintf(fp,"<Unknown object tag. %d >",ob.tag); |
fprintf(fp,"<Unknown object tag. %d >",ob.tag); |
break; |
break; |
Line 294 void printObject(ob,nl,fp) |
|
Line 297 void printObject(ob,nl,fp) |
|
case Sdouble: |
case Sdouble: |
fprintf(fp,"%f",KopDouble(ob)); |
fprintf(fp,"%f",KopDouble(ob)); |
break; |
break; |
|
case SbyteArray: |
|
printObject(byteArrayToArray(ob),nl,fp); /* Todo: I should save memory.*/ |
|
break; |
default: |
default: |
fprintf(fp,"[Unknown object tag.]"); |
fprintf(fp,"[Unknown object tag.]"); |
break; |
break; |
Line 446 int executePrimitive(ob) |
|
Line 452 int executePrimitive(ob) |
|
extern struct ring *CurrentRingp; |
extern struct ring *CurrentRingp; |
extern TimerOn; |
extern TimerOn; |
extern SecureMode; |
extern SecureMode; |
|
extern int RestrictedMode; |
|
|
infixOn = 0; |
infixOn = 0; |
|
|
Line 453 int executePrimitive(ob) |
|
Line 460 int executePrimitive(ob) |
|
fprintf(Fstack,"In execute %d\n",ob.lc.ival); printOperandStack(); |
fprintf(Fstack,"In execute %d\n",ob.lc.ival); printOperandStack(); |
} |
} |
|
|
|
if (RestrictedMode) { |
|
switch(ob.lc.ival) { |
|
case SleftBrace: |
|
case SrightBrace: |
|
case Sexec: |
|
break; |
|
default: |
|
fprintf(stderr,"primitive No = %d : ", ob.lc.ival); |
|
errorStackmachine("You cannot use this primitive in the RestrictedMode.\n"); |
|
} |
|
} |
|
|
if (GotoP) return(0); |
if (GotoP) return(0); |
switch (ob.lc.ival) { |
switch (ob.lc.ival) { |
/* Postscript primitives :stack */ |
/* Postscript primitives :stack */ |
Line 501 int executePrimitive(ob) |
|
Line 520 int executePrimitive(ob) |
|
} |
} |
Kpush(ob3); |
Kpush(ob3); |
break; |
break; |
|
case SbyteArray: |
|
n = getByteArraySize(ob2); |
|
ob3 = newByteArray(n,ob2); |
|
Kpush(ob3); |
|
break; |
default: |
default: |
Kpush(ob2); |
Kpush(ob2); |
break; |
break; |
Line 643 int executePrimitive(ob) |
|
Line 667 int executePrimitive(ob) |
|
errorStackmachine("Index is out of bound. (put)\n"); |
errorStackmachine("Index is out of bound. (put)\n"); |
} |
} |
break; |
break; |
|
case SbyteArray: |
|
i = ob2.lc.ival; |
|
size = getByteArraySize(ob3); |
|
if ((0 <= i) && (i<size)) { |
|
if (ob1.tag != Sinteger) ob1 = Kto_int32(ob1); |
|
if (ob1.tag != Sinteger) errorStackmachine("One can put only integer.\n"); |
|
KopByteArray(ob3)[i] = KopInteger(ob1); |
|
}else{ |
|
errorStackmachine("Index is out of bound. (put)\n"); |
|
} |
|
break; |
default: errorStackmachine("Usage:put"); |
default: errorStackmachine("Usage:put"); |
} |
} |
break; |
break; |
Line 713 int executePrimitive(ob) |
|
Line 748 int executePrimitive(ob) |
|
break; |
break; |
case Spoly: |
case Spoly: |
Kpush(KpoInteger(KpolyLength(KopPOLY(ob1)))); |
Kpush(KpoInteger(KpolyLength(KopPOLY(ob1)))); |
|
break; |
|
case SbyteArray: |
|
Kpush(KpoInteger(getByteArraySize(ob1))); |
break; |
break; |
default: errorStackmachine("Usage:length"); |
default: errorStackmachine("Usage:length"); |
} |
} |