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.util.struct; 006 007/** Known data types for raw struct dynamic fields (see StructFieldDescriptor). */ 008public enum StructFieldType { 009 kBool("bool", false, false, 1), 010 kChar("char", false, false, 1), 011 kInt8("int8", true, false, 1), 012 kInt16("int16", true, false, 2), 013 kInt32("int32", true, false, 4), 014 kInt64("int64", true, false, 8), 015 kUint8("uint8", false, true, 1), 016 kUint16("uint16", false, true, 2), 017 kUint32("uint32", false, true, 4), 018 kUint64("uint64", false, true, 8), 019 kFloat("float", false, false, 4), 020 kDouble("double", false, false, 8), 021 kStruct("struct", false, false, 0); 022 023 @SuppressWarnings("MemberName") 024 public final String name; 025 026 @SuppressWarnings("MemberName") 027 public final boolean isInt; 028 029 @SuppressWarnings("MemberName") 030 public final boolean isUint; 031 032 @SuppressWarnings("MemberName") 033 public final int size; 034 035 StructFieldType(String name, boolean isInt, boolean isUint, int size) { 036 this.name = name; 037 this.isInt = isInt; 038 this.isUint = isUint; 039 this.size = size; 040 } 041 042 @Override 043 public String toString() { 044 return name; 045 } 046 047 /** 048 * Get field type from string. 049 * 050 * @param str string 051 * @return field type 052 */ 053 public static StructFieldType fromString(String str) { 054 for (StructFieldType type : StructFieldType.values()) { 055 if (type.name.equals(str)) { 056 return type; 057 } 058 } 059 if ("float32".equals(str)) { 060 return kFloat; 061 } else if ("float64".equals(str)) { 062 return kDouble; 063 } else { 064 return kStruct; 065 } 066 } 067}