public void PushBack(Value val) { if (Storage == null) { Storage = ValueStorageExtensions.Create(new List <Value>()); } if (Storage.Type != ValueTypeEnum.Sequence) { Storage = ValueStorageExtensions.Create(Storage.AsSequence); } AsSequence.Add(val); }
public void PushFront(Value val) { if (Storage == null) { Storage = ValueStorageExtensions.Create(new List <Value>()); } if (Storage.Type != ValueTypeEnum.Sequence) { Storage = ValueStorageExtensions.Create(Storage.AsSequence); } AsSequence.Insert(0, val); }
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)); }