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}