/// <summary> /// Parse constant value string and set representation based on type /// </summary> /// <param name="value"> expressed as a String </param> /// <param name="primitiveType"> that this is supposed to be </param> /// <returns> a new <seealso cref="PrimitiveValue" /> for the value. </returns> public static PrimitiveValue Parse(string value, PrimitiveType primitiveType) { switch (primitiveType.Type) { case SbePrimitiveType.Char: if (value.Length > 1) { throw new ArgumentException("Constant char value malformed: " + value); } return new PrimitiveValue(byte.Parse(value), 1); case SbePrimitiveType.Int8: return new PrimitiveValue(Convert.ToInt64(value), 1); case SbePrimitiveType.Int16: return new PrimitiveValue(Convert.ToInt64(value), 2); case SbePrimitiveType.Int32: return new PrimitiveValue(Convert.ToInt64(value), 4); case SbePrimitiveType.Int64: return new PrimitiveValue(Convert.ToInt64(value), 8); case SbePrimitiveType.UInt8: return new PrimitiveValue(Convert.ToInt64(value), 1); case SbePrimitiveType.UInt16: return new PrimitiveValue(Convert.ToInt64(value), 2); case SbePrimitiveType.UInt32: return new PrimitiveValue(Convert.ToInt64(value), 4); case SbePrimitiveType.UInt64: // TODO: not entirely adequate, but then again, Java doesn't have unsigned 64-bit integers... // TODO to fix in .NET return new PrimitiveValue(Convert.ToInt64(value), 8); case SbePrimitiveType.Float: return new PrimitiveValue(Convert.ToDouble(value), 4); case SbePrimitiveType.Double: return new PrimitiveValue(Convert.ToDouble(value), 8); default: throw new ArgumentException("Unknown PrimitiveType: " + primitiveType); } }
/// <summary> /// Parse constant value string and set representation based on type /// </summary> /// <param name="value"> expressed as a String </param> /// <param name="primitiveType"> that this is supposed to be </param> /// <returns> a new <seealso cref="PrimitiveValue" /> for the value. </returns> public static PrimitiveValue Parse(string value, PrimitiveType primitiveType) { switch (primitiveType.Type) { case SbePrimitiveType.Char: if (value.Length > 1) { throw new ArgumentException("Constant char value malformed: " + value); } return new PrimitiveValue(byte.Parse(value), 1); case SbePrimitiveType.Int8: return new PrimitiveValue(Convert.ToSByte(value), 1); case SbePrimitiveType.Int16: return new PrimitiveValue(Convert.ToInt16(value), 2); case SbePrimitiveType.Int32: return new PrimitiveValue(Convert.ToInt32(value), 4); case SbePrimitiveType.Int64: return new PrimitiveValue(Convert.ToInt64(value), 8); case SbePrimitiveType.UInt8: return new PrimitiveValue(Convert.ToByte(value), 1); case SbePrimitiveType.UInt16: return new PrimitiveValue(Convert.ToUInt16(value), 2); case SbePrimitiveType.UInt32: return new PrimitiveValue(Convert.ToUInt32(value), 4); case SbePrimitiveType.UInt64: return new PrimitiveValue(Convert.ToUInt64(value), 8); case SbePrimitiveType.Float: return new PrimitiveValue(Convert.ToDouble(value), 4); case SbePrimitiveType.Double: return new PrimitiveValue(Convert.ToDouble(value), 8); default: throw new ArgumentException("Unknown PrimitiveType: " + primitiveType); } }