import java.io.IOException;
import java.math.BigInteger;

/**
 * bignum型の値を持つアトム
 */

public final class BigNumAtom extends Cell implements java.io.Serializable {

  /****************/
  /* PUBLIC FIELD */
  /****************/
  /**
   * アトムの値(変更できない)
   */
  public final BigInteger value;
  /**
   * トップレベルに出現可能か
   */
  public final boolean topLevel = false;

  /***************/
  /* CONSTRUCTOR */
  /***************/
  /**
   * 実際のインスタンス生成には、Listクラスのユーティリティ・メソッド
   * atom()を使う。
   * @param v		アトムの値
   */
  BigNumAtom(BigInteger v) {
    value=v;
  }

  /*****************/
  /* PUBLIC METHOD */
  /*****************/
  /**
   * 値を表す文字列を返す。
   */
  public String toString() {
    return value.toString();	// 10進表示
    //return "#x"+value.toString(16); // 16進表示
  }

  /******************/
  /* PRIVATE METHOD */
  /******************/
  /**
   * オブジェクト入力ストリームからのオブジェクト入力処理を行う。
   * @param in		オブジェクト入力ストリーム
   */
  private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException {
    in.defaultReadObject();	// フィールドの設定を行う。
    List.entryBigNumAtom(this);	// ハッシュテーブルに登録する。
  }
}

