View Javadoc
1   package org.opentrafficsim.kpi.sampling.data;
2   
3   import java.util.Arrays;
4   
5   import org.opentrafficsim.kpi.interfaces.GtuData;
6   
7   /**
8    * Class for unitless values.
9    * <p>
10   * Copyright (c) 2013-2024 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
11   * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
12   * </p>
13   * @author <a href="https://github.com/averbraeck">Alexander Verbraeck</a>
14   * @author <a href="https://github.com/peter-knoppers">Peter Knoppers</a>
15   * @author <a href="https://github.com/wjschakel">Wouter Schakel</a>
16   * @param <G> GTU data type
17   */
18  public abstract class ExtendedDataNumber<G extends GtuData> extends ExtendedDataType<Float, float[], float[], G>
19  {
20  
21      /**
22       * Constructor.
23       * @param id id
24       * @param description description
25       */
26      public ExtendedDataNumber(final String id, final String description)
27      {
28          super(id, description, Float.class);
29      }
30  
31      @Override
32      public float[] setValue(final float[] storage, final int index, final Float value)
33      {
34          float[] out;
35          if (index == storage.length)
36          {
37              int cap = (index - 1) + ((index - 1) >> 1);
38              out = Arrays.copyOf(storage, cap);
39          }
40          else
41          {
42              out = storage;
43          }
44          out[index] = value;
45          return out;
46      }
47  
48      @Override
49      public Float getOutputValue(final float[] output, final int index)
50      {
51          return output[index];
52      }
53  
54      @Override
55      public Float getStorageValue(final float[] storage, final int index)
56      {
57          return storage[index];
58      }
59  
60      @Override
61      public float[] initializeStorage()
62      {
63          return new float[10];
64      }
65  
66      @Override
67      public float[] convert(final float[] storage, final int size)
68      {
69          return Arrays.copyOf(storage, size);
70      }
71  
72      @Override
73      public Float parseValue(final String string)
74      {
75          return Float.valueOf(string);
76      }
77  
78  }