Example #1
0
 /// <summary>
 /// Called to perform type propagation (semantic analysis)
 /// </summary>
 /// <param name="node">node to type prop</param>
 /// <param name="semanticAnalysisAccess">Helper interface to access aspects of type propagation</param>
 /// <param name="cancellationToken">Token indicating whether compile has been cancelled.</param>
 public override Task DoTypePropagationAsync(Node node, ITypePropagationAccessor semanticAnalysisAccess, CompileCancellationToken cancellationToken)
 {
     // this simple example requires all inputs to be wired and forces all types to double
     foreach (Terminal terminal in node.Terminals)
     {
         if (terminal.Direction == Direction.Input)
         {
             terminal.TestRequiredTerminalConnected();
         }
         terminal.DataType = NITypes.Double;
     }
     return(AsyncHelpers.CompletedTask);
 }
 /// <summary>
 /// Called to perform type propagation (semantic analysis)
 /// </summary>
 /// <param name="node">node to type prop</param>
 /// <param name="typePropagationAccessor">Helper interface to access aspects of type propagation</param>
 /// <param name="cancellationToken">Token indicating whether compile has been cancelled.</param>
 public override Task DoTypePropagationAsync(Node node, ITypePropagationAccessor typePropagationAccessor, CompileCancellationToken cancellationToken)
 {
     GetTerminalByName("names").DataType      = PFTypes.StringArray1D;
     GetTerminalByName("extra name").DataType = PFTypes.String;
     GetTerminalByName("length").DataType     = PFTypes.Int32;
     // this simple example requires all inputs to be wired
     foreach (Terminal terminal in node.Terminals)
     {
         if (terminal.Direction == Direction.Input)
         {
             terminal.TestRequiredTerminalConnected();
         }
     }
     return(AsyncHelpers.CompletedTask);
 }