public IInterpetedOperation <IInterpetedAnyType> LastCallOperation(ILastCallOperation co) { var methodType = co.Left.Returns().Cast <IMethodType>(); var method = GetMethod(new Type[] { TypeMap.MapType(methodType.InputType), TypeMap.MapType(methodType.OutputType) }, nameof(LastCallOperation)); return(method.Invoke(this, new object[] { co }).Cast <IInterpetedOperation <IInterpetedAnyType> >()); }
public IInterpetedOperation LastCallOperation(ILastCallOperation co) { if (backing.TryGetValue(co, out var res)) { return(res); } else { var op = new InterpetedLastCallOperation(); backing.Add(co, op); op.Init( co.Left.Convert(this), co.Right.Convert(this)); return(op); } }
public IReadOnlyList <IMemberDefinition> LastCallOperation(ILastCallOperation co) { return(Walk(co.Operands)); }
private IInterpetedOperation <IInterpetedAnyType> LastCallOperation <TIn, TOut>(ILastCallOperation co) where TIn : class, IInterpetedAnyType where TOut : class, IInterpetedAnyType { if (backing.TryGetValue(co, out var res)) { return(res); } else { var op = new InterpetedLastCallOperation <TIn, TOut>(); backing.Add(co, op); op.Init( co.Left.Convert(this).Cast <IInterpetedOperation <IInterpetedCallable <TIn, TOut> > >(), co.Right.Convert(this).Cast <IInterpetedOperation <TIn> >()); return(op); } }
public Nothing LastCallOperation(ILastCallOperation co) { Push(co).Walk(co.Operands); return(new Nothing()); }