示例#1
0
        public static ByteQuantifiedSize FromSpecifiedUnit(ulong number, ByteQuantifiedSize.Quantifier specifiedUnit)
        {
            ByteQuantifiedSize byteQuantifiedSize = default(ByteQuantifiedSize);

            if (specifiedUnit <= ByteQuantifiedSize.Quantifier.KB)
            {
                if (specifiedUnit == ByteQuantifiedSize.Quantifier.None)
                {
                    return(ByteQuantifiedSize.FromBytes(number));
                }
                if (specifiedUnit == ByteQuantifiedSize.Quantifier.KB)
                {
                    return(ByteQuantifiedSize.FromKB(number));
                }
            }
            else
            {
                if (specifiedUnit == ByteQuantifiedSize.Quantifier.MB)
                {
                    return(ByteQuantifiedSize.FromMB(number));
                }
                if (specifiedUnit == ByteQuantifiedSize.Quantifier.GB)
                {
                    return(ByteQuantifiedSize.FromGB(number));
                }
                if (specifiedUnit == ByteQuantifiedSize.Quantifier.TB)
                {
                    return(ByteQuantifiedSize.FromTB(number));
                }
            }
            throw new ArgumentException(DataStrings.ExceptionUnknownUnit);
        }
示例#2
0
        private static void GetIntegerConstraints(ADSchemaAttributeObject schemaObject, ADPropertyDefinition propDef, List <PropertyDefinitionConstraint> constraints)
        {
            bool isUnlimited;
            bool isNullable;
            Type typeInformation = ADSchemaDataProvider.GetTypeInformation(propDef.Type, out isUnlimited, out isNullable);

            if (typeInformation == typeof(int))
            {
                int minValue = schemaObject.RangeLower ?? int.MinValue;
                int maxValue = schemaObject.RangeUpper ?? int.MaxValue;
                constraints.Add(ADSchemaDataProvider.GetRangedConstraint <int>(minValue, maxValue, isUnlimited, isNullable));
                return;
            }
            if (typeInformation == typeof(ByteQuantifiedSize))
            {
                IFormatProvider formatProvider           = propDef.FormatProvider;
                ByteQuantifiedSize.Quantifier quantifier = (formatProvider != null) ? ((ByteQuantifiedSize.Quantifier)formatProvider.GetFormat(typeof(ByteQuantifiedSize.Quantifier))) : ByteQuantifiedSize.Quantifier.None;
                ulong number                 = (ulong)((long)(schemaObject.RangeLower ?? 0));
                int?  rangeUpper             = schemaObject.RangeUpper;
                ulong number2                = ((rangeUpper != null) ? new ulong?((ulong)((long)rangeUpper.GetValueOrDefault())) : null) ?? Math.Min((ulong)((ByteQuantifiedSize.Quantifier) 18446744073709551615UL / quantifier), 2147483647UL);
                ByteQuantifiedSize minValue2 = ByteQuantifiedSize.FromSpecifiedUnit(number, quantifier);
                ByteQuantifiedSize maxValue2 = ByteQuantifiedSize.FromSpecifiedUnit(number2, quantifier);
                constraints.Add(ADSchemaDataProvider.GetRangedConstraint <ByteQuantifiedSize>(minValue2, maxValue2, isUnlimited, isNullable));
                return;
            }
            ExTraceGlobals.SchemaInitializationTracer.TraceDebug <DataSyntax, ADPropertyDefinition>(0L, "Unsupported property type '{1}' for data syntax '{0}'.", schemaObject.DataSyntax, propDef);
        }
示例#3
0
 public static Unlimited <ByteQuantifiedSize> Parse(string expression, ByteQuantifiedSize.Quantifier defaultUnit)
 {
     if (StringComparer.OrdinalIgnoreCase.Compare(expression, "Unlimited") == 0)
     {
         return(Unlimited <ByteQuantifiedSize> .UnlimitedValue);
     }
     return(ByteQuantifiedSize.Parse(expression, defaultUnit));
 }
示例#4
0
        public ulong RoundUpToUnit(ByteQuantifiedSize.Quantifier quantifier)
        {
            if (quantifier == (ByteQuantifiedSize.Quantifier) 0UL || (quantifier & quantifier - 1UL) != (ByteQuantifiedSize.Quantifier) 0UL)
            {
                throw new ArgumentException("Invalid quantifier value", "quantifier");
            }
            ulong num = this.bytes / (ulong)quantifier;

            if ((this.bytes & quantifier - ByteQuantifiedSize.Quantifier.None) != 0UL)
            {
                num += 1UL;
            }
            return(num);
        }
示例#5
0
        public static ByteQuantifiedSize Parse(string expression, ByteQuantifiedSize.Quantifier defaultUnit)
        {
            ulong number;
            ByteQuantifiedSize result;

            if (ulong.TryParse(expression, NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite, CultureInfo.InvariantCulture, out number))
            {
                result = ByteQuantifiedSize.FromSpecifiedUnit(number, defaultUnit);
            }
            else
            {
                result = ByteQuantifiedSize.Parse(expression);
            }
            return(result);
        }
示例#6
0
        public static bool TryParse(string expression, ByteQuantifiedSize.Quantifier defaultUnit, out Unlimited <ByteQuantifiedSize> result)
        {
            bool result2 = false;

            result = Unlimited <ByteQuantifiedSize> .UnlimitedValue;
            if (StringComparer.OrdinalIgnoreCase.Compare(expression, "Unlimited") == 0)
            {
                return(true);
            }
            ByteQuantifiedSize fromValue;

            if (ByteQuantifiedSize.TryParse(expression, defaultUnit, out fromValue))
            {
                result = fromValue;
            }
            return(result2);
        }
示例#7
0
 private string ToString(ByteQuantifiedSize.Quantifier quantifier)
 {
     if (quantifier <= ByteQuantifiedSize.Quantifier.KB)
     {
         if (quantifier == ByteQuantifiedSize.Quantifier.None)
         {
             return(string.Format(CultureInfo.InvariantCulture, "{0:N0} B", new object[]
             {
                 this.ToBytes()
             }));
         }
         if (quantifier == ByteQuantifiedSize.Quantifier.KB)
         {
             return(string.Format(CultureInfo.InvariantCulture, "{0:N0} KB", new object[]
             {
                 this.ToKB()
             }));
         }
     }
     else
     {
         if (quantifier == ByteQuantifiedSize.Quantifier.MB)
         {
             return(string.Format(CultureInfo.InvariantCulture, "{0:N0} MB", new object[]
             {
                 this.ToMB()
             }));
         }
         if (quantifier == ByteQuantifiedSize.Quantifier.GB)
         {
             return(string.Format(CultureInfo.InvariantCulture, "{0:N0} GB", new object[]
             {
                 this.ToGB()
             }));
         }
         if (quantifier == ByteQuantifiedSize.Quantifier.TB)
         {
             return(string.Format(CultureInfo.InvariantCulture, "{0:N0} TB", new object[]
             {
                 this.ToTB()
             }));
         }
     }
     return(this.ToLargestAppropriateUnitFormatString(true));
 }
示例#8
0
        public static bool TryParse(string expression, ByteQuantifiedSize.Quantifier defaultUnit, out ByteQuantifiedSize byteQuantifiedSize)
        {
            bool  result = true;
            ulong number;

            if (ulong.TryParse(expression, NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite, CultureInfo.InvariantCulture, out number))
            {
                try
                {
                    byteQuantifiedSize = ByteQuantifiedSize.FromSpecifiedUnit(number, defaultUnit);
                    return(result);
                }
                catch (ArgumentException)
                {
                    byteQuantifiedSize = default(ByteQuantifiedSize);
                    return(false);
                }
            }
            result = ByteQuantifiedSize.TryParse(expression, out byteQuantifiedSize);
            return(result);
        }
示例#9
0
 public QuantifierProvider(ByteQuantifiedSize.Quantifier quantifier)
 {
     this.quantifier = quantifier;
 }
示例#10
0
        private static bool InternalTryParse(string expression, out ulong bytes, out ByteQuantifiedSize.Quantifier unit, out Exception error)
        {
            bytes      = 0UL;
            unit       = ByteQuantifiedSize.Quantifier.None;
            error      = null;
            expression = expression.Trim();
            Match match = ByteQuantifiedSize.LargestAppropriateUnitFormatPattern.Match(expression);

            if (!match.Success)
            {
                error = new FormatException(DataStrings.ExceptionFormatNotCorrect(expression));
                return(false);
            }
            string a;

            ByteQuantifiedSize.MaximumValues maximumValues;
            if ((a = match.Groups["Unit"].Value.ToUpper()) != null)
            {
                if (a == "KB")
                {
                    unit          = ByteQuantifiedSize.Quantifier.KB;
                    maximumValues = ByteQuantifiedSize.MaximumValues.KB;
                    goto IL_EC;
                }
                if (a == "MB")
                {
                    unit          = ByteQuantifiedSize.Quantifier.MB;
                    maximumValues = ByteQuantifiedSize.MaximumValues.MB;
                    goto IL_EC;
                }
                if (a == "GB")
                {
                    unit          = ByteQuantifiedSize.Quantifier.GB;
                    maximumValues = ByteQuantifiedSize.MaximumValues.GB;
                    goto IL_EC;
                }
                if (a == "TB")
                {
                    unit          = ByteQuantifiedSize.Quantifier.TB;
                    maximumValues = ByteQuantifiedSize.MaximumValues.TB;
                    goto IL_EC;
                }
            }
            unit          = ByteQuantifiedSize.Quantifier.None;
            maximumValues = ByteQuantifiedSize.MaximumValues.None;
IL_EC:
            if (match.Groups["LongBytes"].Success)
            {
                if (!ulong.TryParse(match.Groups["LongBytes"].Value, NumberStyles.AllowThousands, CultureInfo.InvariantCulture, out bytes))
                {
                    error = new FormatException(DataStrings.ExceptionFormatNotCorrect(expression));
                    return(false);
                }
            }
            else
            {
                double num;
                if (!double.TryParse(match.Groups["ShortBytes"].Value, NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingSign | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands | NumberStyles.AllowExponent, null, out num))
                {
                    error = new FormatException(DataStrings.ExceptionFormatNotCorrect(expression));
                    return(false);
                }
                if (maximumValues < num || 0.0 > num)
                {
                    error = new OverflowException(DataStrings.ExceptionValueOverflow(ByteQuantifiedSize.MinValue.ToString(unit), ByteQuantifiedSize.MaxValue.ToString(unit), expression));
                    return(false);
                }
                bytes = (ulong)(unit * num);
            }
            return(true);
        }
示例#11
0
 private ByteQuantifiedSize(ulong byteValue, ByteQuantifiedSize.Quantifier desiredUnitToDisplay)
 {
     this.bytes         = byteValue;
     this.unit          = desiredUnitToDisplay;
     this.canonicalForm = null;
 }