public CodeField(ParameterBinding binding, ShortSymbolGenerator generator) { ParameterBinding = binding; Name = generator.GetNextGuid().ToString(); QualifiedTypeName = Primitives.GetSystemTypeFromNType(binding.SourceParameterDefinition.Type).FullName; SourceNodeGuid = binding.SourceNode.Guid.ToString(); SourceParamDisplayName = binding.SourceNode.NodeDefinition.DisplayName; TargetNodeGuid = binding.TargetNode.Guid.ToString(); TargetParamDisplayName = binding.TargetNode.NodeDefinition.DisplayName; }
public CodeGraph(Graph.Graph graph) { Guid = graph.Guid.ToString(); ClassName = graph.Guid.ToSymbolSafeGuid(); // Collect all bound RETURN fields. We don't care about bound input fields that // aren't connected as outputs (like constants). First create a map of // Bindings->CodeField for use with method generation. var fieldNameGenerator = new ShortSymbolGenerator { Predicate = "FLD_" }; var bindingsToCFields = graph.Nodes.Values .SelectMany(node => node.ParameterBindings.Where(b => b.TargetNode == node)) .Where(binding => binding.LiteralValue == null) .Select(binding => new CodeField(binding, fieldNameGenerator)) .ToDictionary(cField => cField.ParameterBinding, cField => cField); // Also save all fields to the BoundFields member variable BoundFields = bindingsToCFields.Values.ToArray(); // Methods are generated directly from nodes using the fields map. Methods = graph.Nodes.Values.Select(node => new CodeMethod(node, bindingsToCFields)).ToArray(); }