=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/plugin/cmo.c,v retrieving revision 1.8 retrieving revision 1.12 diff -u -p -r1.8 -r1.12 --- OpenXM/src/kan96xx/plugin/cmo.c 2001/05/04 01:06:29 1.8 +++ OpenXM/src/kan96xx/plugin/cmo.c 2004/08/28 12:50:06 1.12 @@ -1,4 +1,4 @@ -/*$OpenXM: OpenXM/src/kan96xx/plugin/cmo.c,v 1.7 2001/04/15 07:55:07 takayama Exp $*/ +/*$OpenXM: OpenXM/src/kan96xx/plugin/cmo.c,v 1.11 2004/03/08 08:24:42 takayama Exp $*/ #include #include /* #include */ @@ -660,6 +660,12 @@ void cmoObjectToCmo00(struct object ob) case SuniversalNumber: cmoOutGMPCoeff(ob.lc.universalNumber->val.bigp); break; + case SrationalFunction: + tmp[0] = htonl(CMO_RATIONAL); + cmoOutputToBuf(CMOPUT,tmp,sizeof(cmoint)); + cmoObjectToCmo00(*(Knumerator(ob))); + cmoObjectToCmo00(*(Kdenominator(ob))); + break; case Sdouble: if (sizeof(double) != 8) errorCmo("double is assumed to be 8 bytes."); cmoOutRawInt(CMO_64BIT_MACHINE_DOUBLE); @@ -1011,8 +1017,8 @@ struct object cmoCmoToObject00(struct cmoBuffer *cb) }else{ ob1 = getoa(rob,0); if (ob1.tag != Sdollar) warningCmo("CMO_TREE : the first arg must be the node name by a string."); - ob2 = getoa(rob,1); /* content dictionary name. */ - if (ob2.tag != Sdollar) warningCmo("CMO_TREE : the second arg must be the node name by a string."); + ob2 = getoa(rob,1); /* Attribute List */ + if (ob2.tag != Sarray) warningCmo("CMO_TREE : the second arg must be a list of attributes."); rob = KpoTree(rob); } break; @@ -1430,8 +1436,9 @@ void *KSmathCapByStruct(void) mathcap->cmo[19]= CMO_64BIT_MACHINE_DOUBLE; mathcap->cmo[20]= CMO_ARRAY; 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 */ mathcap->ox[0] = OX_DATA; @@ -1450,7 +1457,8 @@ void *KSmathCapByStruct(void) mathcap->sm[9] = SM_getsp; mathcap->sm[10] = SM_dupErrors; mathcap->sm[11] = SM_pushCMOtag; - mathcap->smSize = 12; + mathcap->sm[12] = SM_executeFunctionWithOptionalArgument; + mathcap->smSize = 13; return((void *)mathcap); }