xapi.time.impl.ImmutableMoment Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xapi-dev Show documentation
Show all versions of xapi-dev Show documentation
Everything needed to run a comprehensive dev environment.
Just type X_ and pick a service from autocomplete;
new dev modules will be added as they are built.
The only dev service not included in the uber jar is xapi-dev-maven,
as it includes all runtime dependencies of maven, adding ~4 seconds to build time,
and 6 megabytes to the final output jar size (without xapi-dev-maven, it's ~1MB).
The newest version!
package xapi.time.impl;
import xapi.time.X_Time;
import xapi.time.api.Moment;
public class ImmutableMoment implements Moment{
private static final long serialVersionUID = -5493139144266455063L;
private final double millis;
public ImmutableMoment(double millis) {
this.millis = millis;
}
@Override
public double millis() {
return millis;
}
@Override
public int compareTo(Moment o) {
double delta = millis-o.millis();
if (delta == 0)
return 0;
if (delta < 1 && delta > -1) {
int bits = 0;
double diff = Math.signum(delta);
delta *= diff;
while (delta < 1) {
delta *= 2;
bits += diff;
}
return (int)(diff * bits);
}
return (int)delta;
}
@Override
public int hashCode() {
double delta = X_Time.birth()-millis;
return (int)(delta < 1 ? 1000000000.0*(delta) : delta);
}
@Override
public boolean equals(Object obj) {
return
obj == this ? true
: (obj instanceof Moment) ?
0 == compareTo((Moment)obj) : false
;
}
}