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.djunits.unit.TimeUnit;
8 import org.djunits.value.vdouble.scalar.DoubleScalar;
9 import org.djunits.value.vdouble.scalar.Time;
10
11
12
13
14
15
16
17
18
19
20
21
22 public class OTSSimTimeDouble extends SimTime<DoubleScalar.Abs<TimeUnit>, DoubleScalar.Rel<TimeUnit>, OTSSimTimeDouble>
23 implements Serializable
24 {
25
26 private static final long serialVersionUID = 20140815L;
27
28
29 private DoubleScalar.Abs<TimeUnit> time;
30
31
32
33
34 public OTSSimTimeDouble(final DoubleScalar.Abs<TimeUnit> time)
35 {
36 super(time);
37 }
38
39
40 @Override
41 public final void add(final DoubleScalar.Rel<TimeUnit> simTime)
42 {
43 this.time = this.time.plus(simTime);
44 }
45
46
47 @Override
48 public final void subtract(final DoubleScalar.Rel<TimeUnit> simTime)
49 {
50 this.time = this.time.minus(simTime);
51 }
52
53
54 @Override
55 public final int compareTo(final OTSSimTimeDouble simTime)
56 {
57 return this.time.compareTo(simTime.get());
58 }
59
60
61 @Override
62 public final OTSSimTimeDouble setZero()
63 {
64
65 return this;
66 }
67
68
69 @Override
70 public final OTSSimTimeDouble copy()
71 {
72 return new OTSSimTimeDouble(new DoubleScalar.Abs<TimeUnit>(this.time.getInUnit(), this.time.getUnit()));
73 }
74
75
76 @Override
77 public final void set(final DoubleScalar.Abs<TimeUnit> value)
78 {
79 this.time = value;
80 }
81
82
83 @Override
84 public final DoubleScalar.Abs<TimeUnit> get()
85 {
86 return this.time;
87 }
88
89
90
91
92 public final Time.Abs getTime()
93 {
94 return new Time.Abs(this.time.si, TimeUnit.SI);
95 }
96
97
98 @Override
99 public final DoubleScalar.Rel<TimeUnit> minus(final OTSSimTimeDouble absoluteTime)
100 {
101 DoubleScalar.Rel<TimeUnit> rel = DoubleScalar.minus(this.time, absoluteTime.get());
102 return rel;
103 }
104
105 }