Example #1
0
        public static string GetUnconnectedValue(NodeInputDataPin pin)
        {
            if (TryGetUnconnectedValue(pin, out var value))
            {
                return(value);
            }

            throw NoValue(pin);
        }
Example #2
0
 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));
     }
 }
Example #3
0
        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);
        }
Example #4
0
            //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));
            }
Example #5
0
 public static Exception NoValue(NodeInputDataPin pin)
 {
     return(new($"Input data pin {pin} on {pin.Node} was unconnected without an explicit default or unconnected value."));
 }