git @ Cat's Eye Technologies yoob / master src / IntegerElement.java
master

Tree @master (Download .tar.gz)

IntegerElement.java @masterraw · history · blame

/*
 * An IntegerElement is an unbounded integer that can be stored in
 * Playfields, Stacks, and Tapes.
 * The source code in this file has been placed into the public domain.
 */
package tc.catseye.yoob;

import java.math.BigInteger;

public class IntegerElement extends BigInteger implements Element {
    public static IntegerElement ZERO = new IntegerElement(0);
    public static IntegerElement ONE = new IntegerElement(1);

    public IntegerElement(int initial) {
        super(new Integer(initial).toString());
    }

    public IntegerElement(BigInteger initial) {
        super(initial.toString());
    }

    public IntegerElement(char c) {
        super(new Character(c).toString());
    }

    public IntegerElement(String s) {
        super(s);
    }

    public String getName() {
        return toString();
    }

    public boolean equals(Element e) {
        if (e instanceof BigInteger) {
            return super.equals(e);
        }
        return false;
    }

    public IntegerElement fromChar(char c) {
        return new IntegerElement(c);
    }

    public IntegerElement negate() {
        return new IntegerElement(super.negate());
    }

    public IntegerElement add(IntegerElement o) {
        return new IntegerElement(super.add(o));
    }

    public IntegerElement subtract(IntegerElement o) {
        return new IntegerElement(super.subtract(o));
    }

    public IntegerElement multiply(IntegerElement o) {
        return new IntegerElement(super.multiply(o));
    }

    public IntegerElement divide(IntegerElement o) {
        return new IntegerElement(super.divide(o));
    }

    public IntegerElement succ() {
        return add(ONE);
    }

    public IntegerElement pred() {
        return subtract(ONE);
    }
  
    public int compareTo(int other) {
        return compareTo(new IntegerElement(other));
    }

    public boolean isZero() {
        return compareTo(ZERO) == 0;
    }
}