コード例 #1
0
        public IEnumerable <SyntaxNode> BuildPort(IPortModel portModel)
        {
            var connectedPort = portModel.ConnectionPortModels.FirstOrDefault();

            if (connectedPort != null && connectedPort.NodeModel.State == ModelState.Enabled)
            {
                return(BuildNode(connectedPort.NodeModel, connectedPort));
            }

            if (portModel.EmbeddedValue != null)
            {
                return(BuildNode(portModel.EmbeddedValue));
            }

            // return default datatype value (null) if not connected
            var defaultValue = RoslynBuilder.GetDefault(portModel.DataType.Resolve(Stencil));

            if (defaultValue == null)
            {
                return(Enumerable.Repeat(LiteralExpression(SyntaxKind.NullLiteralExpression), 1));
            }
            else
            {
                return(Enumerable.Repeat(Constant(defaultValue, Stencil), 1));
            }
        }
コード例 #2
0
        IEnumerable <SyntaxNode> BuildPortInner(IPortModel portModel, out INodeModel builtNode)
        {
            var connectedPort = portModel.ConnectionPortModels.FirstOrDefault();

            if (connectedPort != null && connectedPort.NodeModel.State == ModelState.Enabled)
            {
                return(BuildNode(builtNode = connectedPort.NodeModel, connectedPort));
            }

            // if it' s an embedded value, no point in recording its value, keep a null builtNode
            builtNode = null;
            if (portModel.EmbeddedValue != null)
            {
                return(BuildNode(portModel.EmbeddedValue));
            }

            // return default datatype value (null) if not connected. not recorded either
            var defaultValue = RoslynBuilder.GetDefault(portModel.DataType.Resolve(Stencil));

            return(Enumerable.Repeat(defaultValue == null
                ? LiteralExpression(SyntaxKind.NullLiteralExpression)
                : (LiteralExpressionSyntax)Constant(defaultValue, Stencil), 1));
        }