public static string GetUnconnectedValue(NodeInputDataPin pin) { if (TryGetUnconnectedValue(pin, out var value)) { return(value); } throw NoValue(pin); }
private string GetPinIncomingValue(NodeInputDataPin pin) { if (pin.IncomingPin == null) { if (pin.UsesUnconnectedValue && pin.UnconnectedValue != null) { return(TranslatorUtil.ObjectToLiteral(pin.UnconnectedValue, (TypeSpecifier)pin.PinType.Value)); } else { return($"default({pin.PinType.Value.FullCodeName})"); } } else { return(GetOrCreatePinName(pin.IncomingPin)); } }
public static bool TryGetUnconnectedValue(NodeInputDataPin pin, out string value) { var valueType = (TypeSpecifier)pin.PinType.Value; if (pin.UsesUnconnectedValue && pin.UnconnectedValue != null) { value = ObjectToLiteral(pin.UnconnectedValue, valueType); return(true); } if (pin.UsesExplicitDefaultValue) { value = ObjectToLiteral(pin.ExplicitDefaultValue, valueType); return(true); } value = default; return(false); }
//TODO: Merge implementation with ExecutionGraphTranslator static string HackyTranslate(NodeInputDataPin pin) { if (pin.IncomingPin is { } incomingPin) { switch (incomingPin.Node) { case TypeOfNode type: return($"typeof({type.InputTypePin.InferredType?.Value?.FullCodeNameUnbound ?? "System.Object"})"); case MakeArrayNode array: if (array.UsePredefinedSize) { return($"new {array.ElementType.FullCodeName}[{HackyTranslate(array.SizePin)}]"); } else { return($"new {array.ElementType.FullCodeName}[]{{{string.Join(", ", array.InputDataPins.Select(HackyTranslate))}}}"); } } } return(GetUnconnectedValue(pin)); }
public static Exception NoValue(NodeInputDataPin pin) { return(new($"Input data pin {pin} on {pin.Node} was unconnected without an explicit default or unconnected value.")); }