=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/plugin/cmo.c,v retrieving revision 1.8 retrieving revision 1.11 diff -u -p -r1.8 -r1.11 --- OpenXM/src/kan96xx/plugin/cmo.c 2001/05/04 01:06:29 1.8 +++ OpenXM/src/kan96xx/plugin/cmo.c 2004/03/08 08:24:42 1.11 @@ -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.10 2003/12/06 02:35:54 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; @@ -1450,7 +1456,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); }