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.proto;
006
007import edu.wpi.first.math.proto.Spline.ProtobufCubicHermiteSpline;
008import edu.wpi.first.math.spline.CubicHermiteSpline;
009import edu.wpi.first.util.protobuf.Protobuf;
010import us.hebi.quickbuf.Descriptors.Descriptor;
011
012public final class CubicHermiteSplineProto
013    implements Protobuf<CubicHermiteSpline, ProtobufCubicHermiteSpline> {
014  @Override
015  public Class<CubicHermiteSpline> getTypeClass() {
016    return CubicHermiteSpline.class;
017  }
018
019  @Override
020  public Descriptor getDescriptor() {
021    return ProtobufCubicHermiteSpline.getDescriptor();
022  }
023
024  @Override
025  public ProtobufCubicHermiteSpline createMessage() {
026    return ProtobufCubicHermiteSpline.newInstance();
027  }
028
029  @Override
030  public CubicHermiteSpline unpack(ProtobufCubicHermiteSpline msg) {
031    return new CubicHermiteSpline(
032        Protobuf.unpackArray(msg.getXInitial()),
033        Protobuf.unpackArray(msg.getXFinal()),
034        Protobuf.unpackArray(msg.getYInitial()),
035        Protobuf.unpackArray(msg.getYFinal()));
036  }
037
038  @Override
039  public void pack(ProtobufCubicHermiteSpline msg, CubicHermiteSpline value) {
040    Protobuf.packArray(msg.getMutableXInitial(), value.xInitialControlVector);
041    Protobuf.packArray(msg.getMutableXFinal(), value.xFinalControlVector);
042    Protobuf.packArray(msg.getMutableYInitial(), value.yInitialControlVector);
043    Protobuf.packArray(msg.getMutableYFinal(), value.yFinalControlVector);
044  }
045}