コード例 #1
0
        public void FinalizeTerminateLifetimeInputs(TerminateLifetimeNode terminateLifetimeNode, LifetimeVariableAssociation lifetimeVariableAssociation)
        {
            if (CommonLifetime != null && _state == State.VariablesInLifetimeRemaining)
            {
                // assume that none of the lifetimes of our inputs are going to change after this point
                foreach (var inputVariable in _inputVariables)
                {
                    lifetimeVariableAssociation.MarkVariableConsumed(inputVariable);
                }
                List <VariableReference> unconsumedVariables = _parentDiagram
                                                               .GetVariableSet()
                                                               .GetUniqueVariableReferences()
                                                               .Where(variable => variable.Lifetime == CommonLifetime && !lifetimeVariableAssociation.IsVariableConsumed(variable))
                                                               .ToList();
                if (unconsumedVariables.Count == 0)
                {
                    _state = State.AllVariablesInLifetimeTerminated;
                }

                int requiredInputCount = _inputVariables.Count + unconsumedVariables.Count;
                terminateLifetimeNode.RequiredInputCount = requiredInputCount;
                terminateLifetimeNode.UpdateInputTerminals(requiredInputCount);
            }
            UpdateTerminateLifetimeErrorState(terminateLifetimeNode);
        }