import java.io.IOException;

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

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

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

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

  /**
   * 実際のインスタンス生成には、Listクラスのユーティリティ・メソッド atom()を使う。
   * @param v		アトムの値
   * @param t		トップレベルに出現可能か
   */
  StringAtom(String v, boolean t) {
    value = v;
    topLevel = t;
  }

  /*****************/
  /* PUBLIC METHOD */
  /*****************/
  /**
   * 値を表す文字列を返す。
   */
  public String toString() {
    return value;
  }

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

}

