Represents the dynamic delete index operation at the call site, providing the binding semantic and the details about the operation.
Inheritance: DynamicMetaObjectBinder
コード例 #1
0
		public override bool TryDeleteIndex(DeleteIndexBinder binder, object[] indexes)
		{
			//--- Debbuger Break --- //
			if(System.Diagnostics.Debugger.IsAttached)
				System.Diagnostics.Debugger.Break();
			//--- Debbuger Break --- //

			return base.TryDeleteIndex(binder, indexes);
		}
コード例 #2
0
ファイル: IObjMeta.cs プロジェクト: dtdimi/IronJS
 public override Meta BindDeleteIndex(DeleteIndexBinder binder, Meta[] indexes)
 {
     return new Meta(
         Et.Call(
             EtUtils.Cast<IObj>(this.Expression),
             IObjMethods.MiDelete,
             EtUtils.Box(indexes[0].Expression)
         ),
         Restrict.GetTypeRestriction(
             this.Expression,
             this.LimitType
         )
     );
 }
コード例 #3
0
 /// <summary>
 /// Override on DynamicObject
 /// </summary>
 /// <param name="binder"></param>
 /// <param name="indexes"></param>
 /// <returns></returns>
 public override bool TryDeleteIndex(DeleteIndexBinder binder, object[] indexes)
 {
     return true;
 }
コード例 #4
0
 public override Boolean TryDeleteIndex(DeleteIndexBinder binder, Object[] indexes)
 {
     throw new NotImplementedException(String.Format("TryDeleteIndex indexes='{0}'", String.Join(", ", indexes)));
 }
コード例 #5
0
ファイル: ScriptItem.cs プロジェクト: dirkelfman/ClearScript
 public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
 {
     return scriptItem.PostProcessBindResult(metaDynamic.BindDeleteIndex(binder, indexes));
 }
コード例 #6
0
ファイル: SimpleMetaObject.cs プロジェクト: xeno-by/xenogears
 public virtual void DeleteIndex(DeleteIndexBinder binder, Object[] indexes){ throw Fallback(); }
コード例 #7
0
    public virtual new System.Dynamic.DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, System.Dynamic.DynamicMetaObject[] indexes)
    {
      Contract.Requires(binder != null);

      return default(System.Dynamic.DynamicMetaObject);
    }
コード例 #8
0
 /// <summary>
 /// Provides the implementation of performing a delete index operation.  Derived classes
 /// can override this method to customize behavior.  When not overridden the call site
 /// requesting the binder determines the behavior.
 /// </summary>
 /// <param name="binder">The binder provided by the call site.</param>
 /// <param name="indexes">The indexes to be deleted.</param>
 /// <returns>true if the operation is complete, false if the call site should determine behavior.</returns>
 public virtual bool TryDeleteIndex(DeleteIndexBinder binder, object[] indexes) => false;
コード例 #9
0
        public virtual new System.Dynamic.DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, System.Dynamic.DynamicMetaObject[] indexes)
        {
            Contract.Requires(binder != null);

            return(default(System.Dynamic.DynamicMetaObject));
        }
コード例 #10
0
ファイル: TableMetaObject.cs プロジェクト: jeffpanici75/Tsuki
 public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
 {
     return base.BindDeleteIndex(binder, indexes);
 }
コード例 #11
0
        public override bool TryDeleteIndex(DeleteIndexBinder binder, object[] indexes)
        {
            if (indexes.All(index => (index is int) || (index is string)))
            {
                return indexMap.Remove(string.Join(":", indexes));
            }

            return base.TryDeleteIndex(binder, indexes);
        }
コード例 #12
0
ファイル: DynamicObject.cs プロジェクト: octavioh/ironruby
 /// <summary>
 /// Provides the implementation of performing a delete index operation.  Derived classes
 /// can override this method to custmize behavior.  When not overridden the call site
 /// requesting the binder determines the behavior.
 /// </summary>
 /// <param name="binder">The binder provided by the call site.</param>
 /// <param name="indexes">The indexes to be deleted.</param>
 /// <returns>true if the operation is complete, false if the call site should determine behavior.</returns>
 public virtual bool TryDeleteIndex(DeleteIndexBinder binder, object[] indexes) {
     throw new NotSupportedException();
 }
コード例 #13
0
ファイル: DynamicObject.cs プロジェクト: csharpHub/Theraot
 /// <summary>
 ///     Provides the implementation of performing a delete index operation.  Derived classes
 ///     can override this method to customize behavior.  When not overridden the call site
 ///     requesting the binder determines the behavior.
 /// </summary>
 /// <param name="binder">The binder provided by the call site.</param>
 /// <param name="indexes">The indexes to be deleted.</param>
 /// <returns>true if the operation is complete, false if the call site should determine behavior.</returns>
 public virtual bool TryDeleteIndex(DeleteIndexBinder binder, object[] indexes)
 {
     No.Op(binder);
     No.Op(indexes);
     return(false);
 }
コード例 #14
0
 public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
 {
     return AddRestrictions(this.metaForwardee.BindDeleteIndex(binder, indexes));
 }
コード例 #15
0
 public virtual new bool TryDeleteIndex(DeleteIndexBinder binder, Object[] indexes)
 {
     return(default(bool));
 }
コード例 #16
0
 /// <summary>
 /// Provides the implementation of performing a delete index operation.  Derived classes
 /// can override this method to custmize behavior.  When not overridden the call site
 /// requesting the binder determines the behavior.
 /// </summary>
 /// <param name="binder">The binder provided by the call site.</param>
 /// <param name="indexes">The indexes to be deleted.</param>
 /// <returns>true if the operation is complete, false if the call site should determine behavior.</returns>
 public virtual bool TryDeleteIndex(DeleteIndexBinder binder, object[] indexes) {
     return false;
 }
コード例 #17
0
 public virtual DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
 {
     throw new NotImplementedException();
 }
コード例 #18
0
 /// <summary>
 /// Provides the implementation of performing a delete index operation.  Derived classes
 /// can override this method to custmize behavior.  When not overridden the call site
 /// requesting the binder determines the behavior.
 /// </summary>
 /// <param name="binder">The binder provided by the call site.</param>
 /// <param name="indexes">The indexes to be deleted.</param>
 /// <returns>true if the operation is complete, false if the call site should determine behavior.</returns>
 public virtual bool TryDeleteIndex(DeleteIndexBinder binder, object[] indexes)
 {
     return(false);
 }
コード例 #19
0
 /// <summary>
 ///     Performs the binding of the dynamic delete index operation.
 /// </summary>
 /// <param name="binder">
 ///     An instance of the <see cref="T:System.Dynamic.DeleteIndexBinder" /> that represents the details of the dynamic operation.
 /// </param>
 /// <param name="indexes">
 ///     An array of <see cref="T:System.Dynamic.DynamicMetaObject" /> instances - indexes for the delete index operation.
 /// </param>
 /// <returns>
 ///     The new <see cref="T:System.Dynamic.DynamicMetaObject" /> representing the result of the binding.
 /// </returns>
 public override DynamicMetaObject BindDeleteIndex( DeleteIndexBinder binder, DynamicMetaObject[] indexes )
 {
     return ApplyBinding( meta => meta.BindDeleteIndex( binder, indexes ),
                          ( target, errorSuggestion ) =>
                          binder.FallbackDeleteIndex( target, indexes, errorSuggestion ) );
 }
コード例 #20
0
ファイル: DynamicRenderer.cs プロジェクト: tsudonymn/RedDeer
 public override bool TryDeleteIndex(DeleteIndexBinder binder, object[] indexes)
 {
     MessageBox.Show("Here");
     return base.TryDeleteIndex(binder, indexes);
 }
コード例 #21
0
        public override bool TryDeleteIndex(DeleteIndexBinder binder, object[] indexes)
        {
            if (indexes.Length > 1)
                return base.TryDeleteIndex(binder, indexes);

            var jsIndex = GetEngine().Converter.FromObject(indexes[0]);
            DeleteValueAtIndex(jsIndex);

            return true;
        }
コード例 #22
0
ファイル: SimpleMetaObject.cs プロジェクト: xeno-by/xenogears
        public sealed override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
        {
            var fallback = ((Func<Expression>)(() =>
            {
                try { return base.BindDeleteIndex(binder, indexes).Expression; }
                catch (Exception ex) { return Expression.Throw(Expression.Constant(ex)); }
            }))();

            var dispatchResult = Expression.Parameter(typeof(DispatchResult), "dispatchResult");
            var shim = Expression.Block(dispatchResult.MkArray(),
                // 1. var dispatchResult = DispatchDeleteIndex(binder, `expression`, indexes);
                Expression.Assign(dispatchResult, Expression.Call(
                    Expression.Constant(this),
                    typeof(SimpleMetaObject).GetMethod("DispatchDeleteIndex", BF.PrivateInstance),
                    Expression.Constant(binder),
                    Expression,
                    Expression.NewArrayInit(typeof(Object), indexes.Select(index => Expression.Convert(index.Expression, typeof(Object)))))),
                // 2. if (!dispatchResult.Success) `fallback`;
                Expression.IfThen(
                    Expression.Not(Expression.Property(dispatchResult, "Success")),
                    fallback));
            return new DynamicMetaObject(shim, BindingRestrictions.GetTypeRestriction(Expression, LimitType));
        }
コード例 #23
0
 public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
 {
     Fallback fallback = null;
     if (!this.IsOverridden("TryDeleteIndex"))
     {
         return base.BindDeleteIndex(binder, indexes);
     }
     if (fallback == null)
     {
         fallback = e => binder.FallbackDeleteIndex(this, indexes, e);
     }
     return this.CallMethodNoResult("TryDeleteIndex", binder, GetArgArray(indexes), fallback);
 }
コード例 #24
0
ファイル: SimpleMetaObject.cs プロジェクト: xeno-by/xenogears
        private DispatchResult DispatchDeleteIndex(DeleteIndexBinder binder, Object @this, Object[] indexes)
        {
            var old_value = Value;
            Value = @this;

            try
            {
                try
                {
                    try
                    {
                        DeleteIndex(binder, indexes);
                        return Succeed();
                    }
                    catch (FallbackException)
                    {
                        var dynamic_object = Value as IDynamicObject;
                        if (dynamic_object != null) { dynamic_object.DeleteIndex(binder, indexes); return Succeed(); }
                        else throw;
                    }
                }
                catch (FallbackException)
                {
                    return Fail();
                }
                catch (Exception ex)
                {
                    if (WrapExceptions)
                    {
                        var bind_args = new OrderedDictionary<String, Object>();
                        bind_args.Add("this", @this);
                        bind_args.Add("indexes", indexes);
                        throw new BindException(binder, bind_args, ex);
                    }
                    else
                    {
                        throw;
                    }
                }
            }
            finally
            {
                Value = old_value;
            }
        }
コード例 #25
0
ファイル: Prototype.cs プロジェクト: idavis/prototype.ps
 public override bool TryDeleteIndex( DeleteIndexBinder binder, object[] indexes )
 {
     if(!ReferenceEquals(Prototype, null))
     {
         if(Prototype.TryDeleteIndex(binder, indexes))
         {
             return true;
         }
     }
     if ( TryDeleteIndexMissing == null )
     {
         return true;
     }
     return TryDeleteIndexMissing( binder, indexes );
 }
コード例 #26
0
ファイル: JsStore.cs プロジェクト: devhost/Corelicious
 public override Boolean TryDeleteIndex(DeleteIndexBinder binder, Object[] indexes)
 {
     throw new NotImplementedException("JsStore.TryDeleteIndex");
 }
コード例 #27
0
 /// <summary>
 /// Performs the binding of the dynamic delete index operation.
 /// </summary>
 /// <param name="binder">An instance of the <see cref="DeleteIndexBinder"/> that represents the details of the dynamic operation.</param>
 /// <param name="indexes">An array of <see cref="DynamicMetaObject"/> instances - indexes for the delete index operation.</param>
 /// <returns>The new <see cref="DynamicMetaObject"/> representing the result of the binding.</returns>
 public virtual DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
 {
     ArgumentNullException.ThrowIfNull(binder);
     return(binder.FallbackDeleteIndex(this, indexes));
 }
コード例 #28
0
 /// <summary>
 /// Performs the binding of the dynamic delete index operation.
 /// </summary>
 /// <param name="binder">An instance of the <see cref="DeleteIndexBinder"/> that represents the details of the dynamic operation.</param>
 /// <param name="indexes">An array of <see cref="DynamicMetaObject"/> instances - indexes for the delete index operation.</param>
 /// <returns>The new <see cref="DynamicMetaObject"/> representing the result of the binding.</returns>
 public virtual DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes) {
     ContractUtils.RequiresNotNull(binder, "binder");
     return binder.FallbackDeleteIndex(this, indexes);
 }
コード例 #29
0
 /// <summary>
 /// Performs the binding of the dynamic delete index operation.
 /// </summary>
 /// <param name="binder">An instance of the <see cref="DeleteIndexBinder"/> that represents the details of the dynamic operation.</param>
 /// <param name="indexes">An array of <see cref="DynamicMetaObject"/> instances - indexes for the delete index operation.</param>
 /// <returns>The new <see cref="DynamicMetaObject"/> representing the result of the binding.</returns>
 public virtual DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
 {
     ContractUtils.RequiresNotNull(binder, nameof(binder));
     return(binder.FallbackDeleteIndex(this, indexes));
 }
コード例 #30
0
 public override bool TryDeleteIndex(DeleteIndexBinder binder, object[] indexes)
 {
     return base.TryDeleteIndex(binder, indexes);
 }
コード例 #31
0
ファイル: PrototypalObject.cs プロジェクト: larsw/Archetype
 public override bool TryDeleteIndex( DeleteIndexBinder binder, object[] indexes )
 {
     if ( TryDeleteIndexMissing == null )
     {
         return true;
     }
     return TryDeleteIndexMissing( binder, indexes );
 }
コード例 #32
0
 public virtual new bool TryDeleteIndex(DeleteIndexBinder binder, Object[] indexes)
 {
   return default(bool);
 }
コード例 #33
0
 public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
 {
     throw new NotImplementedException();
 }
コード例 #34
0
            public override DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes) {
                if (IsOverridden("TryDeleteIndex")) {
                    return CallMethodNoResult("TryDeleteIndex", binder, DynamicMetaObject.GetExpressions(indexes), (e) => binder.FallbackDeleteIndex(this, indexes, e));
                }

                return base.BindDeleteIndex(binder, indexes);
            }
コード例 #35
0
 public override DynamicMetaObject BindDeleteIndex( DeleteIndexBinder binder, DynamicMetaObject[] indexes )
 {
     return binder.FallbackDeleteIndex( _baseMetaObject,
                                        indexes,
                                        AddTypeRestrictions( _metaObject.BindDeleteIndex( binder, indexes ) ) );
 }