예제 #1
0
 private void extendCallSink(ExtensionSinkPoint point, FlowOutputSet inSet)
 {
     inSet.StartTransaction();
     inSet.Extend(point.OwningExtension.Owner.OutSet);
     //Services.FlowResolver.CallDispatchMerge(_inSet, OwningExtension.Branches);
     inSet.CommitTransaction();
 }
예제 #2
0
        /// <summary>
        /// Extends the input.
        /// </summary>
        protected virtual void extendInput()
        {
            var inputs = getInputsForExtension();

            if (inputs.Length > 0)
            {
                _inSet.StartTransaction();
                _inSet.Extend(inputs.ToArray());
                _inSet.CommitTransaction();
            }
        }
예제 #3
0
        private void extendCallExtension(ExtensionPoint point, FlowOutputSet inSet)
        {
            inSet.StartTransaction();

            if (point.Type == ExtensionType.ParallelCall)
            {
                inSet.ExtendAsCall(point.Caller.OutSet, point.Graph, point.Flow.CalledObject, point.Flow.Arguments);
            }
            else
            {
                inSet.Extend(point.Caller.OutSet);
            }

            inSet.CommitTransaction();
        }
예제 #4
0
        private void standardExtend(IEnumerable <ProgramPointBase> inputs, FlowOutputSet inSet)
        {
            var inputSets = new List <FlowInputSet>();

            foreach (var input in inputs)
            {
                var outSet       = GetOutSet(input);
                var assumeParent = input as AssumePoint;

                if (outSet == null || (assumeParent != null && !assumeParent.Assumed))
                {
                    continue;
                }

                inputSets.Add(outSet);
            }

            inSet.StartTransaction();
            inSet.Extend(inputSets.ToArray());
            inSet.CommitTransaction();
        }
예제 #5
0
 /// <summary>
 /// Extends the output.
 /// </summary>
 protected virtual void extendOutput()
 {
     _outSet.StartTransaction();
     _outSet.Extend(_inSet);
 }