Exemple #1
0
 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);
 }
Exemple #2
0
 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);
 }
Exemple #3
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));
        }