version 1.10, 2003/12/06 02:35:54 |
version 1.15, 2016/08/28 02:43:14 |
|
|
/*$OpenXM: OpenXM/src/kan96xx/plugin/cmo.c,v 1.9 2001/09/01 01:37:49 takayama Exp $*/ |
/*$OpenXM: OpenXM/src/kan96xx/plugin/cmo.c,v 1.14 2013/11/06 06:23:24 takayama Exp $*/ |
#include <stdio.h> |
#include <stdio.h> |
#include <string.h> |
#include <string.h> |
/* #include <netinet/in.h> */ |
/* #include <netinet/in.h> */ |
Line 47 extern struct ring *CurrentRingp; |
|
Line 47 extern struct ring *CurrentRingp; |
|
extern struct ring *SmallRingp; |
extern struct ring *SmallRingp; |
extern int CmoDMSOutputOption; |
extern int CmoDMSOutputOption; |
|
|
struct object NullObjectInCmo; |
struct object NullObjectInCmo = OINIT; |
|
|
extern int SerialCurrent; |
extern int SerialCurrent; |
extern int DebugCMO; |
extern int DebugCMO; |
Line 162 dumpCmoBuf(struct cmoBuffer *cb) |
|
Line 162 dumpCmoBuf(struct cmoBuffer *cb) |
|
char *s; |
char *s; |
if (cb->isStream) { |
if (cb->isStream) { |
printf("cmoBuffer is directed to a stream.\n"); |
printf("cmoBuffer is directed to a stream.\n"); |
return; |
return 0; |
} |
} |
size = cb->pos; |
size = cb->pos; |
s = (char *)(cb->buf); |
s = (char *)(cb->buf); |
Line 173 dumpCmoBuf(struct cmoBuffer *cb) |
|
Line 173 dumpCmoBuf(struct cmoBuffer *cb) |
|
printf("%3x",(int)(unsigned char)s[i]); |
printf("%3x",(int)(unsigned char)s[i]); |
} |
} |
putchar('\n'); |
putchar('\n'); |
|
return 0; |
} |
} |
|
|
/* This obsolete function is used to write data |
/* This obsolete function is used to write data |
Line 213 struct object streamToCmo(struct object of) |
|
Line 214 struct object streamToCmo(struct object of) |
|
{ |
{ |
int c; |
int c; |
unsigned char s[1]; |
unsigned char s[1]; |
struct object ob; |
struct object ob = OINIT; |
int file2 = 0; |
int file2 = 0; |
if (of.tag == Sfile) { |
if (of.tag == Sfile) { |
|
|
Line 625 POLY cmoGetMonomial32(struct cmoBuffer *cb) |
|
Line 626 POLY cmoGetMonomial32(struct cmoBuffer *cb) |
|
/* ------------------------------------- */ |
/* ------------------------------------- */ |
void cmoObjectToCmo00(struct object ob) |
void cmoObjectToCmo00(struct object ob) |
{ |
{ |
struct object rob; |
struct object rob = OINIT; |
cmoint tmp[16]; |
cmoint tmp[16]; |
char tmpc[16]; |
char tmpc[16]; |
int i,size; |
int i,size; |
struct object vlist, vlist0; |
struct object vlist = OINIT; |
|
struct object vlist0 = OINIT; |
int m; |
int m; |
struct object ob2; |
struct object ob2 = OINIT; |
|
|
/* NO initialization */ |
/* NO initialization */ |
switch(ob.tag) { |
switch(ob.tag) { |
Line 777 void cmoObjectToCmo00(struct object ob) |
|
Line 779 void cmoObjectToCmo00(struct object ob) |
|
|
|
struct object cmoObjectToCmo(struct object ob) |
struct object cmoObjectToCmo(struct object ob) |
{ |
{ |
struct object rob; |
struct object rob = OINIT; |
if (DebugCMO) { |
if (DebugCMO) { |
fprintf(stderr,"cmoObjectToCmo: "); |
fprintf(stderr,"cmoObjectToCmo: "); |
printObject(ob,1,stderr); |
printObject(ob,1,stderr); |
Line 805 int Lisplike = 0; |
|
Line 807 int Lisplike = 0; |
|
|
|
struct object cmoCmoToObject00(struct cmoBuffer *cb) |
struct object cmoCmoToObject00(struct cmoBuffer *cb) |
{ |
{ |
struct object rob; |
struct object rob = OINIT; |
struct object ob1; |
struct object ob1 = OINIT; |
struct object ob2; |
struct object ob2 = OINIT; |
int tt,ival; |
int tt,ival; |
int i,size; |
int i,size; |
MP_INT *mi; |
MP_INT *mi; |
MP_INT *mi2; |
MP_INT *mi2; |
struct ring *oldringp; |
struct ring *oldringp; |
char tmpc[16]; |
char tmpc[16]; |
struct object vlist, vlist0; |
struct object vlist = OINIT; |
|
struct object vlist0 = OINIT; |
int k; |
int k; |
int m; |
int m; |
struct object ob; |
struct object ob = OINIT; |
|
|
|
|
tt = cmoGetIntFromBuf(CMOGET,cb); /* read the tag */ |
tt = cmoGetIntFromBuf(CMOGET,cb); /* read the tag */ |
Line 1064 struct object cmoCmoToObject00(struct cmoBuffer *cb) |
|
Line 1067 struct object cmoCmoToObject00(struct cmoBuffer *cb) |
|
|
|
struct object cmoCmoToObject(struct object ob) |
struct object cmoCmoToObject(struct object ob) |
{ |
{ |
struct object rob; |
struct object rob = OINIT; |
struct object ob0; |
struct object ob0 = OINIT; |
struct cmoBuffer *cb; |
struct cmoBuffer *cb; |
if (!(ob.tag == Sclass && ob.lc.ival == CMO)) { |
if (!(ob.tag == Sclass && ob.lc.ival == CMO)) { |
rob.tag = Snull; |
rob.tag = Snull; |
Line 1089 struct object cmoCmoToObject(struct object ob) |
|
Line 1092 struct object cmoCmoToObject(struct object ob) |
|
} |
} |
|
|
struct object cmoListToPoly(struct object ob) { |
struct object cmoListToPoly(struct object ob) { |
struct object ob0; |
struct object ob0 = OINIT; |
struct object rob; |
struct object rob = OINIT; |
int i,n; |
int i,n; |
if (ob.tag == Sarray) { |
if (ob.tag == Sarray) { |
n = getoaSize(ob); |
n = getoaSize(ob); |
Line 1116 struct object cmoListToPoly(struct object ob) { |
|
Line 1119 struct object cmoListToPoly(struct object ob) { |
|
struct object cmoListToPoly2(struct object ob) |
struct object cmoListToPoly2(struct object ob) |
{ |
{ |
int size,i; |
int size,i; |
struct object ob0,ob1; |
struct object ob0 = OINIT; |
|
struct object ob1 = OINIT; |
POLY f; |
POLY f; |
/* |
/* |
printf("<<");printObject(ob,0,stdout); printf(">>\n"); fflush(stdout); |
printf("<<");printObject(ob,0,stdout); printf(">>\n"); fflush(stdout); |
|
|
POLY cmoListToPOLY(struct object ob) |
POLY cmoListToPOLY(struct object ob) |
{ |
{ |
int size,i; |
int size,i; |
struct object ob0,ob1; |
struct object ob0 = OINIT; |
|
struct object ob1 = OINIT; |
POLY f; |
POLY f; |
/* |
/* |
printf("<<");printObject(ob,0,stdout); printf(">>\n"); fflush(stdout); |
printf("<<");printObject(ob,0,stdout); printf(">>\n"); fflush(stdout); |
Line 1196 POLY cmoListToPOLY(struct object ob) |
|
Line 1201 POLY cmoListToPOLY(struct object ob) |
|
int Kan_PushBinary(int size,void *data) |
int Kan_PushBinary(int size,void *data) |
{ |
{ |
struct cmoBuffer cb; |
struct cmoBuffer cb; |
struct object ob; |
struct object ob = OINIT; |
cb.pos = size; |
cb.pos = size; |
cb.rpos = 0; |
cb.rpos = 0; |
cb.buf = data; |
cb.buf = data; |
Line 1209 int Kan_PushBinary(int size,void *data) |
|
Line 1214 int Kan_PushBinary(int size,void *data) |
|
|
|
void *Kan_PopBinary(int *sizep) |
void *Kan_PopBinary(int *sizep) |
{ |
{ |
struct object ob; |
struct object ob = OINIT; |
struct cmoBuffer *cb; |
struct cmoBuffer *cb; |
ob = KSpop(); |
ob = KSpop(); |
ob = cmoObjectToCmo(ob); |
ob = cmoObjectToCmo(ob); |
Line 1228 void *Kan_PopBinary(int *sizep) |
|
Line 1233 void *Kan_PopBinary(int *sizep) |
|
struct object cmoObjectFromStream(struct object obStream) |
struct object cmoObjectFromStream(struct object obStream) |
{ |
{ |
struct cmoBuffer cb; |
struct cmoBuffer cb; |
struct object rob; |
struct object rob = OINIT; |
extern DebugCMO; |
extern DebugCMO; |
if (obStream.tag != Sfile) { |
if (obStream.tag != Sfile) { |
errorCmo("cmoObjectFromStream: Argument must be of type file."); |
errorCmo("cmoObjectFromStream: Argument must be of type file."); |
Line 1246 struct object cmoObjectFromStream(struct object obStre |
|
Line 1251 struct object cmoObjectFromStream(struct object obStre |
|
struct object cmoObjectFromStream2(FILE2 *fp2) |
struct object cmoObjectFromStream2(FILE2 *fp2) |
{ |
{ |
struct cmoBuffer cb; |
struct cmoBuffer cb; |
struct object rob; |
struct object rob = OINIT; |
cb.isStream=1; cb.fp = fp2; |
cb.isStream=1; cb.fp = fp2; |
cmoGetIntFromBuf(CMOINITSTREAM,&cb); |
cmoGetIntFromBuf(CMOINITSTREAM,&cb); |
rob = cmoCmoToObject00(&cb); |
rob = cmoCmoToObject00(&cb); |
Line 1261 struct object cmoObjectFromStream2(FILE2 *fp2) |
|
Line 1266 struct object cmoObjectFromStream2(FILE2 *fp2) |
|
|
|
struct object cmoObjectToStream(struct object ob, struct object obStream) |
struct object cmoObjectToStream(struct object ob, struct object obStream) |
{ |
{ |
struct object rob; |
struct object rob = OINIT; |
extern int DebugCMO; |
extern int DebugCMO; |
if (obStream.tag != Sfile) { |
if (obStream.tag != Sfile) { |
errorCmo("cmoObjectToStream: Argument must be of type file."); |
errorCmo("cmoObjectToStream: Argument must be of type file."); |
Line 1278 struct object cmoObjectToStream(struct object ob, stru |
|
Line 1283 struct object cmoObjectToStream(struct object ob, stru |
|
|
|
struct object cmoObjectToStream2(struct object ob, FILE2 *fp2) |
struct object cmoObjectToStream2(struct object ob, FILE2 *fp2) |
{ |
{ |
struct object rob; |
struct object rob = OINIT; |
cmoOutputToBuf(CMOINITSTREAM,(void *)fp2,0); |
cmoOutputToBuf(CMOINITSTREAM,(void *)fp2,0); |
if (DebugCMO) { |
if (DebugCMO) { |
fprintf(stderr,"cmoObjectToStream2: "); |
fprintf(stderr,"cmoObjectToStream2: "); |
Line 1292 struct object cmoObjectToStream2(struct object ob, FIL |
|
Line 1297 struct object cmoObjectToStream2(struct object ob, FIL |
|
|
|
int Kan_pushCMOFromStream(FILE2 *fp) |
int Kan_pushCMOFromStream(FILE2 *fp) |
{ |
{ |
struct object ob; |
struct object ob = OINIT; |
struct object rob; |
struct object rob = OINIT; |
ob.tag = Sfile; ob.rc.voidp = (void *)fp; ob.lc.str = MAGIC2; |
ob.tag = Sfile; ob.rc.voidp = (void *)fp; ob.lc.str = MAGIC2; |
rob = cmoObjectFromStream(ob); |
rob = cmoObjectFromStream(ob); |
KSpush(rob); |
KSpush(rob); |
Line 1302 int Kan_pushCMOFromStream(FILE2 *fp) |
|
Line 1307 int Kan_pushCMOFromStream(FILE2 *fp) |
|
|
|
int Kan_popCMOToStream(FILE2 *fp,int serial) |
int Kan_popCMOToStream(FILE2 *fp,int serial) |
{ |
{ |
struct object ob; |
struct object ob = OINIT; |
struct object sob; |
struct object sob = OINIT; |
sob.tag = Sfile; sob.rc.file = (void *)fp; sob.lc.str = MAGIC2; |
sob.tag = Sfile; sob.rc.file = (void *)fp; sob.lc.str = MAGIC2; |
ob = Kpop(); |
ob = Kpop(); |
/*outfp2(fp);*/ /* outfp2 is for debugging. see develop/97feb.. 1999, 1/19*/ |
/*outfp2(fp);*/ /* outfp2 is for debugging. see develop/97feb.. 1999, 1/19*/ |
Line 1326 int Kan_setMathCapToStream(FILE2 *fp,struct object ob) |
|
Line 1331 int Kan_setMathCapToStream(FILE2 *fp,struct object ob) |
|
|
|
/* It is declared in oxmisc2.h, too. */ |
/* It is declared in oxmisc2.h, too. */ |
struct object newMathCap(struct mathCap *mathcap){ |
struct object newMathCap(struct mathCap *mathcap){ |
struct object rob; |
struct object rob = OINIT; |
struct object ob1; |
struct object ob1 = OINIT; |
struct object ob2; |
struct object ob2 = OINIT; |
struct object ob3; |
struct object ob3 = OINIT; |
struct object obOx; |
struct object obOx = OINIT; |
struct object obSm; |
struct object obSm = OINIT; |
struct object ob3tmp; |
struct object ob3tmp = OINIT; |
struct object *obp; |
struct object *obp; |
int i,j; |
int i,j; |
struct object mathinfo; |
struct object mathinfo = OINIT; |
|
|
rob = newObjectArray(3); |
rob = newObjectArray(3); |
|
|
Line 1379 void *KSmathCapByStruct(void) |
|
Line 1384 void *KSmathCapByStruct(void) |
|
/* Return the math cap of kan/sm1 with cmo.c as a mathcap classObject*/ |
/* Return the math cap of kan/sm1 with cmo.c as a mathcap classObject*/ |
{ |
{ |
struct mathCap *mathcap; |
struct mathCap *mathcap; |
struct object ob; |
struct object ob = OINIT; |
char *s1,*s2; |
char *s1,*s2; |
struct object *mathinfo; |
struct object *mathinfo; |
char *sys; |
char *sys; |
Line 1436 void *KSmathCapByStruct(void) |
|
Line 1441 void *KSmathCapByStruct(void) |
|
mathcap->cmo[19]= CMO_64BIT_MACHINE_DOUBLE; |
mathcap->cmo[19]= CMO_64BIT_MACHINE_DOUBLE; |
mathcap->cmo[20]= CMO_ARRAY; |
mathcap->cmo[20]= CMO_ARRAY; |
mathcap->cmo[21]= CMO_RATIONAL; |
mathcap->cmo[21]= CMO_RATIONAL; |
|
mathcap->cmo[22]= CMO_QQ; |
|
|
mathcap->n = 22 ; /* This is the number of cmo object. You can use |
mathcap->n = 23 ; /* This is the number of cmo object. You can use |
cmo upto 1023. see mathcap.h */ |
cmo upto 1023. see mathcap.h */ |
|
|
mathcap->ox[0] = OX_DATA; |
mathcap->ox[0] = OX_DATA; |
Line 1456 void *KSmathCapByStruct(void) |
|
Line 1462 void *KSmathCapByStruct(void) |
|
mathcap->sm[9] = SM_getsp; |
mathcap->sm[9] = SM_getsp; |
mathcap->sm[10] = SM_dupErrors; |
mathcap->sm[10] = SM_dupErrors; |
mathcap->sm[11] = SM_pushCMOtag; |
mathcap->sm[11] = SM_pushCMOtag; |
mathcap->smSize = 12; |
mathcap->sm[12] = SM_executeFunctionWithOptionalArgument; |
|
mathcap->sm[13] = SM_nop; |
|
mathcap->smSize = 14; |
|
|
return((void *)mathcap); |
return((void *)mathcap); |
} |
} |