diff options
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java index a5733f1cc4c..d5f77be0dd0 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java @@ -13,6 +13,7 @@ import java.util.regex.Pattern; * Class for parsing a tensor type spec. * * @author geirst + * @author bratseth */ public class TensorTypeParser { @@ -54,17 +55,24 @@ public class TensorTypeParser { return new TensorType.Builder(valueType, dimensions).build(); } + public static TensorType.Value toValueType(String valueTypeString) { + switch (valueTypeString) { + case "double" : return TensorType.Value.DOUBLE; + case "float" : return TensorType.Value.FLOAT; + default : throw new IllegalArgumentException("Value type must be either 'double' or 'float'" + + " but was '" + valueTypeString + "'"); + } + } + private static TensorType.Value parseValueTypeSpec(String valueTypeSpec, String fullSpecString) { if ( ! valueTypeSpec.startsWith("<") || ! valueTypeSpec.endsWith(">")) throw formatException(fullSpecString, Optional.of("Value type spec must be enclosed in <>")); - String valueType = valueTypeSpec.substring(1, valueTypeSpec.length() - 1); - switch (valueType) { - case "double" : return TensorType.Value.DOUBLE; - case "float" : return TensorType.Value.FLOAT; - default : throw formatException(fullSpecString, - "Value type must be either 'double' or 'float'" + - " but was '" + valueType + "'"); + try { + return toValueType(valueTypeSpec.substring(1, valueTypeSpec.length() - 1)); + } + catch (IllegalArgumentException e) { + throw formatException(fullSpecString, e.getMessage()); } } |