public void Add <T>(string key, T value) { if (VariantMap == null) { VariantMap = GlobalPool <VariantMap> .GetObject(); } VariantMap[key] = Variant.Get(value); }
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; }
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++; }
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)); }
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]; } }
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; } }
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; } }
public void SetValue(VariantMap value) { Value = value; ValueType = VariantType.Map; }
public Variant(VariantMap value) { Value = value; ValueType = VariantType.Map; }