001// Copyright (c) FIRST and other WPILib contributors.
002// Open Source Software; you can modify and/or share it under the terms of
003// the WPILib BSD license file in the root directory of this project.
004
005package edu.wpi.first.math.spline.struct;
006
007import edu.wpi.first.math.spline.CubicHermiteSpline;
008import edu.wpi.first.util.struct.Struct;
009import java.nio.ByteBuffer;
010
011public final class CubicHermiteSplineStruct implements Struct<CubicHermiteSpline> {
012  @Override
013  public Class<CubicHermiteSpline> getTypeClass() {
014    return CubicHermiteSpline.class;
015  }
016
017  @Override
018  public String getTypeName() {
019    return "CubicHermiteSpline";
020  }
021
022  @Override
023  public int getSize() {
024    return kSizeDouble * 4 * 2;
025  }
026
027  @Override
028  public String getSchema() {
029    return "double xInitial[2];double xFinal[2];double yInitial[2];double yFinal[2]";
030  }
031
032  @Override
033  public CubicHermiteSpline unpack(ByteBuffer bb) {
034    return new CubicHermiteSpline(
035        Struct.unpackDoubleArray(bb, 2),
036        Struct.unpackDoubleArray(bb, 2),
037        Struct.unpackDoubleArray(bb, 2),
038        Struct.unpackDoubleArray(bb, 2));
039  }
040
041  @Override
042  public void pack(ByteBuffer bb, CubicHermiteSpline value) {
043    Struct.packArray(bb, value.xInitialControlVector);
044    Struct.packArray(bb, value.xFinalControlVector);
045    Struct.packArray(bb, value.yInitialControlVector);
046    Struct.packArray(bb, value.yFinalControlVector);
047  }
048}