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

File: [local] / OpenXM / src / OpenMath / ORG / openxm / tam / CMO_DISTRIBUTED_POLYNOMIAL.java (download)

Revision 1.2, Wed Sep 13 06:32:42 2000 UTC (23 years, 9 months ago) by tam
Branch: MAIN
CVS Tags: maekawa-ipv6, RELEASE_1_1_3
Changes since 1.1: +3 -3 lines

I changed from OpenXMconnection to OpenXMstream.

/**
 * $OpenXM: OpenXM/src/OpenMath/ORG/openxm/tam/CMO_DISTRIBUTED_POLYNOMIAL.java,v 1.2 2000/09/13 06:32:42 tam Exp $
 */
package ORG.openxm.tam;

import java.io.*;

/**
 * CMO $B7A<0$N(B distributed polynomial $B7?$rI=$7$^$9(B.
 */
final public class CMO_DISTRIBUTED_POLYNOMIAL extends CMO{
  private CMO ring;
  private CMO_MONOMIAL32[] monomials;

  /**
   * $B4D(B ring $B>e$N(B MONOMIAL32 $B7?$NG[Ns(B monomials $B$r;}$DB?9`<0$r:n@.$7$^$9(B.
   */
  public CMO_DISTRIBUTED_POLYNOMIAL(CMO ring,CMO_MONOMIAL32[] monomials){
    this.ring = ring;
    this.monomials = monomials;
  }

  public int DISCRIMINATOR(){
    return CMO.DISTRIBUTED_POLYNOMIAL;
  }

  public void sendByObject(OpenXMstream os)
       throws IOException,MathcapViolation{
    if(monomials.length == 0){
      os.writeInt(1);
      ring.write(os);
      new CMO_ZERO().write(os);
    }else{
      os.writeInt(monomials.length);
      ring.write(os);
      for(int i=0;i<monomials.length;i++){
	monomials[i].write(os);
      }
    }
  }

  static protected CMO receive(OpenXMstream is) throws IOException{
    CMO ring;
    CMO_MONOMIAL32[] monomials;
    CMO tmp;
    int m;

    m = is.readInt();

    tmp = CMO.receive(is);
    if(!(tmp instanceof CMO_DMS_GENERIC)){
      System.err.println("not CMOobject");
    }
    ring = tmp;

    tmp = (CMO_MONOMIAL32)CMO.receive(is);
    if(tmp instanceof CMO_ZERO && m == 1){
      monomials = new CMO_MONOMIAL32[0];
    }else{
      monomials = new CMO_MONOMIAL32[m];
      monomials[0] = (CMO_MONOMIAL32)tmp;
    }

    for(int i=1;i<m;i++){
      monomials[i] = (CMO_MONOMIAL32)CMO.receive(is);
    }

    return new CMO_DISTRIBUTED_POLYNOMIAL(ring,monomials);
  }

  public String toCMOexpressionByObject(){
    String ret = "CMO_DISTRIBUTED_POLYNOMIAL,";

    if(monomials.length == 0){
      ret += 1 +",";
      ret += ring.toCMOexpression();
      ret += ","+ new CMO_ZERO().toCMOexpression();
    }else{
      ret += monomials.length +",";
      ret += ring.toCMOexpression();
      for(int i=0;i<monomials.length;i++){
	ret += ","+ monomials[i].toCMOexpression();
      }
    }

    return ret;
  }

  /**
   * $BB?9`<0$,Dj5A$5$l$F$$$k4D$rF@$^$9(B.
   */
  public CMO getRing(){
    return ring;
  }

  /**
   * $BB?9`<0$N3F(B monomial $B$rF@$^$9(B.
   */
  public CMO_MONOMIAL32[] getMonomials(){
    return monomials;
  }
}