internal static BlockExpression Block(Expression[] expressions) { if (expressions.Length == 0) { expressions = expressions.AddLast(Utils.Empty()); } return(Expression.Block(expressions)); }
public void TestShrink() { var cap = 5; var arr = new Array <int>(cap); for (var i = 0; i < cap; i++) { arr.AddLast(i); } Assert.AreEqual(cap, arr.Capacity); arr.AddLast(100); Assert.Greater(arr.Capacity, cap); Console.WriteLine(arr); Console.WriteLine("Capacity = {0}", arr.Capacity); }
internal static BlockExpression BlockVoid(Expression[] expressions) { if (expressions.Length == 0 || expressions[expressions.Length - 1].Type != typeof(void)) { expressions = expressions.AddLast(Utils.Empty()); } return(Expression.Block(expressions)); }
public void TestUpdate() { var arr = new Array <int>(); arr.AddLast(1); arr.AddLast(2); arr.AddLast(3); Console.WriteLine(arr); arr[0] = 2; arr[1] = 3; arr[2] = 4; Console.WriteLine(arr); var expectedArr = new int[] { 2, 3, 4 }; Assert.AreEqual(expectedArr.Length, arr.Size); for (var i = 0; i < expectedArr.Length; i++) { Assert.AreEqual(arr[i], expectedArr[i]); } }
internal static Type MakeNewDelegate(Type[] types, Type returnType) { if (types.Length > MaximumArity || types.Any(t => t.IsByRef)) { return(MakeNewCustomDelegate(types, returnType)); } if (returnType == typeof(void)) { return(GetActionType(types)); } else { var result = types.AddLast(returnType); return(GetFuncType(result)); } }
public void TestAdd() { var arr = new Array <int>(); arr.Add(0, 101); arr.AddFirst(9); arr.AddLast(200); arr.Add(0, 222); arr.Add(1, 555); Console.WriteLine(arr); var ret = new int[] { 222, 555, 9, 101, 200 }; Assert.AreEqual(arr.Size, ret.Length); for (var i = 0; i < ret.Length; i++) { Assert.AreEqual(ret[i], arr[i]); } }
public override DynamicMetaObject BindSetIndex(SetIndexBinder binder, DynamicMetaObject[] indexes, DynamicMetaObject value) { Requires.NotNull(binder); if (_self.TryGetSetItem(out ComMethodDesc setItem)) { bool[] isByRef = ComBinderHelpers.ProcessArgumentsForCom(ref indexes); isByRef = isByRef.AddLast(false); DynamicMetaObject result = BindComInvoke(indexes.AddLast(value), setItem, binder.CallInfo, isByRef); // Make sure to return the value; some languages need it. return(new DynamicMetaObject( Expression.Block(result.Expression, Expression.Convert(value.Expression, typeof(object))), result.Restrictions )); } return(base.BindSetIndex(binder, indexes, value)); }
private static T[] AddOrInsert(T[] rules, T item) { T[] localArray; if (rules.Length < 0x40) { return(rules.AddLast <T>(item)); } int num = rules.Length + 1; if (num > 0x80) { num = 0x80; localArray = rules; } else { localArray = new T[num]; } Array.Copy(rules, 0, localArray, 0, 0x40); localArray[0x40] = item; Array.Copy(rules, 0x40, localArray, 0x41, (num - 0x40) - 1); return(localArray); }
public override DynamicMetaObject BindSetIndex(SetIndexBinder binder, DynamicMetaObject[] indexes, DynamicMetaObject value) { IDispatchComObject target = _callable.DispatchComObject; string name = _callable.MemberName; bool holdsNull = value.Value == null && value.HasValue; if (target.TryGetPropertySetter(name, out ComMethodDesc method, value.LimitType, holdsNull) || target.TryGetPropertySetterExplicit(name, out method, value.LimitType, holdsNull)) { bool[] isByRef = ComBinderHelpers.ProcessArgumentsForCom(ref indexes); isByRef = isByRef.AddLast(false); DynamicMetaObject result = BindComInvoke(method, indexes.AddLast(value), binder.CallInfo, isByRef); // Make sure to return the value; some languages need it. return(new DynamicMetaObject( Expression.Block(result.Expression, Expression.Convert(value.Expression, typeof(object))), result.Restrictions )); } return(base.BindSetIndex(binder, indexes, value)); }
public override DynamicMetaObject BindSetIndex(SetIndexBinder binder, DynamicMetaObject[] indexes, DynamicMetaObject value) { IDispatchComObject target = _callable.DispatchComObject; string name = _callable.MemberName; bool holdsNull = value.Value == null && value.HasValue; if (target.TryGetPropertySetter(name, out ComMethodDesc method, value.LimitType, holdsNull) || target.TryGetPropertySetterExplicit(name, out method, value.LimitType, holdsNull)) { List <ParameterExpression> temps = new List <ParameterExpression>(); List <Expression> initTemps = new List <Expression>(); bool[] isByRef = ComBinderHelpers.ProcessArgumentsForCom(method, ref indexes, temps, initTemps); isByRef = isByRef.AddLast(false); // Convert the value to the target type DynamicMetaObject updatedValue = new DynamicMetaObject( value.CastOrConvertMethodArgument( value.LimitType, name, "SetIndex", allowCastingToByRefLikeType: false, temps, initTemps), value.Restrictions); var result = BindComInvoke(method, indexes.AddLast(updatedValue), binder.CallInfo, isByRef, temps, initTemps); // Make sure to return the value; some languages need it. return(new DynamicMetaObject( Expression.Block(result.Expression, Expression.Convert(value.Expression, typeof(object))), result.Restrictions )); } return(base.BindSetIndex(binder, indexes, value)); }
public override DynamicMetaObject BindSetIndex(SetIndexBinder binder, DynamicMetaObject[] indexes, DynamicMetaObject value) { ContractUtils.RequiresNotNull(binder, "binder"); return(binder.Defer(WrapSelf(), indexes.AddLast(value))); }
public override DynamicMetaObject BindSetIndex(SetIndexBinder binder, DynamicMetaObject[] indexes, DynamicMetaObject value) { Requires.NotNull(binder, nameof(binder)); return(binder.Defer(WrapSelf(), indexes.AddLast(value))); }
public override MetaObject BindSetIndex(SetIndexBinder binder, MetaObject[] indexes, MetaObject value) { ContractUtils.RequiresNotNull(binder, "binder"); return(IndexOperation(binder.FallbackSetIndex(UnwrapSelf(), indexes, value), indexes.AddLast(value), "TryGetSetItem")); }
public void AddLastTest() { _array.AddLast(1); Assert.AreEqual(1, _array.GetSize()); }
public override DynamicMetaObject BindSetIndex(SetIndexBinder binder, DynamicMetaObject[] indexes, DynamicMetaObject value) { return(binder.Defer(WrapSelf(), indexes.AddLast(value))); }
public void Enqueue(T t) { array.AddLast(t); }
//添加一个元素 public void Push(T e) { array.AddLast(e); }
public void Insert(T element) { data.AddLast(element); SiftUp(data.GetSize() - 1); }