Return to CMO_LIST.java CVS log | Up to [local] / OpenXM / src / OpenMath / ORG / openxm / tam |
File: [local] / OpenXM / src / OpenMath / ORG / openxm / tam / CMO_LIST.java (download)
Revision 1.3, Sun Dec 3 12:40:40 2000 UTC (23 years, 9 months ago) by ohara
allowQ() methods are added. In order to prevent a MathcapViolation, we must inspect a CMObject by allowQ() before sending it to OXstream. |
/** * $OpenXM: OpenXM/src/OpenMath/ORG/openxm/tam/CMO_LIST.java,v 1.3 2000/12/03 12:40:40 ohara Exp $ */ package ORG.openxm.tam; import java.io.*; /** * CMO $B7A<0$N(B LIST $B7?$rI=$7$^$9(B. */ final public class CMO_LIST extends CMO{ private CMO ob[]; /** * CMO $BG[Ns(B src $B$rMWAG$H$9$k(B LIST $B$r:n@.$7$^$9(B. */ public CMO_LIST(CMO[] src){ ob = src; } /** * $BMWAG$rF@$^$9(B. */ public CMO[] getElements(){ return ob; } public int DISCRIMINATOR(){ return CMO.LIST; } public boolean allowQ (int[] datacap) { if(CMO.allowQ_tag(datacap, DISCRIMINATOR())) { for (int j=0; j < ob.length; j++) { if (!ob[j].allowQ(datacap)) { return false; } } return true; } return false; } public void sendByObject(OpenXMstream os) throws IOException,MathcapViolation{ os.writeInt(ob.length); for(int i=0;i<ob.length;i++){ ob[i].write(os); } } static protected CMO receive(OpenXMstream is) throws IOException{ int len; CMO[] ob; len = is.readInt(); ob = new CMO[len]; for(int i=0;i<len;i++){ ob[i] = CMO.receive(is); } return new CMO_LIST(ob); } public String toCMOexpressionByObject(){ String str = ""; for(int i=0;i<ob.length;i++){ //System.err.print(":"+ ob[i]); str += ","+ ob[i].toCMOexpression(); } return "CMO_LIST,"+ ob.length + str; } }