Example #1
0
        public void InPlaceCeiling()
        {
            switch (Type)
            {
            case ValueTypeEnum.Integer:
                return;

            case ValueTypeEnum.Amount:
                AsAmount.InPlaceCeiling();
                return;

            case ValueTypeEnum.Balance:
                AsBalance.InPlaceCeiling();
                return;

            case ValueTypeEnum.Sequence:
                foreach (Value value in AsSequence)
                {
                    value.InPlaceCeiling();
                }
                return;

            default:
                ErrorContext.Current.AddErrorContext(String.Format("While ceiling {0}:", this));
                throw new ValueError(String.Format(ValueError.CannotCeilingSmth, this));
            }
        }
Example #2
0
        public void InPlaceRoundTo(int places)
        {
            Logger.Current.Debug("amount.roundto", () => String.Format("=====> roundto places {0}", places));
            switch (Type)
            {
            case ValueTypeEnum.Integer:
                return;

            case ValueTypeEnum.Amount:
                AsAmount.InPlaceRoundTo(places);
                return;

            case ValueTypeEnum.Balance:
                AsBalance.InPlaceRoundTo(places);
                return;

            case ValueTypeEnum.Sequence:
                foreach (Value value in AsSequence)
                {
                    value.InPlaceRoundTo(places);
                }
                return;

            default:
                break;
            }
        }
Example #3
0
        public void InPlaceRoundTo(int places)
        {
            switch (Type)
            {
            case ValueTypeEnum.Integer:
                return;

            case ValueTypeEnum.Amount:
                AsAmount.InPlaceRoundTo(places);
                return;

            case ValueTypeEnum.Balance:
                AsBalance.InPlaceRoundTo(places);
                return;

            case ValueTypeEnum.Sequence:
                foreach (Value value in AsSequence)
                {
                    value.InPlaceRoundTo(places);
                }
                return;

            default:
                break;
            }
        }
Example #4
0
        public Value Abs()
        {
            switch (Type)
            {
            case ValueTypeEnum.Integer:
                long val = AsLong;
                return(Value.Get(val < 0 ? -val : val));

            case ValueTypeEnum.Amount:
                return(Value.Get(AsAmount.Abs()));

            case ValueTypeEnum.Balance:
                return(Value.Get(AsBalance.Abs()));

            default:
                ErrorContext.Current.AddErrorContext(String.Format("While taking abs of {0}:", this));
                throw new ValueError(String.Format(ValueError.CannotAbsSmth, this));
            }
        }
Example #5
0
        // Return the "market value" of a given value at a specific time.
        // (equal to value(...
        public Value ValueOf(DateTime moment = default(DateTime), Commodity inTermOf = null)
        {
            switch (Type)
            {
            case ValueTypeEnum.Integer:
                return(Value.Empty);

            case ValueTypeEnum.Amount:
                Amount val = AsAmount.Value(moment, inTermOf);
                if (val != null)
                {
                    return(Value.Get(val));
                }
                return(Value.Empty);

            case ValueTypeEnum.Balance:
                Balance bal = AsBalance.Value(moment, inTermOf);
                if (!Balance.IsNull(bal))
                {
                    return(Value.Get(bal));
                }
                return(Value.Empty);

            case ValueTypeEnum.Sequence:
                Value temp = new Value();
                foreach (Value value in AsSequence)
                {
                    temp.PushBack(value.ValueOf(moment, inTermOf));
                }
                return(temp);

            default:
                break;
            }

            ErrorContext.Current.AddErrorContext(String.Format(ValueError.WhileFindingValuationOfSmth, this));
            throw new ValueError(String.Format(ValueError.CannotFindTheValueOfSmth, this));
        }
Example #6
0
        public Value Number()
        {
            switch (Type)
            {
            case ValueTypeEnum.Void:
                return(Value.Zero);

            case ValueTypeEnum.Boolean:
                return(AsBoolean ? Value.One : Value.Zero);

            case ValueTypeEnum.Integer:
                return(Value.Get(AsLong));

            case ValueTypeEnum.Amount:
                return(Value.Get(AsAmount.Number()));

            case ValueTypeEnum.Balance:
                return(Value.Get(AsBalance.Number()));

            case ValueTypeEnum.Sequence:
                if (AsSequence.Any())
                {
                    Value temp = new Value();
                    foreach (Value value in AsSequence)
                    {
                        temp.InPlaceAdd(value.Number());
                    }
                    return(temp);
                }
                break;

            default:
                break;
            }
            ErrorContext.Current.AddErrorContext(String.Format("While calling number() on {0}:", this));
            throw new ValueError(String.Format(ValueError.CannotDetermineNumericValueOfSmth, this));
        }