Class ArrayOrMatrixWithUnitSerializer<U extends org.djunits.unit.Unit<U>,T>
java.lang.Object
org.djutils.serialization.serializers.BasicSerializer<T>
org.djutils.serialization.serializers.ArrayOrMatrixWithUnitSerializer<U,T>
- Type Parameters:
U
- the unit typeT
- The object type to (de)serialize
- All Implemented Interfaces:
Serializer<T>
- Direct Known Subclasses:
DoubleMatrixSerializer
,DoubleVectorSerializer
,FloatMatrixSerializer
,FloatVectorSerializer
public abstract class ArrayOrMatrixWithUnitSerializer<U extends org.djunits.unit.Unit<U>,T>
extends BasicSerializer<T>
Serializer for Djunits arrays and matrices.
Copyright (c) 2019-2025 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
BSD-style license. See DJUTILS License.
- Author:
- Alexander Verbraeck, Peter Knoppers
-
Constructor Summary
ConstructorsConstructorDescriptionArrayOrMatrixWithUnitSerializer
(byte type, String dataClassName, int numberOfDimensions) Construct a new serializer for Djunits arrays or matrices. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
encodeUnit
(U unit, byte[] message, Pointer pointer, EndianUtil endianUtil) Code a unit.abstract int
Return the size of an element in the djunits vector or array.final int
Return the number of dimensions of the stored data.protected U
getUnit
(byte[] buffer, Pointer pointer, EndianUtil endianUtil) Retrieve and decode a DJUNITS unit.boolean
hasUnit()
Return whether the serializer uses a single unit type or not.final void
serializeWithPrefix
(T object, byte[] buffer, Pointer pointer, EndianUtil endianUtil) Serialize an object of type T including the prefix byte(s).final int
sizeWithPrefix
(T object) Compute the number of bytes needed to serialize an object of type T (including the byte(s) that indicate that an object of type T is next in the data stream).Methods inherited from class org.djutils.serialization.serializers.BasicSerializer
dataClassName, fieldType, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.djutils.serialization.serializers.Serializer
deSerialize, serialize, size
-
Constructor Details
-
ArrayOrMatrixWithUnitSerializer
Construct a new serializer for Djunits arrays or matrices.- Parameters:
type
- the field type (returned by thefieldType
method)dataClassName
- returned by the dataClassName methodnumberOfDimensions
- should be 1 for array serializer and 2 for matrix serializer
-
-
Method Details
-
sizeWithPrefix
Description copied from interface:Serializer
Compute the number of bytes needed to serialize an object of type T (including the byte(s) that indicate that an object of type T is next in the data stream).- Parameters:
object
- Instance of the object- Returns:
- the number of bytes needed to serialize an object of type T
- Throws:
SerializationException
- when theobject
cannot be serialized
-
serializeWithPrefix
public final void serializeWithPrefix(T object, byte[] buffer, Pointer pointer, EndianUtil endianUtil) throws SerializationException Description copied from interface:Serializer
Serialize an object of type T including the prefix byte(s).- Parameters:
object
- the object to serializebuffer
- buffer for the serialized Tpointer
- position in buffer where the first byte of the serialized T will be storedendianUtil
- selects bigEndian or littleEndian encoding- Throws:
SerializationException
- when a matrix has size zero or is jagged
-
getNumberOfDimensions
public final int getNumberOfDimensions()Description copied from interface:Serializer
Return the number of dimensions of the stored data.- Returns:
- 0 for plain data, 1 for array, 2 for matrix
-
getElementSize
public abstract int getElementSize()Return the size of an element in the djunits vector or array.- Returns:
- the size of one element in number of bytes
-
hasUnit
public boolean hasUnit()Description copied from interface:Serializer
Return whether the serializer uses a single unit type or not.- Returns:
- whether the serializer uses a single unit type or not
-
encodeUnit
Code a unit.- Parameters:
unit
- the unit to code in the byte arraymessage
- the byte arraypointer
- the start pointer in the byte arrayendianUtil
- encoder to use for multi-byte values
-
getUnit
Retrieve and decode a DJUNITS unit.- Parameters:
buffer
- the encoded datapointer
- position in the encoded data where the unit is to be decoded fromendianUtil
- decoder for multi-byte values- Returns:
- Unit
-