public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { switch (binder.Name) { case "func_dict": case "__dict__": return new DynamicMetaObject( Expression.Call( typeof(PythonOps).GetMethod("PythonFunctionDeleteDict") ), BindingRestrictions.GetTypeRestriction(Expression, typeof(PythonFunction)) ); case "__doc__": case "func_doc": return new DynamicMetaObject( Expression.Call( typeof(PythonOps).GetMethod("PythonFunctionDeleteDoc"), Expression.Convert(Expression, typeof(PythonFunction)) ), BindingRestrictions.GetTypeRestriction(Expression, typeof(PythonFunction)) ); case "func_defaults": return new DynamicMetaObject( Expression.Call( typeof(PythonOps).GetMethod("PythonFunctionDeleteDefaults"), Expression.Convert(Expression, typeof(PythonFunction)) ), BindingRestrictions.GetTypeRestriction(Expression, typeof(PythonFunction)) ); } // first get the default binder value DynamicMetaObject fallback = binder.FallbackDeleteMember(this); // then fallback w/ an error suggestion that does a late bound delete return binder.FallbackDeleteMember( this, new DynamicMetaObject( Expression.Condition( Ast.Call( typeof(PythonOps).GetMethod("PythonFunctionDeleteMember"), AstUtils.Convert( Expression, typeof(PythonFunction) ), Expression.Constant(binder.Name) ), Expression.Default(typeof(void)), // we deleted the member AstUtils.Convert( fallback.Expression, // report language specific error, typeof(void) ) ), BindingRestrictions.GetTypeRestriction(Expression, typeof(PythonFunction)).Merge(fallback.Restrictions) ) ); }
public override bool TryDeleteMember(DeleteMemberBinder binder) { string key = binder.Name; if (this.storage.ContainsKey(key)) { this.storage.Remove(key); } return(true); }
public override bool TryDeleteMember(DeleteMemberBinder binder) { if (_dictionary.ContainsKey(binder.Name)) { _dictionary.Remove(binder.Name); return(true); } return(base.TryDeleteMember(binder)); }
/// <summary> /// Provides the implementation for operations that delete an object member. This method is not intended for use in C# or Visual Basic. /// </summary> /// <param name="binder">Provides information about the deletion.</param> /// <returns> /// Alwasy returns true. /// </returns> public override bool TryDeleteMember(DeleteMemberBinder binder) { // <pex> if (binder is null) { throw new ArgumentNullException(nameof(binder)); } // </pex> return(_members.Remove(binder.Name)); }
/// <summary> /// Provides the implementation for operations that delete an object member. This method is not intended for use in C# or Visual Basic. /// </summary> /// <param name="binder">Provides information about the deletion.</param> /// <returns> /// Alwasy returns true. /// </returns> public override bool TryDeleteMember(DeleteMemberBinder binder) { if (binder == null) { throw new ArgumentNullException("binder"); } bool result = _members.Remove(binder.Name); return(result); }
internal static DynamicMetaObject Bind(DynamicMetaObject target, DeleteMemberBinder binder) { var obj = target.BindDeleteMember(binder); return(new DynamicMetaObject(Microsoft.Scripting.Ast.Utils.Try( obj.Expression, Expression.Constant(1L, typeof(object)) ).Catch(typeof(MissingMemberException), Expression.Constant(0L, typeof(object)) ), obj.Restrictions)); }
#pragma warning restore RECS0133 public override bool TryDeleteMember(DeleteMemberBinder binder) { if (j.JsonType != JsonType.Object) { return(false); } var name = binder.Name; return(j.Remove(name)); }
public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { return(IsOverridden(nameof(DynamicProxy <T> .TryDeleteMember)) ? CallMethodNoResult( nameof(DynamicProxy <T> .TryDeleteMember), binder, NoArgs, e => binder.FallbackDeleteMember(this, e) ) : base.BindDeleteMember(binder)); }
// Token: 0x0600062D RID: 1581 RVA: 0x0002A140 File Offset: 0x00028340 public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { Class31 <O3JSdjQuD5uSVMwF47d> .Class35 @class = new Class31 <O3JSdjQuD5uSVMwF47d> .Class35(); @class.deleteMemberBinder_0 = binder; @class.class31_0 = this; if (!this.NsEsKrivoE("TryDeleteMember")) { return(base.BindDeleteMember(@class.deleteMemberBinder_0)); } return(this.method_3("TryDeleteMember", @class.deleteMemberBinder_0, Class31 <O3JSdjQuD5uSVMwF47d> .smethod_0(), new Class31 <O3JSdjQuD5uSVMwF47d> .Delegate0(@class.method_0))); }
public override bool TryDeleteMember(DeleteMemberBinder binder) { bool isFound = RemoveItem(binder.Name); if (!isFound) { OnMemberBinderNotFound(binder.Name); } // always return true return(true); }
public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { DynamicMetaObject messageSendMO; var kernel = ValueClass.ObjectSpace; var memberName = kernel.symbolFor(binder.Name); if (createMetaObjectToSendMessage("removeKey:", DynamicBindingGuru.argArrayFor(Expression.Constant(memberName).asDynamicMetaObject(BindingRestrictions.Empty, memberName)), out messageSendMO)) { return(messageSendMO); } return(binder.FallbackDeleteMember(this, messageSendMO)); }
public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { return(new DynamicMetaObject( Expression.Call( Utils.Convert(Expression, typeof(PythonModule)), typeof(PythonModule).GetMethod("__delattr__"), PythonContext.GetCodeContext(binder), Expression.Constant(binder.Name) ), BindingRestrictions.GetTypeRestriction(Expression, Value.GetType()) )); }
public override bool TryDeleteMember(DeleteMemberBinder binder) { var name = binder.Name; if (!_values.ContainsKey(name)) { return(false); } _values.Remove(name); return(true); }
/// <summary> /// Provides the implementation for operations that delete an object member. /// </summary> /// <param name="Binder">Provides information about the deletion.</param> public override bool TryDeleteMember(DeleteMemberBinder Binder) { // Check if the dictionary contains the key. if (_Dictionary.ContainsKey(Binder.Name)) { // Remove the key from the dictionary. _Dictionary.Remove(Binder.Name); // Return true. return(true); } // Invoke the base method. return(base.TryDeleteMember(Binder)); }
public override bool TryDeleteMember(DeleteMemberBinder binder) { if (base.TryDeleteMember(binder)) { return(true); } if (TryDeleteMemberMissing == null) { return(true); } return(TryDeleteMemberMissing(binder)); }
DynamicMetaObject DynamicMetaObject.BindDeleteMember(DeleteMemberBinder binder) { Class147 <T> class2 = new Class147 <T> { deleteMemberBinder_0 = binder, class143_0 = (Class143 <T>) this }; if (!this.method_0("TryDeleteMember")) { return(base.BindDeleteMember(class2.deleteMemberBinder_0)); } return(this.method_4("TryDeleteMember", class2.deleteMemberBinder_0, Class143 <T> .expression_0, new Delegate2 <T>(class2.method_0))); }
private DispatchResult DispatchDeleteMember(DeleteMemberBinder binder, Object @this) { var old_value = Value; Value = @this; try { try { try { DeleteMember(binder); return(Succeed()); } catch (FallbackException) { var dynamic_object = Value as IDynamicObject; if (dynamic_object != null) { dynamic_object.DeleteMember(binder); 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); throw new BindException(binder, bind_args, ex); } else { throw; } } } finally { Value = old_value; } }
public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { if (IsOverridden(DynamicObject_TryDeleteMember)) { return(CallMethodNoResult( DynamicObject_TryDeleteMember, binder, s_noArgs, (GreedyMetaDynamic @this, DeleteMemberBinder b, DynamicMetaObject e) => b.FallbackDeleteMember(@this, e) )); } return(base.BindDeleteMember(binder)); }
public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { return(new DynamicMetaObject( Expression.Condition( Expression.Invoke( Expression.Constant(new Func <object, SymbolId, bool>(AttributesAdapter.TryDeleteMember)), Expression, Expression.Constant(SymbolTable.StringToId(binder.Name)) ), Expression.Default(binder.ReturnType), binder.FallbackDeleteMember(this).Expression ), GetRestrictions() )); }
public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { return(new DynamicMetaObject( Expression.Condition( Expression.Invoke( Expression.Constant(_deleteMember), Expression, Expression.Constant(binder.Name) ), Expression.Default(binder.ReturnType), binder.FallbackDeleteMember(this).Expression ), GetRestrictions() )); }
public override bool TryDeleteMember(DeleteMemberBinder binder) { var key = binder.Name; if (!_dictionary.ContainsKey(key)) { return(false); } _dictionary.Remove(key); return(true); //throw new KeyNotFoundException(string.Format("Key \"{0}\" was not found in the given dictionary", key)); }
private DynamicMetaObject /*!*/ MakeDeleteMember(DeleteMemberBinder /*!*/ member) { PerfTrack.NoteEvent(PerfTrack.Categories.Binding, "OldClass DeleteMember"); PerfTrack.NoteEvent(PerfTrack.Categories.BindingTarget, "OldClass DeleteMember"); DynamicMetaObject self = Restrict(typeof(OldClass)); return(new DynamicMetaObject( Ast.Call( typeof(PythonOps).GetMethod("OldClassDeleteMember"), AstUtils.Constant(PythonContext.GetPythonContext(member).SharedContext), self.Expression, AstUtils.Constant(member.Name) ), self.Restrictions )); }
// TODO: support for IgnoreCase in underlying ScriptScope APIs public override MetaObject BindDeleteMember(DeleteMemberBinder action) { var fallback = action.FallbackDeleteMember(this); return(new MetaObject( Expression.Condition( Expression.Call( AstUtils.Convert(Expression, typeof(ScriptScope)), typeof(ScriptScope).GetMethod("RemoveVariable"), Expression.Constant(action.Name) ), Expression.Empty(), Expression.Convert(fallback.Expression, typeof(void)) ), Restrictions.Merge(Restrictions.GetTypeRestriction(Expression, typeof(ScriptScope))).Merge(fallback.Restrictions) )); }
// TODO: support for IgnoreCase in underlying ScriptScope APIs public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder action) { var fallback = action.FallbackDeleteMember(this); return(new DynamicMetaObject( Expression.IfThenElse( Expression.Call( Expression.Convert(Expression, typeof(ScriptScope)), typeof(ScriptScope).GetMethod("RemoveVariable"), Expression.Constant(action.Name) ), Expression.Empty(), fallback.Expression ), Restrictions.Merge(BindingRestrictions.GetTypeRestriction(Expression, typeof(ScriptScope))).Merge(fallback.Restrictions) )); }
public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { return(new DynamicMetaObject( Expression.Condition( Convert( Expression.Invoke( Expression.Constant(new Func <T, string, bool>(TryDeleteMember)), Convert(Expression, typeof(T)), Expression.Constant(binder.Name) ), typeof(bool) ), Expression.Empty(), binder.FallbackDeleteMember(this).Expression, typeof(void) ), GetRestrictions() )); }
private DynamicMetaObject /*!*/ MakeDeleteMember(DeleteMemberBinder /*!*/ member) { DynamicMetaObject self = Restrict(Value.GetType()); return(BindingHelpers.AddDynamicTestAndDefer( member, new DynamicMetaObject( Ast.Call( typeof(PythonOps).GetMethod(nameof(PythonOps.PythonTypeDeleteCustomMember)), AstUtils.Constant(PythonContext.GetPythonContext(member).SharedContext), self.Expression, AstUtils.Constant(member.Name) ), self.Restrictions ), new DynamicMetaObject[] { this }, TestUserType() )); }
public sealed override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { var fallback = ((Func <Expression>)(() => { try { return(base.BindDeleteMember(binder).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 = DispatchDeleteMember(binder, `expression`); Expression.Assign(dispatchResult, Expression.Call( Expression.Constant(this), typeof(SimpleMetaObject).GetMethod("DispatchDeleteMember", BF.PrivateInstance), Expression.Constant(binder), Expression)), // 2. if (!dispatchResult.Success) `fallback`; Expression.IfThen( Expression.Not(Expression.Property(dispatchResult, "Success")), fallback)); return(new DynamicMetaObject(shim, BindingRestrictions.GetTypeRestriction(Expression, LimitType))); }
public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { ContractUtils.RequiresNotNull(binder, "binder"); int index = Value.Class.GetValueIndex(binder.Name, binder.IgnoreCase, Value); Expression tryDelete = Expression.Call( typeof(RuntimeOps).GetMethod("ExpandoTryDeleteValue"), GetLimitedSelf(), Expression.Constant(Value.Class, typeof(object)), Expression.Constant(index), Expression.Constant(binder.Name), Expression.Constant(binder.IgnoreCase) ); DynamicMetaObject fallback = binder.FallbackDeleteMember(this); DynamicMetaObject target = new DynamicMetaObject( Expression.IfThen(Expression.Not(tryDelete), fallback.Expression), fallback.Restrictions ); return(AddDynamicTestAndDefer(binder, Value.Class, null, target)); }
public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { switch (binder.Name) { case "__dict__": return new DynamicMetaObject( Expression.Throw( Expression.Call( typeof(PythonOps).GetMethod("TypeError"), Expression.Constant("can't set attributes of built-in/extension type 'module'"), Expression.NewArrayInit(typeof(object)) ) ), BindingRestrictions.GetTypeRestriction(Expression, Value.GetType()) ); case "__class__": return new DynamicMetaObject( Expression.Throw( Expression.Call( typeof(PythonOps).GetMethod("TypeError"), Expression.Constant("can't delete __class__ attribute"), Expression.NewArrayInit(typeof(object)) ) ), BindingRestrictions.GetTypeRestriction(Expression, Value.GetType()) ); } return new DynamicMetaObject( Expression.Condition( Expression.Call( typeof(PythonOps).GetMethod("ModuleDeleteMember"), Utils.Convert(Expression, typeof(PythonModule)), Expression.Constant(binder.Name) ), Expression.Default(typeof(object)), binder.FallbackDeleteMember(this).Expression ), BindingRestrictions.GetTypeRestriction(Expression, Value.GetType()) ); }
/// <summary> /// Helper for falling back - if we have a base object fallback to it first (which can /// then fallback to the calling site), otherwise fallback to the calling site. /// </summary> private DynamicMetaObject/*!*/ FallbackDeleteError(DeleteMemberBinder/*!*/ action, DynamicMetaObject/*!*/[] args) { if (_baseMetaObject != null) { return _baseMetaObject.BindDeleteMember(action); } else if (action is PythonDeleteMemberBinder) { return new DynamicMetaObject( MakeTypeError(action.Name, ((IPythonObject)args[0].Value).PythonType), BindingRestrictions.Empty ); } return action.FallbackDeleteMember(this); }
public DeleteBindingInfo(DeleteMemberBinder/*!*/ action, DynamicMetaObject/*!*/[]/*!*/ args, ConditionalBuilder/*!*/ body, ValidationInfo/*!*/ validation) : base(args, body, validation) { Action = action; }
public override DynamicMetaObject/*!*/ BindDeleteMember(DeleteMemberBinder/*!*/ action) { return MakeDeleteMemberRule( new DeleteBindingInfo( action, new DynamicMetaObject[] { this }, new ConditionalBuilder(action), BindingHelpers.GetValidationInfo(Expression, PythonType) ) ); }
private DynamicMetaObject/*!*/ MakeDeleteMember(DeleteMemberBinder/*!*/ member) { DynamicMetaObject self = Restrict(typeof(PythonType)); return BindingHelpers.AddDynamicTestAndDefer( member, new DynamicMetaObject( Ast.Call( typeof(PythonOps).GetMethod("PythonTypeDeleteCustomMember"), AstUtils.Constant(BinderState.GetBinderState(member).Context), self.Expression, AstUtils.Constant(SymbolTable.StringToId(member.Name)) ), self.Restrictions ), new DynamicMetaObject[] { this }, TestUserType() ); }
/// <summary> /// Performs the binding of the dynamic delete member operation. /// </summary> /// <param name="binder">An instance of the <see cref="DeleteMemberBinder"/> that represents the details of the dynamic operation.</param> /// <returns>The new <see cref="DynamicMetaObject"/> representing the result of the binding.</returns> public virtual DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { ContractUtils.RequiresNotNull(binder, "binder"); return binder.FallbackDeleteMember(this); }
public override DynamicMetaObject/*!*/ BindDeleteMember(DeleteMemberBinder/*!*/ member) { return MakeMemberAccess(member, member.Name, MemberAccess.Delete, this); }
public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { return new DynamicMetaObject( Expression.Call( Utils.Convert(Expression, typeof(PythonModule)), typeof(PythonModule).GetMethod("__delattr__"), PythonContext.GetCodeContext(binder), Expression.Constant(binder.Name) ), BindingRestrictions.GetTypeRestriction(Expression, Value.GetType()) ); }
public override DynamicMetaObject/*!*/ BindDeleteMember(DeleteMemberBinder/*!*/ member) { return MakeDeleteMember(member); }
private DynamicMetaObject/*!*/ MakeDeleteMember(DeleteMemberBinder/*!*/ member) { PerfTrack.NoteEvent(PerfTrack.Categories.Binding, "OldClass DeleteMember"); PerfTrack.NoteEvent(PerfTrack.Categories.BindingTarget, "OldClass DeleteMember"); DynamicMetaObject self = Restrict(typeof(OldClass)); return new DynamicMetaObject( Ast.Call( typeof(PythonOps).GetMethod("OldClassDeleteMember"), AstUtils.Constant(PythonContext.GetPythonContext(member).SharedContext), self.Expression, AstUtils.Constant(SymbolTable.StringToId(member.Name)) ), self.Restrictions ); }
public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { if (IsOverridden("TryDeleteMember")) { return CallMethodNoResult("TryDeleteMember", binder, NoArgs, (e) => binder.FallbackDeleteMember(this, e)); } return base.BindDeleteMember(binder); }
public virtual bool TryDeleteMember(T instance, DeleteMemberBinder binder) { return(false); }
public override bool TryDeleteMember(DeleteMemberBinder binder) { return(TryRemoveColumn(binder.Name)); }
public override DynamicMetaObject/*!*/ BindDeleteMember(DeleteMemberBinder/*!*/ member) { PerfTrack.NoteEvent(PerfTrack.Categories.Binding, "Type DeleteMember " + Value.UnderlyingSystemType.FullName); PerfTrack.NoteEvent(PerfTrack.Categories.BindingTarget, "Type DeleteMember"); if (Value.IsSystemType) { BinderState state = BinderState.GetBinderState(member); MemberTracker tt = MemberTracker.FromMemberInfo(Value.UnderlyingSystemType); // have the default binder perform it's operation against a TypeTracker and then // replace the test w/ our own. return new DynamicMetaObject( state.Binder.DeleteMember( member.Name, new DynamicMetaObject( AstUtils.Constant(tt), BindingRestrictions.Empty, tt ) ).Expression, BindingRestrictions.GetInstanceRestriction(Expression, Value).Merge(Restrictions) ); } return MakeDeleteMember(member); }
public override DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder) { IScopeVariable variable = Value.GetVariable(binder.Name, binder.IgnoreCase); return new DynamicMetaObject( Expression.Condition( Expression.Call( Variable(variable), variable.GetType().GetMethod("DeleteValue") ), Expression.Default(binder.ReturnType), binder.FallbackDeleteMember(this).Expression ), BindingRestrictions.GetInstanceRestriction(Expression, Value) ); }
/// <summary> /// Provides the implementation of deleting a member. 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> /// <returns>true if the operation is complete, false if the call site should determine behavior.</returns> public virtual bool TryDeleteMember(DeleteMemberBinder binder) { return false; }
private static string FormatBinder(CallSiteBinder binder) { ConvertBinder binder2 = binder as ConvertBinder; if (binder2 != null) { return("Convert " + binder2.Type); } GetMemberBinder binder3 = binder as GetMemberBinder; if (binder3 != null) { return("GetMember " + binder3.Name); } SetMemberBinder binder4 = binder as SetMemberBinder; if (binder4 != null) { return("SetMember " + binder4.Name); } DeleteMemberBinder binder5 = binder as DeleteMemberBinder; if (binder5 != null) { return("DeleteMember " + binder5.Name); } if (binder is GetIndexBinder) { return("GetIndex"); } if (binder is SetIndexBinder) { return("SetIndex"); } if (binder is DeleteIndexBinder) { return("DeleteIndex"); } InvokeMemberBinder binder6 = binder as InvokeMemberBinder; if (binder6 != null) { return("Call " + binder6.Name); } if (binder is InvokeBinder) { return("Invoke"); } if (binder is CreateInstanceBinder) { return("Create"); } UnaryOperationBinder binder7 = binder as UnaryOperationBinder; if (binder7 != null) { return(binder7.Operation.ToString()); } BinaryOperationBinder binder8 = binder as BinaryOperationBinder; if (binder8 != null) { return(binder8.Operation.ToString()); } return("CallSiteBinder"); }
private DynamicMetaObject/*!*/ MakeDeleteMember(DeleteMemberBinder/*!*/ member) { DynamicMetaObject self = Restrict(typeof(OldClass)); return new DynamicMetaObject( Ast.Call( typeof(PythonOps).GetMethod("OldClassDeleteMember"), Ast.Constant(BinderState.GetBinderState(member).Context), self.Expression, AstUtils.Constant(SymbolTable.StringToId(member.Name)) ), self.Restrictions ); }