mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-26 01:51:41 +00:00
[wpiutil] Rename struct constants to all caps
This commit is contained in:
@@ -24,7 +24,7 @@ public record CustomStruct(int x) implements StructSerializable {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeInt32;
|
||||
return INT32_SIZE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -269,7 +269,7 @@ static void UpdateStructValueSource(NetworkTablesModel& model,
|
||||
for (auto&& field : fields) {
|
||||
auto& child = *outIt++;
|
||||
switch (field.GetType()) {
|
||||
case wpi::util::StructFieldType::kBool:
|
||||
case wpi::util::StructFieldType::BOOL:
|
||||
if (field.IsArray()) {
|
||||
std::vector<int> v;
|
||||
v.reserve(field.GetArraySize());
|
||||
@@ -283,19 +283,19 @@ static void UpdateStructValueSource(NetworkTablesModel& model,
|
||||
}
|
||||
child.UpdateFromValue(model, child.path, "");
|
||||
break;
|
||||
case wpi::util::StructFieldType::kChar:
|
||||
case wpi::util::StructFieldType::CHAR:
|
||||
child.value =
|
||||
wpi::nt::Value::MakeString(s.GetStringField(&field), time);
|
||||
child.UpdateFromValue(model, child.path, "");
|
||||
break;
|
||||
case wpi::util::StructFieldType::kInt8:
|
||||
case wpi::util::StructFieldType::kInt16:
|
||||
case wpi::util::StructFieldType::kInt32:
|
||||
case wpi::util::StructFieldType::kInt64:
|
||||
case wpi::util::StructFieldType::kUint8:
|
||||
case wpi::util::StructFieldType::kUint16:
|
||||
case wpi::util::StructFieldType::kUint32:
|
||||
case wpi::util::StructFieldType::kUint64: {
|
||||
case wpi::util::StructFieldType::INT8:
|
||||
case wpi::util::StructFieldType::INT16:
|
||||
case wpi::util::StructFieldType::INT32:
|
||||
case wpi::util::StructFieldType::INT64:
|
||||
case wpi::util::StructFieldType::UINT8:
|
||||
case wpi::util::StructFieldType::UINT16:
|
||||
case wpi::util::StructFieldType::UINT32:
|
||||
case wpi::util::StructFieldType::UINT64: {
|
||||
bool isUint = field.IsUint();
|
||||
if (field.HasEnum()) {
|
||||
if (field.IsArray()) {
|
||||
@@ -344,7 +344,7 @@ static void UpdateStructValueSource(NetworkTablesModel& model,
|
||||
child.UpdateFromValue(model, child.path, "");
|
||||
break;
|
||||
}
|
||||
case wpi::util::StructFieldType::kFloat:
|
||||
case wpi::util::StructFieldType::FLOAT:
|
||||
if (field.IsArray()) {
|
||||
std::vector<float> v;
|
||||
v.reserve(field.GetArraySize());
|
||||
@@ -358,7 +358,7 @@ static void UpdateStructValueSource(NetworkTablesModel& model,
|
||||
}
|
||||
child.UpdateFromValue(model, child.path, "");
|
||||
break;
|
||||
case wpi::util::StructFieldType::kDouble:
|
||||
case wpi::util::StructFieldType::DOUBLE:
|
||||
if (field.IsArray()) {
|
||||
std::vector<double> v;
|
||||
v.reserve(field.GetArraySize());
|
||||
@@ -372,7 +372,7 @@ static void UpdateStructValueSource(NetworkTablesModel& model,
|
||||
}
|
||||
child.UpdateFromValue(model, child.path, "");
|
||||
break;
|
||||
case wpi::util::StructFieldType::kStruct:
|
||||
case wpi::util::StructFieldType::STRUCT:
|
||||
if (field.IsArray()) {
|
||||
if (child.valueChildrenMap) {
|
||||
child.valueChildren.clear();
|
||||
|
||||
@@ -21,7 +21,7 @@ public class ArmFeedforwardStruct implements Struct<ArmFeedforward> {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 5;
|
||||
return DOUBLE_SIZE * 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ public final class DifferentialDriveFeedforwardStruct
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 4;
|
||||
return DOUBLE_SIZE * 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ public class DifferentialDriveWheelVoltagesStruct
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 2;
|
||||
return DOUBLE_SIZE * 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class ElevatorFeedforwardStruct implements Struct<ElevatorFeedforward> {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 5;
|
||||
return DOUBLE_SIZE * 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public final class SimpleMotorFeedforwardStruct implements Struct<SimpleMotorFee
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 4;
|
||||
return DOUBLE_SIZE * 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ public class Ellipse2dStruct implements Struct<Ellipse2d> {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return Pose2d.struct.getSize() + kSizeDouble + kSizeDouble;
|
||||
return Pose2d.struct.getSize() + DOUBLE_SIZE + DOUBLE_SIZE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class QuaternionStruct implements Struct<Quaternion> {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 4;
|
||||
return DOUBLE_SIZE * 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ public class Rectangle2dStruct implements Struct<Rectangle2d> {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return Pose2d.struct.getSize() + kSizeDouble + kSizeDouble;
|
||||
return Pose2d.struct.getSize() + DOUBLE_SIZE + DOUBLE_SIZE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class Rotation2dStruct implements Struct<Rotation2d> {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble;
|
||||
return DOUBLE_SIZE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class Translation2dStruct implements Struct<Translation2d> {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 2;
|
||||
return DOUBLE_SIZE * 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class Translation3dStruct implements Struct<Translation3d> {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 3;
|
||||
return DOUBLE_SIZE * 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class Twist2dStruct implements Struct<Twist2d> {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 3;
|
||||
return DOUBLE_SIZE * 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class Twist3dStruct implements Struct<Twist3d> {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 6;
|
||||
return DOUBLE_SIZE * 6;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class ChassisAccelerationsStruct implements Struct<ChassisAccelerations>
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 3;
|
||||
return DOUBLE_SIZE * 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class ChassisVelocitiesStruct implements Struct<ChassisVelocities> {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 3;
|
||||
return DOUBLE_SIZE * 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class DifferentialDriveKinematicsStruct implements Struct<DifferentialDri
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble;
|
||||
return DOUBLE_SIZE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ public class DifferentialDriveWheelAccelerationsStruct
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 2;
|
||||
return DOUBLE_SIZE * 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ public class DifferentialDriveWheelPositionsStruct
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 2;
|
||||
return DOUBLE_SIZE * 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ public class DifferentialDriveWheelVelocitiesStruct
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 2;
|
||||
return DOUBLE_SIZE * 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ public class MecanumDriveWheelAccelerationsStruct
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 4;
|
||||
return DOUBLE_SIZE * 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class MecanumDriveWheelPositionsStruct implements Struct<MecanumDriveWhee
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 4;
|
||||
return DOUBLE_SIZE * 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class MecanumDriveWheelVelocitiesStruct implements Struct<MecanumDriveWhe
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 4;
|
||||
return DOUBLE_SIZE * 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ public class SwerveModuleAccelerationStruct implements Struct<SwerveModuleAccele
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble + Rotation2d.struct.getSize();
|
||||
return DOUBLE_SIZE + Rotation2d.struct.getSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ public class SwerveModulePositionStruct implements Struct<SwerveModulePosition>
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble + Rotation2d.struct.getSize();
|
||||
return DOUBLE_SIZE + Rotation2d.struct.getSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,7 +22,7 @@ public class SwerveModuleVelocityStruct implements Struct<SwerveModuleVelocity>
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble + Rotation2d.struct.getSize();
|
||||
return DOUBLE_SIZE + Rotation2d.struct.getSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -40,7 +40,7 @@ public final class MatrixStruct<R extends Num, C extends Num> implements Struct<
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * m_rows.getNum() * m_cols.getNum();
|
||||
return DOUBLE_SIZE * m_rows.getNum() * m_cols.getNum();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -37,7 +37,7 @@ public final class VectorStruct<R extends Num> implements Struct<Vector<R>> {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * m_rows;
|
||||
return DOUBLE_SIZE * m_rows;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public final class CubicHermiteSplineStruct implements Struct<CubicHermiteSpline
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 4 * 2;
|
||||
return DOUBLE_SIZE * 4 * 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public final class QuinticHermiteSplineStruct implements Struct<QuinticHermiteSp
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 4 * 3;
|
||||
return DOUBLE_SIZE * 4 * 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class DCMotorStruct implements Struct<DCMotor> {
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 5;
|
||||
return DOUBLE_SIZE * 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class ExponentialProfileStateStruct implements Struct<ExponentialProfile.
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 2;
|
||||
return DOUBLE_SIZE * 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,7 +21,7 @@ public class TrapezoidProfileStateStruct implements Struct<TrapezoidProfile.Stat
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return kSizeDouble * 2;
|
||||
return DOUBLE_SIZE * 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -125,7 +125,7 @@ public final class DynamicStruct {
|
||||
* @throws ArrayIndexOutOfBoundsException if array index is out of bounds
|
||||
*/
|
||||
public boolean getBoolField(StructFieldDescriptor field, int arrIndex) {
|
||||
if (field.getType() != StructFieldType.kBool) {
|
||||
if (field.getType() != StructFieldType.BOOL) {
|
||||
throw new UnsupportedOperationException("field is not bool type");
|
||||
}
|
||||
return getFieldImpl(field, arrIndex) != 0;
|
||||
@@ -157,7 +157,7 @@ public final class DynamicStruct {
|
||||
* @throws ReadOnlyBufferException if the underlying buffer is read-only
|
||||
*/
|
||||
public void setBoolField(StructFieldDescriptor field, boolean value, int arrIndex) {
|
||||
if (field.getType() != StructFieldType.kBool) {
|
||||
if (field.getType() != StructFieldType.BOOL) {
|
||||
throw new UnsupportedOperationException("field is not bool type");
|
||||
}
|
||||
setFieldImpl(field, value ? 1 : 0, arrIndex);
|
||||
@@ -253,7 +253,7 @@ public final class DynamicStruct {
|
||||
* @throws ArrayIndexOutOfBoundsException if array index is out of bounds
|
||||
*/
|
||||
public float getFloatField(StructFieldDescriptor field, int arrIndex) {
|
||||
if (field.getType() != StructFieldType.kFloat) {
|
||||
if (field.getType() != StructFieldType.FLOAT) {
|
||||
throw new UnsupportedOperationException("field is not float type");
|
||||
}
|
||||
return Float.intBitsToFloat((int) getFieldImpl(field, arrIndex));
|
||||
@@ -285,7 +285,7 @@ public final class DynamicStruct {
|
||||
* @throws ReadOnlyBufferException if the underlying buffer is read-only
|
||||
*/
|
||||
public void setFloatField(StructFieldDescriptor field, float value, int arrIndex) {
|
||||
if (field.getType() != StructFieldType.kFloat) {
|
||||
if (field.getType() != StructFieldType.FLOAT) {
|
||||
throw new UnsupportedOperationException("field is not float type");
|
||||
}
|
||||
setFieldImpl(field, Float.floatToIntBits(value), arrIndex);
|
||||
@@ -317,7 +317,7 @@ public final class DynamicStruct {
|
||||
* @throws ArrayIndexOutOfBoundsException if array index is out of bounds
|
||||
*/
|
||||
public double getDoubleField(StructFieldDescriptor field, int arrIndex) {
|
||||
if (field.getType() != StructFieldType.kDouble) {
|
||||
if (field.getType() != StructFieldType.DOUBLE) {
|
||||
throw new UnsupportedOperationException("field is not double type");
|
||||
}
|
||||
return Double.longBitsToDouble(getFieldImpl(field, arrIndex));
|
||||
@@ -349,7 +349,7 @@ public final class DynamicStruct {
|
||||
* @throws ReadOnlyBufferException if the underlying buffer is read-only
|
||||
*/
|
||||
public void setDoubleField(StructFieldDescriptor field, double value, int arrIndex) {
|
||||
if (field.getType() != StructFieldType.kDouble) {
|
||||
if (field.getType() != StructFieldType.DOUBLE) {
|
||||
throw new UnsupportedOperationException("field is not double type");
|
||||
}
|
||||
setFieldImpl(field, Double.doubleToLongBits(value), arrIndex);
|
||||
@@ -380,7 +380,7 @@ public final class DynamicStruct {
|
||||
*/
|
||||
@SuppressWarnings({"PMD.CollapsibleIfStatements", "PMD.AvoidDeeplyNestedIfStmts"})
|
||||
public String getStringField(StructFieldDescriptor field) {
|
||||
if (field.getType() != StructFieldType.kChar) {
|
||||
if (field.getType() != StructFieldType.CHAR) {
|
||||
throw new UnsupportedOperationException("field is not char type");
|
||||
}
|
||||
if (!field.getParent().equals(m_desc)) {
|
||||
@@ -454,7 +454,7 @@ public final class DynamicStruct {
|
||||
* @throws IllegalStateException if struct descriptor is invalid
|
||||
*/
|
||||
public boolean setStringField(StructFieldDescriptor field, String value) {
|
||||
if (field.getType() != StructFieldType.kChar) {
|
||||
if (field.getType() != StructFieldType.CHAR) {
|
||||
throw new UnsupportedOperationException("field is not char type");
|
||||
}
|
||||
if (!field.getParent().equals(m_desc)) {
|
||||
@@ -485,7 +485,7 @@ public final class DynamicStruct {
|
||||
* @throws ArrayIndexOutOfBoundsException if array index is out of bounds
|
||||
*/
|
||||
public DynamicStruct getStructField(StructFieldDescriptor field, int arrIndex) {
|
||||
if (field.getType() != StructFieldType.kStruct) {
|
||||
if (field.getType() != StructFieldType.STRUCT) {
|
||||
throw new UnsupportedOperationException("field is not struct type");
|
||||
}
|
||||
if (!field.getParent().equals(m_desc)) {
|
||||
@@ -528,7 +528,7 @@ public final class DynamicStruct {
|
||||
* @throws ReadOnlyBufferException if the underlying buffer is read-only
|
||||
*/
|
||||
public void setStructField(StructFieldDescriptor field, DynamicStruct value, int arrIndex) {
|
||||
if (field.getType() != StructFieldType.kStruct) {
|
||||
if (field.getType() != StructFieldType.STRUCT) {
|
||||
throw new UnsupportedOperationException("field is not struct type");
|
||||
}
|
||||
if (!field.getParent().equals(m_desc)) {
|
||||
@@ -588,7 +588,7 @@ public final class DynamicStruct {
|
||||
default -> throw new IllegalStateException("invalid field size");
|
||||
};
|
||||
|
||||
if (field.isUint() || field.getType() == StructFieldType.kBool) {
|
||||
if (field.isUint() || field.getType() == StructFieldType.BOOL) {
|
||||
// for unsigned fields, we can simply logical shift and mask
|
||||
return (val >>> field.m_bitShift) & field.getBitMask();
|
||||
} else {
|
||||
|
||||
@@ -21,25 +21,25 @@ import java.nio.ByteBuffer;
|
||||
*/
|
||||
public interface Struct<T> {
|
||||
/** Serialized size of a "bool" value. */
|
||||
int kSizeBool = 1;
|
||||
int BOOL_SIZE = 1;
|
||||
|
||||
/** Serialized size of an "int8" or "uint8" value. */
|
||||
int kSizeInt8 = 1;
|
||||
int INT8_SIZE = 1;
|
||||
|
||||
/** Serialized size of an "int16" or "uint16" value. */
|
||||
int kSizeInt16 = 2;
|
||||
int INT16_SIZE = 2;
|
||||
|
||||
/** Serialized size of an "int32" or "uint32" value. */
|
||||
int kSizeInt32 = 4;
|
||||
int INT32_SIZE = 4;
|
||||
|
||||
/** Serialized size of an "int64" or "uint64" value. */
|
||||
int kSizeInt64 = 8;
|
||||
int INT64_SIZE = 8;
|
||||
|
||||
/** Serialized size of an "float" or "float32" value. */
|
||||
int kSizeFloat = 4;
|
||||
int FLOAT_SIZE = 4;
|
||||
|
||||
/** Serialized size of an "double" or "float64" value. */
|
||||
int kSizeDouble = 8;
|
||||
int DOUBLE_SIZE = 8;
|
||||
|
||||
/**
|
||||
* Gets the Class object for the stored value.
|
||||
|
||||
@@ -113,7 +113,7 @@ public class StructDescriptor {
|
||||
offset += field.m_size * field.m_arraySize;
|
||||
} else {
|
||||
int bitWidth = field.getBitWidth();
|
||||
if (field.getType() == StructFieldType.kBool
|
||||
if (field.getType() == StructFieldType.BOOL
|
||||
&& prevBitfieldSize != 0
|
||||
&& (shift + 1) <= (prevBitfieldSize * 8)) {
|
||||
// bool takes on size of preceding bitfield type (if it fits)
|
||||
|
||||
@@ -47,7 +47,7 @@ public class StructDescriptorDatabase {
|
||||
// bitfield checks
|
||||
if (decl.bitWidth != 0) {
|
||||
// only integer or boolean types are allowed
|
||||
if (!type.isInt && !type.isUint && type != StructFieldType.kBool) {
|
||||
if (!type.isInt && !type.isUint && type != StructFieldType.BOOL) {
|
||||
throw new BadSchemaException(
|
||||
decl.name, "type " + decl.typeString + " cannot be bitfield");
|
||||
}
|
||||
@@ -59,7 +59,7 @@ public class StructDescriptorDatabase {
|
||||
}
|
||||
|
||||
// bit width must be 1 for booleans
|
||||
if (type == StructFieldType.kBool && decl.bitWidth != 1) {
|
||||
if (type == StructFieldType.BOOL && decl.bitWidth != 1) {
|
||||
throw new BadSchemaException(decl.name, "bit width must be 1 for bool type");
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ public class StructDescriptorDatabase {
|
||||
|
||||
// struct handling
|
||||
StructDescriptor structDesc = null;
|
||||
if (type == StructFieldType.kStruct) {
|
||||
if (type == StructFieldType.STRUCT) {
|
||||
// recursive definitions are not allowed
|
||||
if (decl.typeString.equals(name)) {
|
||||
throw new BadSchemaException(decl.name, "recursive struct reference");
|
||||
|
||||
@@ -7,31 +7,31 @@ package org.wpilib.util.struct;
|
||||
/** Known data types for raw struct dynamic fields (see StructFieldDescriptor). */
|
||||
public enum StructFieldType {
|
||||
/** bool. */
|
||||
kBool("bool", false, false, 1),
|
||||
BOOL("bool", false, false, 1),
|
||||
/** char. */
|
||||
kChar("char", false, false, 1),
|
||||
CHAR("char", false, false, 1),
|
||||
/** int8. */
|
||||
kInt8("int8", true, false, 1),
|
||||
INT8("int8", true, false, 1),
|
||||
/** int16. */
|
||||
kInt16("int16", true, false, 2),
|
||||
INT16("int16", true, false, 2),
|
||||
/** int32. */
|
||||
kInt32("int32", true, false, 4),
|
||||
INT32("int32", true, false, 4),
|
||||
/** int64. */
|
||||
kInt64("int64", true, false, 8),
|
||||
INT64("int64", true, false, 8),
|
||||
/** uint8. */
|
||||
kUint8("uint8", false, true, 1),
|
||||
UINT8("uint8", false, true, 1),
|
||||
/** uint16. */
|
||||
kUint16("uint16", false, true, 2),
|
||||
UINT16("uint16", false, true, 2),
|
||||
/** uint32. */
|
||||
kUint32("uint32", false, true, 4),
|
||||
UINT32("uint32", false, true, 4),
|
||||
/** uint64. */
|
||||
kUint64("uint64", false, true, 8),
|
||||
UINT64("uint64", false, true, 8),
|
||||
/** float. */
|
||||
kFloat("float", false, false, 4),
|
||||
FLOAT("float", false, false, 4),
|
||||
/** double. */
|
||||
kDouble("double", false, false, 8),
|
||||
DOUBLE("double", false, false, 8),
|
||||
/** struct. */
|
||||
kStruct("struct", false, false, 0);
|
||||
STRUCT("struct", false, false, 0);
|
||||
|
||||
/** The name of the data type. */
|
||||
@SuppressWarnings("MemberName")
|
||||
@@ -74,11 +74,11 @@ public enum StructFieldType {
|
||||
}
|
||||
}
|
||||
if ("float32".equals(str)) {
|
||||
return kFloat;
|
||||
return FLOAT;
|
||||
} else if ("float64".equals(str)) {
|
||||
return kDouble;
|
||||
return DOUBLE;
|
||||
} else {
|
||||
return kStruct;
|
||||
return STRUCT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,21 +28,21 @@ public class Lexer {
|
||||
m_tokenStart = m_pos - 1;
|
||||
|
||||
return switch (m_current) {
|
||||
case '[' -> TokenKind.kLeftBracket;
|
||||
case ']' -> TokenKind.kRightBracket;
|
||||
case '{' -> TokenKind.kLeftBrace;
|
||||
case '}' -> TokenKind.kRightBrace;
|
||||
case ':' -> TokenKind.kColon;
|
||||
case ';' -> TokenKind.kSemicolon;
|
||||
case ',' -> TokenKind.kComma;
|
||||
case '=' -> TokenKind.kEquals;
|
||||
case '[' -> TokenKind.LEFT_BRACKET;
|
||||
case ']' -> TokenKind.RIGHT_BRACKET;
|
||||
case '{' -> TokenKind.LEFT_BRACE;
|
||||
case '}' -> TokenKind.RIGHT_BRACE;
|
||||
case ':' -> TokenKind.COLON;
|
||||
case ';' -> TokenKind.SEMICOLON;
|
||||
case ',' -> TokenKind.COMMA;
|
||||
case '=' -> TokenKind.EQUALS;
|
||||
case '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' -> scanInteger();
|
||||
case '\0' -> TokenKind.kEndOfInput;
|
||||
case '\0' -> TokenKind.END_OF_INPUT;
|
||||
default -> {
|
||||
if (Character.isLetter(m_current) || m_current == '_') {
|
||||
yield scanIdentifier();
|
||||
}
|
||||
yield TokenKind.kUnknown;
|
||||
yield TokenKind.UNKNOWN;
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -73,7 +73,7 @@ public class Lexer {
|
||||
get();
|
||||
} while (Character.isDigit(m_current));
|
||||
unget();
|
||||
return TokenKind.kInteger;
|
||||
return TokenKind.INTEGER;
|
||||
}
|
||||
|
||||
private TokenKind scanIdentifier() {
|
||||
@@ -81,7 +81,7 @@ public class Lexer {
|
||||
get();
|
||||
} while (Character.isLetterOrDigit(m_current) || m_current == '_');
|
||||
unget();
|
||||
return TokenKind.kIdentifier;
|
||||
return TokenKind.IDENTIFIER;
|
||||
}
|
||||
|
||||
private void get() {
|
||||
|
||||
@@ -28,14 +28,14 @@ public class Parser {
|
||||
ParsedSchema schema = new ParsedSchema();
|
||||
do {
|
||||
getNextToken();
|
||||
if (m_token == TokenKind.kSemicolon) {
|
||||
if (m_token == TokenKind.SEMICOLON) {
|
||||
continue;
|
||||
}
|
||||
if (m_token == TokenKind.kEndOfInput) {
|
||||
if (m_token == TokenKind.END_OF_INPUT) {
|
||||
break;
|
||||
}
|
||||
schema.declarations.add(parseDeclaration());
|
||||
} while (m_token != TokenKind.kEndOfInput);
|
||||
} while (m_token != TokenKind.END_OF_INPUT);
|
||||
return schema;
|
||||
}
|
||||
|
||||
@@ -43,30 +43,30 @@ public class Parser {
|
||||
ParsedDeclaration decl = new ParsedDeclaration();
|
||||
|
||||
// optional enum specification
|
||||
if (m_token == TokenKind.kIdentifier && "enum".equals(m_lexer.getTokenText())) {
|
||||
if (m_token == TokenKind.IDENTIFIER && "enum".equals(m_lexer.getTokenText())) {
|
||||
getNextToken();
|
||||
expect(TokenKind.kLeftBrace);
|
||||
expect(TokenKind.LEFT_BRACE);
|
||||
decl.enumValues = parseEnum();
|
||||
getNextToken();
|
||||
} else if (m_token == TokenKind.kLeftBrace) {
|
||||
} else if (m_token == TokenKind.LEFT_BRACE) {
|
||||
decl.enumValues = parseEnum();
|
||||
getNextToken();
|
||||
}
|
||||
|
||||
// type name
|
||||
expect(TokenKind.kIdentifier);
|
||||
expect(TokenKind.IDENTIFIER);
|
||||
decl.typeString = m_lexer.getTokenText();
|
||||
getNextToken();
|
||||
|
||||
// identifier name
|
||||
expect(TokenKind.kIdentifier);
|
||||
expect(TokenKind.IDENTIFIER);
|
||||
decl.name = m_lexer.getTokenText();
|
||||
getNextToken();
|
||||
|
||||
// array or bit field
|
||||
if (m_token == TokenKind.kLeftBracket) {
|
||||
if (m_token == TokenKind.LEFT_BRACKET) {
|
||||
getNextToken();
|
||||
expect(TokenKind.kInteger);
|
||||
expect(TokenKind.INTEGER);
|
||||
String valueStr = m_lexer.getTokenText();
|
||||
int value;
|
||||
try {
|
||||
@@ -81,11 +81,11 @@ public class Parser {
|
||||
m_lexer.m_pos, "array size '" + valueStr + "' is not a positive integer");
|
||||
}
|
||||
getNextToken();
|
||||
expect(TokenKind.kRightBracket);
|
||||
expect(TokenKind.RIGHT_BRACKET);
|
||||
getNextToken();
|
||||
} else if (m_token == TokenKind.kColon) {
|
||||
} else if (m_token == TokenKind.COLON) {
|
||||
getNextToken();
|
||||
expect(TokenKind.kInteger);
|
||||
expect(TokenKind.INTEGER);
|
||||
String valueStr = m_lexer.getTokenText();
|
||||
int value;
|
||||
try {
|
||||
@@ -103,8 +103,8 @@ public class Parser {
|
||||
}
|
||||
|
||||
// declaration must end with EOF or semicolon
|
||||
if (m_token != TokenKind.kEndOfInput) {
|
||||
expect(TokenKind.kSemicolon);
|
||||
if (m_token != TokenKind.END_OF_INPUT) {
|
||||
expect(TokenKind.SEMICOLON);
|
||||
}
|
||||
|
||||
return decl;
|
||||
@@ -115,13 +115,13 @@ public class Parser {
|
||||
|
||||
// we start with current = '{'
|
||||
getNextToken();
|
||||
while (m_token != TokenKind.kRightBrace) {
|
||||
expect(TokenKind.kIdentifier);
|
||||
while (m_token != TokenKind.RIGHT_BRACE) {
|
||||
expect(TokenKind.IDENTIFIER);
|
||||
final String name = m_lexer.getTokenText();
|
||||
getNextToken();
|
||||
expect(TokenKind.kEquals);
|
||||
expect(TokenKind.EQUALS);
|
||||
getNextToken();
|
||||
expect(TokenKind.kInteger);
|
||||
expect(TokenKind.INTEGER);
|
||||
String valueStr = m_lexer.getTokenText();
|
||||
long value;
|
||||
try {
|
||||
@@ -131,10 +131,10 @@ public class Parser {
|
||||
}
|
||||
map.put(name, value);
|
||||
getNextToken();
|
||||
if (m_token == TokenKind.kRightBrace) {
|
||||
if (m_token == TokenKind.RIGHT_BRACE) {
|
||||
break;
|
||||
}
|
||||
expect(TokenKind.kComma);
|
||||
expect(TokenKind.COMMA);
|
||||
getNextToken();
|
||||
}
|
||||
return map;
|
||||
|
||||
@@ -7,40 +7,40 @@ package org.wpilib.util.struct.parser;
|
||||
/** A lexed raw struct schema token. */
|
||||
public enum TokenKind {
|
||||
/** Unknown. */
|
||||
kUnknown("unknown"),
|
||||
UNKNOWN("unknown"),
|
||||
|
||||
/** Integer. */
|
||||
kInteger("integer"),
|
||||
INTEGER("integer"),
|
||||
|
||||
/** Identifier. */
|
||||
kIdentifier("identifier"),
|
||||
IDENTIFIER("identifier"),
|
||||
|
||||
/** Left square bracket. */
|
||||
kLeftBracket("'['"),
|
||||
LEFT_BRACKET("'['"),
|
||||
|
||||
/** Right square bracket. */
|
||||
kRightBracket("']'"),
|
||||
RIGHT_BRACKET("']'"),
|
||||
|
||||
/** Left curly brace. */
|
||||
kLeftBrace("'{'"),
|
||||
LEFT_BRACE("'{'"),
|
||||
|
||||
/** Right curly brace. */
|
||||
kRightBrace("'}'"),
|
||||
RIGHT_BRACE("'}'"),
|
||||
|
||||
/** Colon. */
|
||||
kColon("':'"),
|
||||
COLON("':'"),
|
||||
|
||||
/** Semicolon. */
|
||||
kSemicolon("';'"),
|
||||
SEMICOLON("';'"),
|
||||
|
||||
/** Comma. */
|
||||
kComma("','"),
|
||||
COMMA("','"),
|
||||
|
||||
/** Equals. */
|
||||
kEquals("'='"),
|
||||
EQUALS("'='"),
|
||||
|
||||
/** End of input. */
|
||||
kEndOfInput("<EOF>");
|
||||
END_OF_INPUT("<EOF>");
|
||||
|
||||
private final String m_name;
|
||||
|
||||
|
||||
@@ -20,21 +20,21 @@ using namespace wpi::util;
|
||||
|
||||
static size_t TypeToSize(StructFieldType type) {
|
||||
switch (type) {
|
||||
case StructFieldType::kBool:
|
||||
case StructFieldType::kChar:
|
||||
case StructFieldType::kInt8:
|
||||
case StructFieldType::kUint8:
|
||||
case StructFieldType::BOOL:
|
||||
case StructFieldType::CHAR:
|
||||
case StructFieldType::INT8:
|
||||
case StructFieldType::UINT8:
|
||||
return 1;
|
||||
case StructFieldType::kInt16:
|
||||
case StructFieldType::kUint16:
|
||||
case StructFieldType::INT16:
|
||||
case StructFieldType::UINT16:
|
||||
return 2;
|
||||
case StructFieldType::kInt32:
|
||||
case StructFieldType::kUint32:
|
||||
case StructFieldType::kFloat:
|
||||
case StructFieldType::INT32:
|
||||
case StructFieldType::UINT32:
|
||||
case StructFieldType::FLOAT:
|
||||
return 4;
|
||||
case StructFieldType::kInt64:
|
||||
case StructFieldType::kUint64:
|
||||
case StructFieldType::kDouble:
|
||||
case StructFieldType::INT64:
|
||||
case StructFieldType::UINT64:
|
||||
case StructFieldType::DOUBLE:
|
||||
return 8;
|
||||
default:
|
||||
return 0;
|
||||
@@ -43,31 +43,31 @@ static size_t TypeToSize(StructFieldType type) {
|
||||
|
||||
static StructFieldType TypeStringToType(std::string_view str) {
|
||||
if (str == "bool") {
|
||||
return StructFieldType::kBool;
|
||||
return StructFieldType::BOOL;
|
||||
} else if (str == "char") {
|
||||
return StructFieldType::kChar;
|
||||
return StructFieldType::CHAR;
|
||||
} else if (str == "int8") {
|
||||
return StructFieldType::kInt8;
|
||||
return StructFieldType::INT8;
|
||||
} else if (str == "int16") {
|
||||
return StructFieldType::kInt16;
|
||||
return StructFieldType::INT16;
|
||||
} else if (str == "int32") {
|
||||
return StructFieldType::kInt32;
|
||||
return StructFieldType::INT32;
|
||||
} else if (str == "int64") {
|
||||
return StructFieldType::kInt64;
|
||||
return StructFieldType::INT64;
|
||||
} else if (str == "uint8") {
|
||||
return StructFieldType::kUint8;
|
||||
return StructFieldType::UINT8;
|
||||
} else if (str == "uint16") {
|
||||
return StructFieldType::kUint16;
|
||||
return StructFieldType::UINT16;
|
||||
} else if (str == "uint32") {
|
||||
return StructFieldType::kUint32;
|
||||
return StructFieldType::UINT32;
|
||||
} else if (str == "uint64") {
|
||||
return StructFieldType::kUint64;
|
||||
return StructFieldType::UINT64;
|
||||
} else if (str == "float" || str == "float32") {
|
||||
return StructFieldType::kFloat;
|
||||
return StructFieldType::FLOAT;
|
||||
} else if (str == "double" || str == "float64") {
|
||||
return StructFieldType::kDouble;
|
||||
return StructFieldType::DOUBLE;
|
||||
} else {
|
||||
return StructFieldType::kStruct;
|
||||
return StructFieldType::STRUCT;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ std::string StructDescriptor::CalculateOffsets(
|
||||
}
|
||||
offset += field.m_size * field.m_arraySize;
|
||||
} else {
|
||||
if (field.m_type == StructFieldType::kBool && prevBitfieldSize != 0 &&
|
||||
if (field.m_type == StructFieldType::BOOL && prevBitfieldSize != 0 &&
|
||||
(shift + 1) <= (prevBitfieldSize * 8)) {
|
||||
// bool takes on size of preceding bitfield type (if it fits)
|
||||
field.m_size = prevBitfieldSize;
|
||||
@@ -209,9 +209,8 @@ const StructDescriptor* StructDescriptorDatabase::Add(std::string_view name,
|
||||
// bitfield checks
|
||||
if (decl.bitWidth != 0) {
|
||||
// only integer or boolean types are allowed
|
||||
if (type == StructFieldType::kChar || type == StructFieldType::kFloat ||
|
||||
type == StructFieldType::kDouble ||
|
||||
type == StructFieldType::kStruct) {
|
||||
if (type == StructFieldType::CHAR || type == StructFieldType::FLOAT ||
|
||||
type == StructFieldType::DOUBLE || type == StructFieldType::STRUCT) {
|
||||
*err = fmt::format("field {}: type {} cannot be bitfield", decl.name,
|
||||
decl.typeString);
|
||||
[[unlikely]] return nullptr;
|
||||
@@ -225,7 +224,7 @@ const StructDescriptor* StructDescriptorDatabase::Add(std::string_view name,
|
||||
}
|
||||
|
||||
// bit width must be 1 for booleans
|
||||
if (type == StructFieldType::kBool && decl.bitWidth != 1) {
|
||||
if (type == StructFieldType::BOOL && decl.bitWidth != 1) {
|
||||
*err = fmt::format("field {}: bit width must be 1 for bool type",
|
||||
decl.name);
|
||||
[[unlikely]] return nullptr;
|
||||
@@ -241,7 +240,7 @@ const StructDescriptor* StructDescriptorDatabase::Add(std::string_view name,
|
||||
|
||||
// struct handling
|
||||
const StructDescriptor* structDesc = nullptr;
|
||||
if (type == StructFieldType::kStruct) {
|
||||
if (type == StructFieldType::STRUCT) {
|
||||
// recursive definitions are not allowed
|
||||
if (decl.typeString == name) {
|
||||
*err = fmt::format("field {}: recursive struct reference", decl.name);
|
||||
@@ -350,7 +349,7 @@ void MutableDynamicStruct::SetData(std::span<const uint8_t> data) {
|
||||
|
||||
std::string_view DynamicStruct::GetStringField(
|
||||
const StructFieldDescriptor* field) const {
|
||||
assert(field->m_type == StructFieldType::kChar);
|
||||
assert(field->m_type == StructFieldType::CHAR);
|
||||
assert(field->m_parent == m_desc);
|
||||
assert(m_desc->IsValid());
|
||||
// Find last non zero character
|
||||
@@ -407,7 +406,7 @@ std::string_view DynamicStruct::GetStringField(
|
||||
|
||||
bool MutableDynamicStruct::SetStringField(const StructFieldDescriptor* field,
|
||||
std::string_view value) {
|
||||
assert(field->m_type == StructFieldType::kChar);
|
||||
assert(field->m_type == StructFieldType::CHAR);
|
||||
assert(field->m_parent == m_desc);
|
||||
assert(m_desc->IsValid());
|
||||
size_t len = (std::min)(field->m_arraySize, value.size());
|
||||
@@ -422,7 +421,7 @@ bool MutableDynamicStruct::SetStringField(const StructFieldDescriptor* field,
|
||||
void MutableDynamicStruct::SetStructField(const StructFieldDescriptor* field,
|
||||
const DynamicStruct& value,
|
||||
size_t arrIndex) {
|
||||
assert(field->m_type == StructFieldType::kStruct);
|
||||
assert(field->m_type == StructFieldType::STRUCT);
|
||||
assert(field->m_parent == m_desc);
|
||||
assert(m_desc->IsValid());
|
||||
assert(value.GetDescriptor() == field->m_struct);
|
||||
|
||||
@@ -15,27 +15,27 @@ using namespace wpi::util::structparser;
|
||||
|
||||
std::string_view wpi::util::structparser::ToString(Token::Kind kind) {
|
||||
switch (kind) {
|
||||
case Token::kInteger:
|
||||
case Token::INTEGER:
|
||||
return "integer";
|
||||
case Token::kIdentifier:
|
||||
case Token::IDENTIFIER:
|
||||
return "identifier";
|
||||
case Token::kLeftBracket:
|
||||
case Token::LEFT_BRACKET:
|
||||
return "'['";
|
||||
case Token::kRightBracket:
|
||||
case Token::RIGHT_BRACKET:
|
||||
return "']'";
|
||||
case Token::kLeftBrace:
|
||||
case Token::LEFT_BRACE:
|
||||
return "'{'";
|
||||
case Token::kRightBrace:
|
||||
case Token::RIGHT_BRACE:
|
||||
return "'}'";
|
||||
case Token::kColon:
|
||||
case Token::COLON:
|
||||
return "':'";
|
||||
case Token::kSemicolon:
|
||||
case Token::SEMICOLON:
|
||||
return "';'";
|
||||
case Token::kComma:
|
||||
case Token::COMMA:
|
||||
return "','";
|
||||
case Token::kEquals:
|
||||
case Token::EQUALS:
|
||||
return "'='";
|
||||
case Token::kEndOfInput:
|
||||
case Token::END_OF_INPUT:
|
||||
return "<EOF>";
|
||||
default:
|
||||
return "unknown";
|
||||
@@ -52,21 +52,21 @@ Token Lexer::Scan() {
|
||||
|
||||
switch (m_current) {
|
||||
case '[':
|
||||
return MakeToken(Token::kLeftBracket);
|
||||
return MakeToken(Token::LEFT_BRACKET);
|
||||
case ']':
|
||||
return MakeToken(Token::kRightBracket);
|
||||
return MakeToken(Token::RIGHT_BRACKET);
|
||||
case '{':
|
||||
return MakeToken(Token::kLeftBrace);
|
||||
return MakeToken(Token::LEFT_BRACE);
|
||||
case '}':
|
||||
return MakeToken(Token::kRightBrace);
|
||||
return MakeToken(Token::RIGHT_BRACE);
|
||||
case ':':
|
||||
return MakeToken(Token::kColon);
|
||||
return MakeToken(Token::COLON);
|
||||
case ';':
|
||||
return MakeToken(Token::kSemicolon);
|
||||
return MakeToken(Token::SEMICOLON);
|
||||
case ',':
|
||||
return MakeToken(Token::kComma);
|
||||
return MakeToken(Token::COMMA);
|
||||
case '=':
|
||||
return MakeToken(Token::kEquals);
|
||||
return MakeToken(Token::EQUALS);
|
||||
case '-':
|
||||
case '0':
|
||||
case '1':
|
||||
@@ -80,12 +80,12 @@ Token Lexer::Scan() {
|
||||
case '9':
|
||||
return ScanInteger();
|
||||
case -1:
|
||||
return {Token::kEndOfInput, {}};
|
||||
return {Token::END_OF_INPUT, {}};
|
||||
default:
|
||||
if (isAlpha(m_current) || m_current == '_') {
|
||||
[[likely]] return ScanIdentifier();
|
||||
}
|
||||
return MakeToken(Token::kUnknown);
|
||||
return MakeToken(Token::UNKNOWN);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ Token Lexer::ScanInteger() {
|
||||
Get();
|
||||
} while (isDigit(m_current));
|
||||
Unget();
|
||||
return MakeToken(Token::kInteger);
|
||||
return MakeToken(Token::INTEGER);
|
||||
}
|
||||
|
||||
Token Lexer::ScanIdentifier() {
|
||||
@@ -102,7 +102,7 @@ Token Lexer::ScanIdentifier() {
|
||||
Get();
|
||||
} while (isAlnum(m_current) || m_current == '_');
|
||||
Unget();
|
||||
return MakeToken(Token::kIdentifier);
|
||||
return MakeToken(Token::IDENTIFIER);
|
||||
}
|
||||
|
||||
void Parser::FailExpect(Token::Kind desired) {
|
||||
@@ -116,31 +116,31 @@ void Parser::Fail(std::string_view msg) {
|
||||
bool Parser::Parse(ParsedSchema* out) {
|
||||
do {
|
||||
GetNextToken();
|
||||
if (m_token.Is(Token::kSemicolon)) {
|
||||
if (m_token.Is(Token::SEMICOLON)) {
|
||||
continue;
|
||||
}
|
||||
if (m_token.Is(Token::kEndOfInput)) {
|
||||
if (m_token.Is(Token::END_OF_INPUT)) {
|
||||
break;
|
||||
}
|
||||
if (!ParseDeclaration(&out->declarations.emplace_back())) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
} while (m_token.kind != Token::kEndOfInput);
|
||||
} while (m_token.kind != Token::END_OF_INPUT);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Parser::ParseDeclaration(ParsedDeclaration* out) {
|
||||
// optional enum specification
|
||||
if (m_token.Is(Token::kIdentifier) && m_token.text == "enum") {
|
||||
if (m_token.Is(Token::IDENTIFIER) && m_token.text == "enum") {
|
||||
GetNextToken();
|
||||
if (!Expect(Token::kLeftBrace)) {
|
||||
if (!Expect(Token::LEFT_BRACE)) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
if (!ParseEnum(&out->enumValues)) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
GetNextToken();
|
||||
} else if (m_token.Is(Token::kLeftBrace)) {
|
||||
} else if (m_token.Is(Token::LEFT_BRACE)) {
|
||||
if (!ParseEnum(&out->enumValues)) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
@@ -148,23 +148,23 @@ bool Parser::ParseDeclaration(ParsedDeclaration* out) {
|
||||
}
|
||||
|
||||
// type name
|
||||
if (!Expect(Token::kIdentifier)) {
|
||||
if (!Expect(Token::IDENTIFIER)) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
out->typeString = m_token.text;
|
||||
GetNextToken();
|
||||
|
||||
// identifier name
|
||||
if (!Expect(Token::kIdentifier)) {
|
||||
if (!Expect(Token::IDENTIFIER)) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
out->name = m_token.text;
|
||||
GetNextToken();
|
||||
|
||||
// array or bit field
|
||||
if (m_token.Is(Token::kLeftBracket)) {
|
||||
if (m_token.Is(Token::LEFT_BRACKET)) {
|
||||
GetNextToken();
|
||||
if (!Expect(Token::kInteger)) {
|
||||
if (!Expect(Token::INTEGER)) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
auto val = parse_integer<uint64_t>(m_token.text, 10);
|
||||
@@ -176,13 +176,13 @@ bool Parser::ParseDeclaration(ParsedDeclaration* out) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
GetNextToken();
|
||||
if (!Expect(Token::kRightBracket)) {
|
||||
if (!Expect(Token::RIGHT_BRACKET)) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
GetNextToken();
|
||||
} else if (m_token.Is(Token::kColon)) {
|
||||
} else if (m_token.Is(Token::COLON)) {
|
||||
GetNextToken();
|
||||
if (!Expect(Token::kInteger)) {
|
||||
if (!Expect(Token::INTEGER)) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
auto val = parse_integer<unsigned int>(m_token.text, 10);
|
||||
@@ -197,27 +197,27 @@ bool Parser::ParseDeclaration(ParsedDeclaration* out) {
|
||||
}
|
||||
|
||||
// declaration must end with EOF or semicolon
|
||||
if (m_token.Is(Token::kEndOfInput)) {
|
||||
if (m_token.Is(Token::END_OF_INPUT)) {
|
||||
return true;
|
||||
}
|
||||
return Expect(Token::kSemicolon);
|
||||
return Expect(Token::SEMICOLON);
|
||||
}
|
||||
|
||||
bool Parser::ParseEnum(EnumValues* out) {
|
||||
// we start with current = '{'
|
||||
GetNextToken();
|
||||
while (!m_token.Is(Token::kRightBrace)) {
|
||||
if (!Expect(Token::kIdentifier)) {
|
||||
while (!m_token.Is(Token::RIGHT_BRACE)) {
|
||||
if (!Expect(Token::IDENTIFIER)) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
std::string name;
|
||||
name = m_token.text;
|
||||
GetNextToken();
|
||||
if (!Expect(Token::kEquals)) {
|
||||
if (!Expect(Token::EQUALS)) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
GetNextToken();
|
||||
if (!Expect(Token::kInteger)) {
|
||||
if (!Expect(Token::INTEGER)) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
int64_t value;
|
||||
@@ -229,10 +229,10 @@ bool Parser::ParseEnum(EnumValues* out) {
|
||||
}
|
||||
out->emplace_back(std::move(name), value);
|
||||
GetNextToken();
|
||||
if (m_token.Is(Token::kRightBrace)) {
|
||||
if (m_token.Is(Token::RIGHT_BRACE)) {
|
||||
break;
|
||||
}
|
||||
if (!Expect(Token::kComma)) {
|
||||
if (!Expect(Token::COMMA)) {
|
||||
[[unlikely]] return false;
|
||||
}
|
||||
GetNextToken();
|
||||
|
||||
@@ -31,31 +31,31 @@ class StructDescriptorDatabase;
|
||||
*/
|
||||
enum class StructFieldType {
|
||||
/// bool.
|
||||
kBool,
|
||||
BOOL,
|
||||
/// char.
|
||||
kChar,
|
||||
CHAR,
|
||||
/// int8.
|
||||
kInt8,
|
||||
INT8,
|
||||
/// int16.
|
||||
kInt16,
|
||||
INT16,
|
||||
/// int32.
|
||||
kInt32,
|
||||
INT32,
|
||||
/// int64.
|
||||
kInt64,
|
||||
INT64,
|
||||
/// uint8.
|
||||
kUint8,
|
||||
UINT8,
|
||||
/// uint16.
|
||||
kUint16,
|
||||
UINT16,
|
||||
/// uint32.
|
||||
kUint32,
|
||||
UINT32,
|
||||
/// uint64.
|
||||
kUint64,
|
||||
UINT64,
|
||||
/// float.
|
||||
kFloat,
|
||||
FLOAT,
|
||||
/// double.
|
||||
kDouble,
|
||||
DOUBLE,
|
||||
/// struct.
|
||||
kStruct
|
||||
STRUCT
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -107,10 +107,9 @@ class StructFieldDescriptor {
|
||||
* @return true if signed integer, false otherwise
|
||||
*/
|
||||
bool IsInt() const {
|
||||
return m_type == StructFieldType::kInt8 ||
|
||||
m_type == StructFieldType::kInt16 ||
|
||||
m_type == StructFieldType::kInt32 ||
|
||||
m_type == StructFieldType::kInt64;
|
||||
return m_type == StructFieldType::INT8 ||
|
||||
m_type == StructFieldType::INT16 ||
|
||||
m_type == StructFieldType::INT32 || m_type == StructFieldType::INT64;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -119,10 +118,10 @@ class StructFieldDescriptor {
|
||||
* @return true if unsigned integer, false otherwise
|
||||
*/
|
||||
bool IsUint() const {
|
||||
return m_type == StructFieldType::kUint8 ||
|
||||
m_type == StructFieldType::kUint16 ||
|
||||
m_type == StructFieldType::kUint32 ||
|
||||
m_type == StructFieldType::kUint64;
|
||||
return m_type == StructFieldType::UINT8 ||
|
||||
m_type == StructFieldType::UINT16 ||
|
||||
m_type == StructFieldType::UINT32 ||
|
||||
m_type == StructFieldType::UINT64;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -408,7 +407,7 @@ class DynamicStruct {
|
||||
*/
|
||||
bool GetBoolField(const StructFieldDescriptor* field,
|
||||
size_t arrIndex = 0) const {
|
||||
assert(field->m_type == StructFieldType::kBool);
|
||||
assert(field->m_type == StructFieldType::BOOL);
|
||||
return GetFieldImpl(field, arrIndex);
|
||||
}
|
||||
|
||||
@@ -457,7 +456,7 @@ class DynamicStruct {
|
||||
*/
|
||||
float GetFloatField(const StructFieldDescriptor* field,
|
||||
size_t arrIndex = 0) const {
|
||||
assert(field->m_type == StructFieldType::kFloat);
|
||||
assert(field->m_type == StructFieldType::FLOAT);
|
||||
return bit_cast<float>(
|
||||
static_cast<uint32_t>(GetFieldImpl(field, arrIndex)));
|
||||
}
|
||||
@@ -471,7 +470,7 @@ class DynamicStruct {
|
||||
*/
|
||||
double GetDoubleField(const StructFieldDescriptor* field,
|
||||
size_t arrIndex = 0) const {
|
||||
assert(field->m_type == StructFieldType::kDouble);
|
||||
assert(field->m_type == StructFieldType::DOUBLE);
|
||||
return bit_cast<double>(GetFieldImpl(field, arrIndex));
|
||||
}
|
||||
|
||||
@@ -492,7 +491,7 @@ class DynamicStruct {
|
||||
*/
|
||||
DynamicStruct GetStructField(const StructFieldDescriptor* field,
|
||||
size_t arrIndex = 0) const {
|
||||
assert(field->m_type == StructFieldType::kStruct);
|
||||
assert(field->m_type == StructFieldType::STRUCT);
|
||||
assert(field->m_parent == m_desc);
|
||||
assert(m_desc->IsValid());
|
||||
assert(arrIndex < field->m_arraySize);
|
||||
@@ -552,7 +551,7 @@ class MutableDynamicStruct : public DynamicStruct {
|
||||
*/
|
||||
void SetBoolField(const StructFieldDescriptor* field, bool value,
|
||||
size_t arrIndex = 0) {
|
||||
assert(field->m_type == StructFieldType::kBool);
|
||||
assert(field->m_type == StructFieldType::BOOL);
|
||||
SetFieldImpl(field, value ? 1 : 0, arrIndex);
|
||||
}
|
||||
|
||||
@@ -591,7 +590,7 @@ class MutableDynamicStruct : public DynamicStruct {
|
||||
*/
|
||||
void SetFloatField(const StructFieldDescriptor* field, float value,
|
||||
size_t arrIndex = 0) {
|
||||
assert(field->m_type == StructFieldType::kFloat);
|
||||
assert(field->m_type == StructFieldType::FLOAT);
|
||||
SetFieldImpl(field, bit_cast<uint32_t>(value), arrIndex);
|
||||
}
|
||||
|
||||
@@ -604,7 +603,7 @@ class MutableDynamicStruct : public DynamicStruct {
|
||||
*/
|
||||
void SetDoubleField(const StructFieldDescriptor* field, double value,
|
||||
size_t arrIndex = 0) {
|
||||
assert(field->m_type == StructFieldType::kDouble);
|
||||
assert(field->m_type == StructFieldType::DOUBLE);
|
||||
SetFieldImpl(field, bit_cast<uint64_t>(value), arrIndex);
|
||||
}
|
||||
|
||||
@@ -637,7 +636,7 @@ class MutableDynamicStruct : public DynamicStruct {
|
||||
*/
|
||||
MutableDynamicStruct GetStructField(const StructFieldDescriptor* field,
|
||||
size_t arrIndex = 0) {
|
||||
assert(field->m_type == StructFieldType::kStruct);
|
||||
assert(field->m_type == StructFieldType::STRUCT);
|
||||
assert(field->m_parent == m_desc);
|
||||
assert(m_desc->IsValid());
|
||||
assert(arrIndex < field->m_arraySize);
|
||||
|
||||
@@ -20,29 +20,29 @@ struct Token {
|
||||
/** A lexed raw struct schema token kind. */
|
||||
enum Kind {
|
||||
/// Unknown.
|
||||
kUnknown,
|
||||
UNKNOWN,
|
||||
/// Integer.
|
||||
kInteger,
|
||||
INTEGER,
|
||||
/// Identifier.
|
||||
kIdentifier,
|
||||
IDENTIFIER,
|
||||
/// Left square bracket.
|
||||
kLeftBracket,
|
||||
LEFT_BRACKET,
|
||||
/// Right square bracket.
|
||||
kRightBracket,
|
||||
RIGHT_BRACKET,
|
||||
/// Left curly brace.
|
||||
kLeftBrace,
|
||||
LEFT_BRACE,
|
||||
/// Right curly brace.
|
||||
kRightBrace,
|
||||
RIGHT_BRACE,
|
||||
/// Colon.
|
||||
kColon,
|
||||
COLON,
|
||||
/// Semicolon.
|
||||
kSemicolon,
|
||||
SEMICOLON,
|
||||
/// Comma.
|
||||
kComma,
|
||||
COMMA,
|
||||
/// Equals.
|
||||
kEquals,
|
||||
EQUALS,
|
||||
/// End of input.
|
||||
kEndOfInput,
|
||||
END_OF_INPUT,
|
||||
};
|
||||
|
||||
Token() = default;
|
||||
@@ -50,7 +50,7 @@ struct Token {
|
||||
|
||||
bool Is(Kind k) const { return kind == k; }
|
||||
|
||||
Kind kind = kUnknown;
|
||||
Kind kind = UNKNOWN;
|
||||
std::string_view text;
|
||||
};
|
||||
|
||||
|
||||
@@ -328,14 +328,14 @@ class DynamicStructTest {
|
||||
|
||||
private static Stream<Arguments> provideSimpleTestParams() {
|
||||
return Stream.of(
|
||||
Arguments.of("bool a", 1, StructFieldType.kBool, false, false, 8, 0xff, 0, 0),
|
||||
Arguments.of("char a", 1, StructFieldType.kChar, false, false, 8, 0xff, 0, 0),
|
||||
Arguments.of("int8 a", 1, StructFieldType.kInt8, true, false, 8, 0xff, -128, 127),
|
||||
Arguments.of("int16 a", 2, StructFieldType.kInt16, true, false, 16, 0xffff, -32768, 32767),
|
||||
Arguments.of("bool a", 1, StructFieldType.BOOL, false, false, 8, 0xff, 0, 0),
|
||||
Arguments.of("char a", 1, StructFieldType.CHAR, false, false, 8, 0xff, 0, 0),
|
||||
Arguments.of("int8 a", 1, StructFieldType.INT8, true, false, 8, 0xff, -128, 127),
|
||||
Arguments.of("int16 a", 2, StructFieldType.INT16, true, false, 16, 0xffff, -32768, 32767),
|
||||
Arguments.of(
|
||||
"int32 a",
|
||||
4,
|
||||
StructFieldType.kInt32,
|
||||
StructFieldType.INT32,
|
||||
true,
|
||||
false,
|
||||
32,
|
||||
@@ -345,23 +345,23 @@ class DynamicStructTest {
|
||||
Arguments.of(
|
||||
"int64 a",
|
||||
8,
|
||||
StructFieldType.kInt64,
|
||||
StructFieldType.INT64,
|
||||
true,
|
||||
false,
|
||||
64,
|
||||
-1,
|
||||
-9223372036854775808L,
|
||||
9223372036854775807L),
|
||||
Arguments.of("uint8 a", 1, StructFieldType.kUint8, false, true, 8, 0xff, 0, 255),
|
||||
Arguments.of("uint16 a", 2, StructFieldType.kUint16, false, true, 16, 0xffff, 0, 65535),
|
||||
Arguments.of("uint8 a", 1, StructFieldType.UINT8, false, true, 8, 0xff, 0, 255),
|
||||
Arguments.of("uint16 a", 2, StructFieldType.UINT16, false, true, 16, 0xffff, 0, 65535),
|
||||
Arguments.of(
|
||||
"uint32 a", 4, StructFieldType.kUint32, false, true, 32, 0xffffffffL, 0, 4294967295L),
|
||||
Arguments.of("uint64 a", 8, StructFieldType.kUint64, false, true, 64, -1, 0, 0),
|
||||
Arguments.of("float a", 4, StructFieldType.kFloat, false, false, 32, 0xffffffffL, 0, 0),
|
||||
Arguments.of("float32 a", 4, StructFieldType.kFloat, false, false, 32, 0xffffffffL, 0, 0),
|
||||
Arguments.of("double a", 8, StructFieldType.kDouble, false, false, 64, -1, 0, 0),
|
||||
Arguments.of("float64 a", 8, StructFieldType.kDouble, false, false, 64, -1, 0, 0),
|
||||
Arguments.of("foo a", 0, StructFieldType.kStruct, false, false, 0, 0, 0, 0));
|
||||
"uint32 a", 4, StructFieldType.UINT32, false, true, 32, 0xffffffffL, 0, 4294967295L),
|
||||
Arguments.of("uint64 a", 8, StructFieldType.UINT64, false, true, 64, -1, 0, 0),
|
||||
Arguments.of("float a", 4, StructFieldType.FLOAT, false, false, 32, 0xffffffffL, 0, 0),
|
||||
Arguments.of("float32 a", 4, StructFieldType.FLOAT, false, false, 32, 0xffffffffL, 0, 0),
|
||||
Arguments.of("double a", 8, StructFieldType.DOUBLE, false, false, 64, -1, 0, 0),
|
||||
Arguments.of("float64 a", 8, StructFieldType.DOUBLE, false, false, 64, -1, 0, 0),
|
||||
Arguments.of("foo a", 0, StructFieldType.STRUCT, false, false, 0, 0, 0, 0));
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@@ -385,7 +385,7 @@ class DynamicStructTest {
|
||||
assertEquals(field.isInt(), isInt);
|
||||
assertEquals(field.isUint(), isUint);
|
||||
assertFalse(field.isArray());
|
||||
if (type != StructFieldType.kStruct) {
|
||||
if (type != StructFieldType.STRUCT) {
|
||||
assertTrue(desc.isValid());
|
||||
assertEquals(desc.getSize(), size);
|
||||
assertEquals(field.getSize(), size);
|
||||
@@ -419,7 +419,7 @@ class DynamicStructTest {
|
||||
assertEquals(field.isUint(), isUint);
|
||||
assertTrue(field.isArray());
|
||||
assertEquals(field.getArraySize(), 2);
|
||||
if (type != StructFieldType.kStruct) {
|
||||
if (type != StructFieldType.STRUCT) {
|
||||
assertTrue(desc.isValid());
|
||||
assertEquals(desc.getSize(), size * 2);
|
||||
} else {
|
||||
@@ -440,7 +440,7 @@ class DynamicStructTest {
|
||||
long bitMask,
|
||||
long minVal,
|
||||
long maxVal) {
|
||||
if (type == StructFieldType.kStruct) {
|
||||
if (type == StructFieldType.STRUCT) {
|
||||
return;
|
||||
}
|
||||
var desc = assertDoesNotThrow(() -> db.add("test", schema));
|
||||
@@ -448,13 +448,13 @@ class DynamicStructTest {
|
||||
var dynamic = DynamicStruct.allocate(desc);
|
||||
var field = desc.findFieldByName("a");
|
||||
assertNotNull(field);
|
||||
if ((isInt || isUint) && type != StructFieldType.kUint64) {
|
||||
if ((isInt || isUint) && type != StructFieldType.UINT64) {
|
||||
// Java can't represent uint64 max
|
||||
dynamic.setIntField(field, minVal);
|
||||
assertEquals(minVal, dynamic.getIntField(field));
|
||||
dynamic.setIntField(field, maxVal);
|
||||
assertEquals(maxVal, dynamic.getIntField(field));
|
||||
} else if (type == StructFieldType.kBool) {
|
||||
} else if (type == StructFieldType.BOOL) {
|
||||
dynamic.setBoolField(field, false);
|
||||
assertFalse(dynamic.getBoolField(field));
|
||||
dynamic.setBoolField(field, true);
|
||||
|
||||
@@ -502,7 +502,7 @@ TEST_P(DynamicSimpleStructTest, Check) {
|
||||
EXPECT_EQ(fields[0].IsInt(), GetParam().isInt);
|
||||
EXPECT_EQ(fields[0].IsUint(), GetParam().isUint);
|
||||
EXPECT_FALSE(fields[0].IsArray());
|
||||
if (GetParam().type != StructFieldType::kStruct) {
|
||||
if (GetParam().type != StructFieldType::STRUCT) {
|
||||
ASSERT_TRUE(desc->IsValid());
|
||||
ASSERT_EQ(desc->GetSize(), GetParam().size);
|
||||
ASSERT_EQ(fields[0].GetSize(), GetParam().size);
|
||||
@@ -527,7 +527,7 @@ TEST_P(DynamicSimpleStructTest, Array) {
|
||||
EXPECT_EQ(fields[0].IsUint(), GetParam().isUint);
|
||||
EXPECT_TRUE(fields[0].IsArray());
|
||||
EXPECT_EQ(fields[0].GetArraySize(), 2u);
|
||||
if (GetParam().type != StructFieldType::kStruct) {
|
||||
if (GetParam().type != StructFieldType::STRUCT) {
|
||||
ASSERT_TRUE(desc->IsValid());
|
||||
ASSERT_EQ(desc->GetSize(), GetParam().size * 2u);
|
||||
} else {
|
||||
@@ -550,7 +550,7 @@ static int64_t SignExtend(uint64_t value, size_t size) {
|
||||
}
|
||||
|
||||
TEST_P(DynamicSimpleStructTest, IntRoundTrip) {
|
||||
if (GetParam().type == StructFieldType::kStruct) {
|
||||
if (GetParam().type == StructFieldType::STRUCT) {
|
||||
return;
|
||||
}
|
||||
auto desc = db.Add("test", GetParam().schema, &err);
|
||||
@@ -582,7 +582,7 @@ TEST_P(DynamicSimpleStructTest, IntRoundTrip) {
|
||||
dynamic.SetUintField(field, value);
|
||||
EXPECT_EQ(dynamic.GetUintField(field), value);
|
||||
}
|
||||
} else if (GetParam().type == StructFieldType::kBool) {
|
||||
} else if (GetParam().type == StructFieldType::BOOL) {
|
||||
dynamic.SetBoolField(field, false);
|
||||
EXPECT_FALSE(dynamic.GetBoolField(field));
|
||||
dynamic.SetBoolField(field, true);
|
||||
@@ -591,39 +591,39 @@ TEST_P(DynamicSimpleStructTest, IntRoundTrip) {
|
||||
}
|
||||
|
||||
static SimpleTestParam simpleTests[] = {
|
||||
{"bool a", 1, StructFieldType::kBool, false, false, 8, UINT8_MAX, 0, 0},
|
||||
{"char a", 1, StructFieldType::kChar, false, false, 8, UINT8_MAX, 0, 0},
|
||||
{"int8 a", 1, StructFieldType::kInt8, true, false, 8, UINT8_MAX,
|
||||
{"bool a", 1, StructFieldType::BOOL, false, false, 8, UINT8_MAX, 0, 0},
|
||||
{"char a", 1, StructFieldType::CHAR, false, false, 8, UINT8_MAX, 0, 0},
|
||||
{"int8 a", 1, StructFieldType::INT8, true, false, 8, UINT8_MAX,
|
||||
static_cast<uint64_t>(std::numeric_limits<int8_t>::min()),
|
||||
std::numeric_limits<int8_t>::max()},
|
||||
{"int16 a", 2, StructFieldType::kInt16, true, false, 16, UINT16_MAX,
|
||||
{"int16 a", 2, StructFieldType::INT16, true, false, 16, UINT16_MAX,
|
||||
static_cast<uint64_t>(std::numeric_limits<int16_t>::min()),
|
||||
std::numeric_limits<int16_t>::max()},
|
||||
{"int32 a", 4, StructFieldType::kInt32, true, false, 32, UINT32_MAX,
|
||||
{"int32 a", 4, StructFieldType::INT32, true, false, 32, UINT32_MAX,
|
||||
static_cast<uint64_t>(std::numeric_limits<int32_t>::min()),
|
||||
std::numeric_limits<int32_t>::max()},
|
||||
{"int64 a", 8, StructFieldType::kInt64, true, false, 64, UINT64_MAX,
|
||||
{"int64 a", 8, StructFieldType::INT64, true, false, 64, UINT64_MAX,
|
||||
static_cast<uint64_t>(std::numeric_limits<int64_t>::min()),
|
||||
std::numeric_limits<int64_t>::max()},
|
||||
{"uint8 a", 1, StructFieldType::kUint8, false, true, 8, UINT8_MAX,
|
||||
{"uint8 a", 1, StructFieldType::UINT8, false, true, 8, UINT8_MAX,
|
||||
std::numeric_limits<uint8_t>::min(), std::numeric_limits<uint8_t>::max()},
|
||||
{"uint16 a", 2, StructFieldType::kUint16, false, true, 16, UINT16_MAX,
|
||||
{"uint16 a", 2, StructFieldType::UINT16, false, true, 16, UINT16_MAX,
|
||||
std::numeric_limits<uint16_t>::min(),
|
||||
std::numeric_limits<uint16_t>::max()},
|
||||
{"uint32 a", 4, StructFieldType::kUint32, false, true, 32, UINT32_MAX,
|
||||
{"uint32 a", 4, StructFieldType::UINT32, false, true, 32, UINT32_MAX,
|
||||
std::numeric_limits<uint32_t>::min(),
|
||||
std::numeric_limits<uint32_t>::max()},
|
||||
{"uint64 a", 8, StructFieldType::kUint64, false, true, 64, UINT64_MAX,
|
||||
{"uint64 a", 8, StructFieldType::UINT64, false, true, 64, UINT64_MAX,
|
||||
std::numeric_limits<uint64_t>::min(),
|
||||
std::numeric_limits<uint64_t>::max()},
|
||||
{"float a", 4, StructFieldType::kFloat, false, false, 32, UINT32_MAX, 0, 0},
|
||||
{"float32 a", 4, StructFieldType::kFloat, false, false, 32, UINT32_MAX, 0,
|
||||
{"float a", 4, StructFieldType::FLOAT, false, false, 32, UINT32_MAX, 0, 0},
|
||||
{"float32 a", 4, StructFieldType::FLOAT, false, false, 32, UINT32_MAX, 0,
|
||||
0},
|
||||
{"double a", 8, StructFieldType::kDouble, false, false, 64, UINT64_MAX, 0,
|
||||
{"double a", 8, StructFieldType::DOUBLE, false, false, 64, UINT64_MAX, 0,
|
||||
0},
|
||||
{"float64 a", 8, StructFieldType::kDouble, false, false, 64, UINT64_MAX, 0,
|
||||
{"float64 a", 8, StructFieldType::DOUBLE, false, false, 64, UINT64_MAX, 0,
|
||||
0},
|
||||
{"foo a", 0, StructFieldType::kStruct, false, false, 0, 0, 0, 0},
|
||||
{"foo a", 0, StructFieldType::STRUCT, false, false, 0, 0, 0, 0},
|
||||
};
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(DynamicSimpleStructTests, DynamicSimpleStructTest,
|
||||
|
||||
Reference in New Issue
Block a user