Пример #1
0
        public override void Process()
        {
            FLBuffer  input            = Root.ActiveBuffer;
            FLProgram externalFunction = ExternalFunctionBlueprint.Initialize(InstructionSet);

            input.SetRoot(externalFunction);

            externalFunction.ActiveChannels = Root.ActiveChannels;
            externalFunction.SetCLVariables(Root.Instance, input, false);
            //Not making it internal to the subscript because that would dispose the buffer later in the method
            FLProgram.Debugger?.SubProgramStarted(Root, this, externalFunction);

            externalFunction.EntryPoint.Process();

            FLProgram.Debugger?.SubProgramEnded(Root, externalFunction);

            FLBuffer buf = externalFunction.ActiveBuffer;

            buf.SetRoot(Root);
            input.SetRoot(Root);
            externalFunction.RemoveFromSystem(buf);
            externalFunction.RemoveFromSystem(input);

            Root.ActiveChannels = externalFunction.ActiveChannels;
            Root.ActiveBuffer   = buf;


            externalFunction.FreeResources();
        }
Пример #2
0
 public override void SetRoot(FLProgram root)
 {
     base.SetRoot(root);
     for (int i = 0; i < Arguments.Count; i++)
     {
         Arguments[i].SetRoot(root);
     }
 }
Пример #3
0
        public override void SetRoot(FLProgram root)
        {
            base.SetRoot(root);

            //HERE
            if (Type == FLInstructionArgumentType.Buffer || Type == FLInstructionArgumentType.Function)
            {
                ((FLParsedObject)Value).SetRoot(root);
            }
        }
Пример #4
0
 public virtual void SetRoot(FLProgram root)
 {
     Root = root;
 }