/// <summary>Outputs a portable lambda.</summary> private IWorkshopTree OutputPortable(ActionSet actionSet, IWorkshopTree[] parameterValues) { var determiner = actionSet.DeltinScript.GetComponent <LambdaGroup>(); var builder = new FunctionBuildController(actionSet, new CallHandler(parameterValues), determiner); return(builder.Call()); }
public SubroutineInfo(Subroutine routine, FunctionBuildController functionBuilder, IndexReference[] parameterStores, IndexReference objectStore) { Subroutine = routine; FunctionBuilder = functionBuilder; ParameterStores = parameterStores; ObjectStore = objectStore; }
// IFunctionLookupTable public void Build(FunctionBuildController builder) { // Create the switch that chooses the lambda. SwitchBuilder lambdaSwitch = new SwitchBuilder(builder.ActionSet); foreach (IFunctionHandler option in _functionHandlers) { // The action set for the overload. ActionSet optionSet = builder.ActionSet.New(builder.ActionSet.IndexAssigner.CreateContained()); // Go to next case lambdaSwitch.NextCase(new V_Number(_identifiers[option.UniqueIdentifier()])); // Add the object variables of the selected method. var callerObject = ((Element)builder.ActionSet.CurrentObject)[1]; // Add the class objects. option.ContainingType?.AddObjectVariablesToAssigner(callerObject, optionSet.IndexAssigner); // then parse the block. builder.Subcall(optionSet.SetThis(callerObject).New(builder.ActionSet.CurrentObject), option); } // Finish the switch. lambdaSwitch.Finish(((Element)builder.ActionSet.CurrentObject)[0]); }
// Parses the method. public override IWorkshopTree Parse(ActionSet actionSet, MethodCall methodCall) { actionSet = actionSet.New(actionSet.IndexAssigner.CreateContained()); var controller = new FunctionBuildController(actionSet, methodCall, new DefaultGroupDeterminer(GetOverrideFunctionHandlers())); return(controller.Call()); }
public IWorkshopTree Invoke(ActionSet actionSet, params IWorkshopTree[] parameterValues) { var buildController = new FunctionBuildController(actionSet, new CallHandler(parameterValues), new DefaultGroupDeterminer(new IFunctionHandler[] { _functionHandler })); return(buildController.Build()); }
public IWorkshopTree Call(ActionSet actionSet, ICallHandler call) { var builder = new FunctionBuildController(actionSet, call, this); return(builder.Call()); }
// IFunctionLookupTable public void Build(FunctionBuildController builder) => _function.ParseInner(builder.ActionSet);
public override void Parse(ActionSet actionSet, IWorkshopTree[] parameterValues, object[] additionalParameterData) { var builder = new FunctionBuildController(actionSet.PackThis(), new CallHandler(parameterValues), new ConstructorDeterminer(this)); builder.Call(); }