View Javadoc
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   * <p>
13   * Copyright (c) 2013-2014 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
14   * BSD-style license. See <a href="http://opentrafficsim.org/node/13">OpenTrafficSim License</a>.
15   * <p>
16   * @version Aug 3, 2014 <br>
17   * @author <a href="http://www.tbm.tudelft.nl/averbraeck">Alexander Verbraeck</a>
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      /** value represents the value in milliseconds. */
26      private MutableDoubleScalar.Abs<TimeUnit> time;
27  
28      /**
29       * @param time DoubleSclaar.Abs&lt;TimeUnit&gt;
30       */
31      public OTSSimTimeDouble(final DoubleScalar.Abs<TimeUnit> time)
32      {
33          super(time);
34      }
35  
36      /** {@inheritDoc} */
37      @Override
38      public final void add(final DoubleScalar.Rel<TimeUnit> simTime)
39      {
40          this.time.incrementBy(simTime);
41      }
42  
43      /** {@inheritDoc} */
44      @Override
45      public final void subtract(final DoubleScalar.Rel<TimeUnit> simTime)
46      {
47          this.time.decrementBy(simTime);
48      }
49  
50      /** {@inheritDoc} */
51      @Override
52      public final int compareTo(final OTSSimTimeDouble simTime)
53      {
54          return this.time.immutable().compareTo(simTime.get());
55      }
56  
57      /** {@inheritDoc} */
58      @Override
59      public final OTSSimTimeDouble setZero()
60      {
61          // TODO this.time.setZero();
62          return this;
63      }
64  
65      /** {@inheritDoc} */
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      /** {@inheritDoc} */
73      @Override
74      public final void set(final DoubleScalar.Abs<TimeUnit> value)
75      {
76          this.time = value.mutable();
77      }
78  
79      /** {@inheritDoc} */
80      @Override
81      public final DoubleScalar.Abs<TimeUnit> get()
82      {
83          return this.time.immutable();
84      }
85  
86      /** {@inheritDoc} */
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  }