private static DoubleRange? EnsureItemValueRange(DoubleRange? itemValueRange, BinaryItemType itemType) { Contract.Ensures(Contract.Result<DoubleRange?>() != null); if (itemValueRange == null) { switch (itemType) { case BinaryItemType.Boolean: return new DoubleRange(0.0, 1.0); case BinaryItemType.Byte: return new DoubleRange(0.0, byte.MaxValue); case BinaryItemType.Int16: return new DoubleRange(short.MinValue, short.MaxValue); case BinaryItemType.Int32: return new DoubleRange(int.MinValue, int.MaxValue); case BinaryItemType.Int64: return new DoubleRange(long.MinValue, long.MaxValue); case BinaryItemType.UInt16: return new DoubleRange(ushort.MinValue, ushort.MaxValue); case BinaryItemType.UInt32: return new DoubleRange(uint.MinValue, uint.MaxValue); case BinaryItemType.UInt64: return new DoubleRange(ulong.MinValue, ulong.MaxValue); case BinaryItemType.Float: return new DoubleRange(float.MinValue, float.MaxValue); case BinaryItemType.Double: return new DoubleRange(double.MinValue, double.MaxValue); } } else { switch (itemType) { case BinaryItemType.Boolean: return Bordered(itemValueRange.Value, new DoubleRange(0.0, 1.0)); case BinaryItemType.Byte: return Bordered(itemValueRange.Value, new DoubleRange(0.0, byte.MaxValue)); case BinaryItemType.Int16: return Bordered(itemValueRange.Value, new DoubleRange(short.MinValue, short.MaxValue)); case BinaryItemType.Int32: return Bordered(itemValueRange.Value, new DoubleRange(int.MinValue, int.MaxValue)); case BinaryItemType.Int64: return Bordered(itemValueRange.Value, new DoubleRange(long.MinValue, long.MaxValue)); case BinaryItemType.UInt16: return Bordered(itemValueRange.Value, new DoubleRange(ushort.MinValue, ushort.MaxValue)); case BinaryItemType.UInt32: return Bordered(itemValueRange.Value, new DoubleRange(uint.MinValue, uint.MaxValue)); case BinaryItemType.UInt64: return Bordered(itemValueRange.Value, new DoubleRange(ulong.MinValue, ulong.MaxValue)); case BinaryItemType.Float: return Bordered(itemValueRange.Value, new DoubleRange(float.MinValue, float.MaxValue)); case BinaryItemType.Double: return Bordered(itemValueRange.Value, new DoubleRange(double.MinValue, double.MaxValue)); } } throw new ArgumentException(itemType + " is unknown.", "itemType"); }
public BinaryFeatureDescription(string id, BinaryItemType itemType, int itemCount, DoubleRange? itemValueRange = null, object context = null) : base(id, EnsureItemValueRange(itemValueRange, itemType).Value, context) { Contract.Requires(!string.IsNullOrEmpty(id)); Contract.Requires(itemValueRange == null || !itemValueRange.Value.IsFixed); Contract.Requires(itemCount > 0); ItemType = itemType; ItemCount = itemCount; }