Ejemplo n.º 1
0
        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"); 
        }
Ejemplo n.º 2
0
        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;
        }