Ejemplo n.º 1
0
 public void Add <T>(string key, T value)
 {
     if (VariantMap == null)
     {
         VariantMap = GlobalPool <VariantMap> .GetObject();
     }
     VariantMap[key] = Variant.Get(value);
 }
Ejemplo n.º 2
0
        public void RemoveAt(int index)
        {
            var newLength = ArrayLength - 1;

            for (var i = index + 1; i <= newLength; i++)
            {
                Children[VariantMap.GetIndexString(i - 1)] = Children[VariantMap.GetIndexString(i)];
            }
            Children.Remove(VariantMap.GetIndexString(newLength));
            ArrayLength = newLength;
        }
Ejemplo n.º 3
0
        public void Insert <T>(int index, T value)
        {
            var oldlength = ArrayLength;

            for (var i = oldlength; i > index; i--)
            {
                Children[VariantMap.GetIndexString(i)] = Children[VariantMap.GetIndexString(i - 1)];
            }
            Children[VariantMap.GetIndexString(index)] = value is Variant ? value as Variant : Get(value);
            ArrayLength++;
        }
Ejemplo n.º 4
0
        public static Variant GetList(params Variant[] items)
        {
            var map = GlobalPool <VariantMap> .GetObject();

            map.IsArray = true;
            for (var i = 0; i < items.Length; i++)
            {
                map[VariantMap.GetIndexString(i)] = items[i];
            }
            map.ArrayLength = items.Length;
            return(Get(map));
        }
Ejemplo n.º 5
0
        public void SetValue(IList <Variant> array)
        {
            var vm = new VariantMap();

            Value          = vm;
            ValueType      = VariantType.Map;
            vm.IsArray     = true;
            vm.ArrayLength = array.Count;
            for (var i = 0; i < vm.ArrayLength; i++)
            {
                vm[VariantMap.GetIndexString(i)] = array[i];
            }
        }
Ejemplo n.º 6
0
 public Variant this[int index]
 {
     get
     {
         Variant result = null;
         (Value as VariantMap)?.TryGetValue(VariantMap.GetIndexString(index), out result);
         return(result);
     }
     set
     {
         var v = Value as VariantMap;
         if (v == null)
         {
             SetValue(v = GlobalPool <VariantMap> .GetObject());
         }
         if (index > v.ArrayLength - 1)
         {
             v.ArrayLength = index + 1;
         }
         v[VariantMap.GetIndexString(index)] = value;
         IsArray = true;
     }
 }
Ejemplo n.º 7
0
        public void SetValue(JToken json)
        {
            switch (json.Type)
            {
            case JTokenType.Array:
                ValueType = VariantType.Map;
                foreach (var item in json)
                {
                    Add(Get(item));
                }
                break;

            case JTokenType.Object:
                ValueType = VariantType.Map;
                foreach (var property in (json as JObject).Properties())
                {
                    Add(property.Name, Get(property.Value));
                    if (property.Name.StartsWith(Defines.VAR_INDEX_VALUE))
                    {
                        IsArray     = true;
                        ArrayLength = Math.Max(ArrayLength, VariantMap.IndexStringToInt(property.Name) + 1);
                    }
                }
                break;

            case JTokenType.Boolean:
                ValueType = VariantType.Boolean;
                Value     = (bool)json;
                break;

            case JTokenType.Null:
                ValueType = VariantType.Null;
                break;

            case JTokenType.String:
                ValueType = VariantType.String;
                Value     = (string)json;
                break;

            case JTokenType.Integer:
                if ((ulong)json <= int.MaxValue)
                {
                    ValueType = VariantType.Int32;
                    Value     = (int)json;
                }
                else
                {
                    ValueType = VariantType.Int64;
                    Value     = (long)json;
                }
                break;

            case JTokenType.Float:
                ValueType = VariantType.Double;
                Value     = (double)json;
                break;

            case JTokenType.Undefined:
                ValueType = VariantType.Undefined;
                break;

            case JTokenType.Date:
                ValueType = VariantType.Date;
                Value     = (DateTime)json;
                break;

            case JTokenType.TimeSpan:
                ValueType = VariantType.Time;
                Value     = (DateTime)json;
                break;
            }
        }
Ejemplo n.º 8
0
 public void SetValue(VariantMap value)
 {
     Value     = value;
     ValueType = VariantType.Map;
 }
Ejemplo n.º 9
0
 public Variant(VariantMap value)
 {
     Value     = value;
     ValueType = VariantType.Map;
 }