1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
package structures;
/**
* A mutable long object
* @author Brian Bushnell
* @date Feb 8, 2013
*
*/
public class LongM implements Comparable<LongM> {
public LongM(){this(0L);}
public LongM(long v){value=v;}
/**
* @param v Value
* @param mut Mutable
*/
public LongM(long v, boolean mut) {
value=v;
mutable=mut;
}
public LongM iCopy(){
if(!mutable){return this;}
return new LongM(value, false);
}
public long value(){return value;}
// public long longValue(){return value;}
public void lock(){mutable=false;}
public long set(long v){
if(!mutable){throw new RuntimeException("Mutating a locked LongM");}
return (value=v);
}
public long increment(){return set(value+1);}
public long increment(long x){return set(value+x);}
@Override
public int hashCode(){
return (int)((value^(value>>>32))&0xFFFFFFFFL);
}
@Override
public int compareTo(LongM b){
return value==b.value ? 0 : value<b.value ? -1 : 1;
}
public boolean equals(LongM b){
return value==b.value;
}
@Override
public boolean equals(Object b){
return equals((LongM)b);
}
@Override
public String toString(){return Long.toString(value);}
public String toHexString(){return Long.toHexString(value);}
public String toBinaryString(){return Long.toBinaryString(value);}
private boolean mutable=true;
private long value;
}
|