[BACK]Return to CMO.java CVS log [TXT][DIR] Up to [local] / OpenXM / src / OpenMath / ORG / openxm / tam

Annotation of OpenXM/src/OpenMath/ORG/openxm/tam/CMO.java, Revision 1.1

1.1     ! tam         1: /**
        !             2:  * $OpenXM$
        !             3:  */
        !             4: package ORG.openxm.tam;
        !             5:
        !             6: import java.io.*;
        !             7:
        !             8: /**
        !             9:  * OpenXM $B%a%C%;!<%8$N(B CMO $B%*%V%8%'%/%H$rI=$9Cj>]%/%i%9(B.
        !            10:  */
        !            11: abstract public class CMO extends OXbody{
        !            12:   final public static int LARGEID     = 0x7f000000;
        !            13:   final public static int ERROR   = ( LARGEID +1 );
        !            14:   final public static int ERROR2  = ( LARGEID +2 );
        !            15:   final public static int NULL    = 1;
        !            16:   final public static int INT32   = 2;
        !            17:   final public static int DATUM   = 3;
        !            18:   final public static int STRING  = 4;
        !            19:   final public static int MATHCAP = 5;
        !            20:   final public static int LIST    = 17;
        !            21:
        !            22:   final public static int MONOMIAL32         = 19;
        !            23:   final public static int ZZ                 = 20;
        !            24:   final public static int QQ                 = 21;
        !            25:   final public static int ZERO               = 22;
        !            26:   final public static int DMS                = 23;
        !            27:   final public static int DMS_GENERIC        = 24;
        !            28:   final public static int DMS_OF_N_VARIABLES = 25;
        !            29:   final public static int RING_BY_NAME       = 26;
        !            30:
        !            31:   final public static int RECURSIVE_POLYNOMIAL       = 27;
        !            32:   final public static int DISTRIBUTED_POLYNOMIAL     = 31;
        !            33:   final public static int POLYNOMIAL_IN_ONE_VARIABLE = 33;
        !            34:
        !            35:   final public static int RATIONAL                   = 34;
        !            36:
        !            37:   final public static int CMO_64BIT_MACHINE_DOUBLE       = 40;
        !            38:   final public static int ARRAY_OF_64BIT_MACHINE_DOUBLE  = 41;
        !            39:   final public static int CMO_128BIT_MACHINE_DOUBLE      = 42;
        !            40:   final public static int ARRAY_OF_128BIT_MACHINE_DOUBLE = 43;
        !            41:
        !            42:   final public static int BIGFLOAT          = 50;
        !            43:   final public static int IEEE_DOUBLE_FLOAT = 51;
        !            44:
        !            45:   final public static int INDETERMINATE      = 60;
        !            46:   final public static int TREE               = 61;
        !            47:   final public static int LAMBDA             = 62;
        !            48:
        !            49:   final public static int PRIVATE = 0x7fff0000;
        !            50:
        !            51:   abstract protected int DISCRIMINATOR();
        !            52:
        !            53:   public int getDISCRIMINATOR(){
        !            54:     return this.DISCRIMINATOR();
        !            55:   }
        !            56:
        !            57:   abstract protected void sendByObject(OpenXMconnection stream)
        !            58:        throws IOException,MathcapViolation;
        !            59:
        !            60:   final public void write(OpenXMconnection os)
        !            61:        throws IOException,MathcapViolation{
        !            62:     CMO[] mathcap = os.getMathcap(OXmessage.OX_DATA);
        !            63:
        !            64:     if(mathcap != null){ // check mathcap
        !            65:       CMO[] datacap = ((CMO_LIST)mathcap[1]).getElements();
        !            66:       int i=0;
        !            67:
        !            68:       for(;i<datacap.length;i++){
        !            69:        if(((CMO_INT32)datacap[i]).intValue() == this.DISCRIMINATOR()){
        !            70:          break;
        !            71:        }
        !            72:       }
        !            73:       if(i>=datacap.length){
        !            74:        throw new MathcapViolation(this.toCMOexpression());
        !            75:       }
        !            76:     }
        !            77:     os.writeInt(this.DISCRIMINATOR());
        !            78:     this.sendByObject(os);
        !            79:   }
        !            80:
        !            81:   static protected CMO receive(OpenXMconnection is) throws IOException{
        !            82:     int a = is.readInt();
        !            83:
        !            84:     switch(a){
        !            85:     case CMO.ERROR2:
        !            86:       return CMO_ERROR2.receive(is);
        !            87:
        !            88:     case CMO.NULL:
        !            89:       return CMO_NULL.receive(is);
        !            90:
        !            91:     case CMO.INT32:
        !            92:       return CMO_INT32.receive(is);
        !            93:
        !            94:     case CMO.DATUM:
        !            95:       return CMO_DATUM.receive(is);
        !            96:
        !            97:     case CMO.STRING:
        !            98:       return CMO_STRING.receive(is);
        !            99:
        !           100:     case CMO.MATHCAP:
        !           101:       return CMO_MATHCAP.receive(is);
        !           102:
        !           103:     case CMO.LIST:
        !           104:       return CMO_LIST.receive(is);
        !           105:
        !           106:     case CMO.MONOMIAL32:
        !           107:       return CMO_MONOMIAL32.receive(is);
        !           108:
        !           109:     case CMO.ZZ:
        !           110:       return CMO_ZZ.receive(is);
        !           111:
        !           112:     case CMO.QQ:
        !           113:       return CMO_QQ.receive(is);
        !           114:
        !           115:     case CMO.ZERO:
        !           116:       return CMO_ZERO.receive(is);
        !           117:
        !           118:     case CMO.DMS:
        !           119:       return CMO_DMS.receive(is);
        !           120:
        !           121:     case CMO.DMS_GENERIC:
        !           122:       return CMO_DMS_GENERIC.receive(is);
        !           123:
        !           124:     case CMO.RECURSIVE_POLYNOMIAL:
        !           125:       return CMO_RECURSIVE_POLYNOMIAL.receive(is);
        !           126:
        !           127:     case CMO.DISTRIBUTED_POLYNOMIAL:
        !           128:       return CMO_DISTRIBUTED_POLYNOMIAL.receive(is);
        !           129:
        !           130:     case CMO.POLYNOMIAL_IN_ONE_VARIABLE:
        !           131:       return CMO_POLYNOMIAL_IN_ONE_VARIABLE.receive(is);
        !           132:
        !           133:     case CMO.RATIONAL:
        !           134:       return CMO_RATIONAL.receive(is);
        !           135:
        !           136:     case CMO.BIGFLOAT:
        !           137:       return CMO_BIGFLOAT.receive(is);
        !           138:
        !           139:     case CMO.INDETERMINATE:
        !           140:       return CMO_INDETERMINATE.receive(is);
        !           141:
        !           142:     case CMO.TREE:
        !           143:       return CMO_TREE.receive(is);
        !           144:
        !           145:     default:
        !           146:       System.err.println("unknown CMO type("+ a +")");
        !           147:     }
        !           148:     return null;
        !           149:   }
        !           150:
        !           151:   abstract protected String toCMOexpressionByObject();
        !           152:
        !           153:   /**
        !           154:    * $B%*%V%8%'%/%H$r(B CMO expression $B$KJQ49$7$^$9(B.
        !           155:    */
        !           156:   final public String toCMOexpression(){
        !           157:     return "("+ this.toCMOexpressionByObject() +")";
        !           158:   }
        !           159:
        !           160:   /**
        !           161:    * $B%*%V%8%'%/%H$r(B OX expression $B$KJQ49$7$^$9(B.
        !           162:    * $B8=:_$O(B CMO expression $B$X$HJQ49$7$^$9(B.
        !           163:    */
        !           164:   final public String toOXexpression(){
        !           165:     return toCMOexpression();
        !           166:   }
        !           167:
        !           168:   final public String toString(){
        !           169:     return this.toCMOexpression();
        !           170:   }
        !           171: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>