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)); } }
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; } }
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; } }
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)); } }
// 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)); }
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)); }