1 package org.opentrafficsim.core.dsol;
2
3 import java.io.Serializable;
4
5 import nl.tudelft.simulation.dsol.simtime.SimTime;
6
7 import org.opentrafficsim.core.unit.TimeUnit;
8 import org.opentrafficsim.core.value.vdouble.scalar.DoubleScalar;
9 import org.opentrafficsim.core.value.vdouble.scalar.MutableDoubleScalar;
10
11
12
13
14
15
16
17
18
19 public class OTSSimTimeDouble extends SimTime<DoubleScalar.Abs<TimeUnit>, DoubleScalar.Rel<TimeUnit>, OTSSimTimeDouble>
20 implements Serializable
21 {
22
23 private static final long serialVersionUID = 20140815L;
24
25
26 private MutableDoubleScalar.Abs<TimeUnit> time;
27
28
29
30
31 public OTSSimTimeDouble(final DoubleScalar.Abs<TimeUnit> time)
32 {
33 super(time);
34 }
35
36
37 @Override
38 public final void add(final DoubleScalar.Rel<TimeUnit> simTime)
39 {
40 this.time.incrementBy(simTime);
41 }
42
43
44 @Override
45 public final void subtract(final DoubleScalar.Rel<TimeUnit> simTime)
46 {
47 this.time.decrementBy(simTime);
48 }
49
50
51 @Override
52 public final int compareTo(final OTSSimTimeDouble simTime)
53 {
54 return this.time.immutable().compareTo(simTime.get());
55 }
56
57
58 @Override
59 public final OTSSimTimeDouble setZero()
60 {
61
62 return this;
63 }
64
65
66 @Override
67 public final OTSSimTimeDouble copy()
68 {
69 return new OTSSimTimeDouble(new DoubleScalar.Abs<TimeUnit>(this.time.getInUnit(), this.time.getUnit()));
70 }
71
72
73 @Override
74 public final void set(final DoubleScalar.Abs<TimeUnit> value)
75 {
76 this.time = value.mutable();
77 }
78
79
80 @Override
81 public final DoubleScalar.Abs<TimeUnit> get()
82 {
83 return this.time.immutable();
84 }
85
86
87 @Override
88 public final DoubleScalar.Rel<TimeUnit> minus(final OTSSimTimeDouble absoluteTime)
89 {
90 DoubleScalar.Rel<TimeUnit> rel = DoubleScalar.minus(this.time.immutable(), absoluteTime.get()).immutable();
91 return rel;
92 }
93
94 }