Esempio n. 1
0
            public NodeStateTable <T> GetLatestStateTableForNode <T>(IIncrementalGeneratorNode <T> source)
            {
                // if we've already evaluated a node during this build, we can just return the existing result
                if (_tableBuilder.ContainsKey(source))
                {
                    return((NodeStateTable <T>)_tableBuilder[source]);
                }

                // get the previous table, if there was one for this node
                NodeStateTable <T> previousTable = _previousTable.GetStateTableOrEmpty <T>(source);

                // request the node update its state based on the current driver table and store the new result
                var newTable = source.UpdateStateTable(this, previousTable, _cancellationToken);

                _tableBuilder[source] = newTable;
                return(newTable);
            }
Esempio n. 2
0
            public Builder(SyntaxReceiverInputNode owner, DriverStateTable driverStateTable, bool trackIncrementalSteps)
            {
                _owner          = owner;
                _nodeStateTable = driverStateTable.GetStateTableOrEmpty <ISyntaxContextReceiver?>(_owner).ToBuilder(stepName: null, trackIncrementalSteps);
                try
                {
                    _receiver = owner._receiverCreator();
                }
                catch (Exception e)
                {
                    throw new UserFunctionException(e);
                }

                if (_receiver is object)
                {
                    _walker = new GeneratorSyntaxWalker(_receiver);
                }
            }
Esempio n. 3
0
 public Builder(SyntaxInputNode <T> owner, DriverStateTable table)
 {
     _owner          = owner;
     _filterTable    = table.GetStateTableOrEmpty <SyntaxNode>(_owner._filterKey).ToBuilder();
     _transformTable = table.GetStateTableOrEmpty <T>(_owner).ToBuilder();
 }
Esempio n. 4
0
 public Builder(SyntaxInputNode <T> owner, DriverStateTable table, bool trackIncrementalSteps)
 {
     _owner          = owner;
     _filterTable    = table.GetStateTableOrEmpty <SyntaxNode>(_owner._filterKey).ToBuilder(stepName: null, trackIncrementalSteps);
     _transformTable = table.GetStateTableOrEmpty <T>(_owner).ToBuilder(_owner.Name, trackIncrementalSteps);
 }