public IInterpetedOperation PathOperation(IPathOperation co) { if (backing.TryGetValue(co, out var res)) { return(res); } else { var op = new InterpetedPathOperation(); backing.Add(co, op); op.Init( co.Left.Convert(this), co.Right.Convert(this).CastTo <IInterpetedMemberReferance>()); return(op); } }
private IInterpetedOperation <IInterpetedAnyType> PathOperation <T>(IPathOperation co) where T : class, IInterpetedAnyType { if (backing.TryGetValue(co, out var res)) { return(res); } else { var op = new InterpetedPathOperation <T>(); backing.Add(co, op); op.Init( co.Left.Convert(this).Cast <IInterpetedOperation <IInterpetedScope> >(), co.Right.Convert(this).Cast <IInterpetedMemberReferance <T> >()); return(op); } }
public IReadOnlyList <IMemberDefinition> PathOperation(IPathOperation path) { return(path.Operands.First().Convert(this)); }
public IInterpetedOperation <IInterpetedAnyType> PathOperation(IPathOperation co) { var method = GetMethod(new Type[] { TypeMap.MapType(co.Returns()) }, nameof(PathOperation)); return(method.Invoke(this, new object[] { co }).Cast <IInterpetedOperation <IInterpetedAnyType> >()); }
public Nothing PathOperation(IPathOperation co) { Push(co).Walk(co.Operands); return(new Nothing()); }