private IWorkshopTree OutputContant(VarIndexAssigner lambdaAssigner, ActionSet actionSet, IWorkshopTree[] parameterValues) { ReturnHandler returnHandler = new ReturnHandler( actionSet, ReturnType?.GetGettableAssigner(new AssigningAttributes("lambda", actionSet.IsGlobal, false)) .GetValue(new GettableAssignerValueInfo(actionSet) { SetInitialValue = SetInitialValue.DoNotSet, Inline = !MultiplePaths }), MultiplePaths); actionSet = AssignContainedParameters(lambdaAssigner, actionSet, parameterValues).New(returnHandler); if (Expression != null) { returnHandler.ReturnValue(Expression.Parse(actionSet)); } else { Statement.Translate(actionSet); } returnHandler.ApplyReturnSkips(); return(returnHandler.GetReturnedValue()); }
public void AddToAssigner(VarIndexAssigner assigner) { foreach (var parameter in _parameters) { assigner.Add(parameter.Variable, parameter.Gettable); } }
public override void AddObjectVariablesToAssigner(IWorkshopTree reference, VarIndexAssigner assigner) { assigner.Add(Node_A, DijkstraBase.Node1((Element)reference)); assigner.Add(Node_B, DijkstraBase.Node2((Element)reference)); assigner.Add(Attribute_AB, DijkstraBase.Node1Attribute((Element)reference)); assigner.Add(Attribute_BA, DijkstraBase.Node2Attribute((Element)reference)); }
public override void AddObjectVariablesToAssigner(IWorkshopTree reference, VarIndexAssigner assigner) { foreach (var p in Properties) { assigner.Add(p.Var, p.Value.Value); } }
private void AddHook(VarIndexAssigner assigner, HookVar hook) { if (hook.WasSet) { assigner.Add(hook, (IWorkshopTree)hook.HookValue); } }
public void AddParametersToAssigner(VarIndexAssigner assigner) { foreach (var parameter in _parameters) { foreach (var linked in parameter.LinkedVariables) { assigner.Add(linked, parameter.Gettable); } } }
/// <summary>Assigns the parameter values to the action set for the constant lambdas.</summary> private ActionSet AssignContainedParameters(VarIndexAssigner lambaAssigner, ActionSet actionSet, IWorkshopTree[] parameterValues) { actionSet = actionSet.ContainVariableAssigner(); actionSet.IndexAssigner.CopyAll(lambaAssigner); for (int i = 0; i < parameterValues.Length; i++) { actionSet.IndexAssigner.Add(Parameters[i], parameterValues[i]); } return(actionSet); }
/// <summary>Assigns the parameter values to the action set for the constant lambdas.</summary> private ActionSet AssignContainedParameters(VarIndexAssigner lambaAssigner, ActionSet actionSet, IWorkshopTree[] parameterValues) { var newSet = actionSet.New(actionSet.IndexAssigner.CreateContained()); actionSet.IndexAssigner.CopyAll(lambaAssigner); for (int i = 0; i < parameterValues.Length; i++) { newSet.IndexAssigner.Add(Parameters[i], parameterValues[i]); } return(newSet); }
public override void AddObjectVariablesToAssigner(IWorkshopTree reference, VarIndexAssigner assigner) { base.AddObjectVariablesToAssigner(reference, assigner); // Add hooks to assigner. AddHook(assigner, OnPathStartHook); AddHook(assigner, OnNodeReachedHook); AddHook(assigner, OnPathCompleted); AddHook(assigner, IsNodeReachedDeterminer); assigner.Add(NodesVar, Nodes.Get()[(Element)reference]); assigner.Add(SegmentsVar, Segments.Get()[(Element)reference]); }
public IWorkshopTree Invoke(VarIndexAssigner lambaAssigner, ActionSet actionSet, params IWorkshopTree[] parameterValues) { switch (LambdaType.LambdaKind) { // Constant macro case LambdaKind.Constant: return(OutputContant(lambaAssigner, actionSet, parameterValues)); // Portable case LambdaKind.Portable: return(OutputPortable(actionSet, parameterValues)); // Unknown case LambdaKind.Anonymous: default: throw new NotImplementedException(); } }
/// <summary>Outputs a constant block.</summary> private IWorkshopTree OutputContantBlock(VarIndexAssigner lambdaAssigner, ActionSet actionSet, IWorkshopTree[] parameterValues) { ReturnHandler returnHandler = new ReturnHandler(actionSet, "lambda", MultiplePaths); actionSet = AssignContainedParameters(lambdaAssigner, actionSet, parameterValues).New(returnHandler); if (Expression != null) { returnHandler.ReturnValue(Expression.Parse(actionSet)); } else { Statement.Translate(actionSet); } returnHandler.ApplyReturnSkips(); return(returnHandler.GetReturnedValue()); }
/// <summary>Outputs a constant macro lambda.</summary> private IWorkshopTree OutputConstantMacro(VarIndexAssigner lambaAssigner, ActionSet actionSet, IWorkshopTree[] parameterValues) => Expression.Parse(AssignContainedParameters(lambaAssigner, actionSet, parameterValues));
public override void AddObjectVariablesToAssigner(ToWorkshop toWorkshop, IWorkshopTree reference, VarIndexAssigner assigner) { foreach (var p in Properties) { if (p.Value.Value != null) { assigner.Add(p.Var, p.Value.Value); } else { assigner.Add(p.Var, Element.Null()); } } }
public void AddParametersToAssigner(VarIndexAssigner assigner) { }