private protected AtomicMeasureUnit(
     MeasureContext ctx,
     string abbreviation,
     string name,
     AutoStandardPrefix stdPrefix,
     bool isNormalized)
     : base(ctx, abbreviation, name, isNormalized)
 {
     AutoStandardPrefix = stdPrefix;
 }
 internal AliasMeasureUnit(
     MeasureContext ctx,
     string abbreviation, string name,
     FullFactor definitionFactor,
     MeasureUnit definition,
     AutoStandardPrefix stdPrefix)
     : base(ctx, abbreviation, name, stdPrefix, false)
 {
     DefinitionFactor = definitionFactor;
     Definition       = definition;
 }
Exemplo n.º 3
0
            public void Add(IEnumerable <ExponentMeasureUnit> units)
            {
                MeasureContext c = null;

                foreach (var u in units)
                {
                    if (c != u.Context && c != null)
                    {
                        throw new Exception("Units' Context mismatch.");
                    }
                    Add(u.AtomicMeasureUnit, u.Exponent);
                    c = u.Context;
                }
            }
Exemplo n.º 4
0
 /// <summary>
 /// This ctor is used by <see cref="AtomicMeasureUnit"/>: it initializes a
 /// MeasureUnit bound to itself.
 /// </summary>
 /// <param name="ctx">The context.</param>
 /// <param name="abbreviation">The abbreviation.</param>
 /// <param name="name">The name.</param>
 /// <param name="isNormalized">True if this measure unit is the normalized one for its dimension.</param>
 private protected MeasureUnit(MeasureContext ctx, string abbreviation, string name, bool isNormalized)
 {
     _ctx         = ctx;
     Abbreviation = abbreviation;
     Name         = name;
     _units       = new[] { (ExponentMeasureUnit)this };
     if (isNormalized)
     {
         _normalizationFactor = FullFactor.Neutral;
         _normalization       = this;
         if (ctx == null)
         {
             _invert = this;
         }
     }
 }
Exemplo n.º 5
0
            public MeasureUnit GetResult(MeasureContext ctx)
            {
                int count = _normM.Count;

                if (count == 0)
                {
                    if (_dimensionLessFactor.IsNeutral)
                    {
                        return(None);
                    }
                    return(ctx.RegisterPrefixed(_dimensionLessFactor, MeasureStandardPrefix.None, None));
                }
                if (count == 1 && _dimensionLessFactor.IsNeutral)
                {
                    int exp = _normE[0];
                    return(exp == 0
                            ? None
                            : (exp == 1
                                ? _normM[0]
                                : ctx.RegisterExponent(exp, _normM[0])));
                }
                var result = new List <ExponentMeasureUnit>(count);

                for (int i = 0; i < count; ++i)
                {
                    int exp = _normE[i];
                    if (exp != 0)
                    {
                        result.Add(exp == 1 ? _normM[i] : ctx.RegisterExponent(exp, _normM[i]));
                    }
                }
                if (!_dimensionLessFactor.IsNeutral)
                {
                    result.Add(ctx.RegisterPrefixed(_dimensionLessFactor, MeasureStandardPrefix.None, None));
                }
                count = result.Count;
                if (count == 0)
                {
                    return(None);
                }
                if (count == 1)
                {
                    return(result[0]);
                }
                result.Sort();
                return(ctx.RegisterCombined(result.ToArray()));
            }
Exemplo n.º 6
0
 internal FundamentalMeasureUnit(MeasureContext ctx, string abbreviation, string name, AutoStandardPrefix stdPrefix, bool isNormalized)
     : base(ctx, abbreviation, name, stdPrefix, isNormalized)
 {
 }
Exemplo n.º 7
0
 public static MeasureUnit Create(MeasureContext ctx, IEnumerable <ExponentMeasureUnit> units)
 {
     return(new Combinator(units).GetResult(ctx));
 }
Exemplo n.º 8
0
 internal MeasureUnit(MeasureContext ctx, (string A, string N) names, ExponentMeasureUnit[] units)
Exemplo n.º 9
0
 internal ExponentMeasureUnit(MeasureContext ctx, (string A, string N) names, int exp, AtomicMeasureUnit u)
Exemplo n.º 10
0
 internal PrefixedMeasureUnit(MeasureContext ctx, (string A, string N) names, ExpFactor adjusment, MeasureStandardPrefix p, AtomicMeasureUnit u, bool isNormalized)