ShaderTools.Hlsl.Binding.Binder.BindVariableDeclarator C# (CSharp) Method

BindVariableDeclarator() private method

private BindVariableDeclarator ( VariableDeclaratorSyntax syntax, TypeSymbol variableType, Func createSymbol ) : BoundVariableDeclaration
syntax VariableDeclaratorSyntax
variableType ShaderTools.Hlsl.Symbols.TypeSymbol
createSymbol Func
return ShaderTools.Hlsl.Binding.BoundNodes.BoundVariableDeclaration
        private BoundVariableDeclaration BindVariableDeclarator(VariableDeclaratorSyntax syntax, TypeSymbol variableType, Func<VariableDeclaratorSyntax, TypeSymbol, VariableSymbol> createSymbol)
        {
            variableType = BindArrayRankSpecifiers(syntax.ArrayRankSpecifiers, variableType);

            var symbol = createSymbol(syntax, variableType);
            AddSymbol(symbol, syntax.Identifier.Span);

            var boundQualifiers = new List<BoundVariableQualifier>();
            foreach (var qualifier in syntax.Qualifiers)
                boundQualifiers.Add(Bind(qualifier, BindVariableQualifier));

            BoundInitializer initializer = null;
            if (syntax.Initializer != null)
                initializer = BindInitializer(syntax.Initializer);

            return new BoundVariableDeclaration(symbol, variableType, boundQualifiers.ToImmutableArray(), initializer);
        }

Usage Example

Exemplo n.º 1
0
        private ImmutableArray<BoundVariableDeclaration> BindParameters(ParameterListSyntax parameterList, Binder invocableBinder, InvocableSymbol invocableSymbol)
        {
            var boundParameters = new List<BoundVariableDeclaration>();
            foreach (var parameterSyntax in parameterList.Parameters)
            {
                var parameterValueType = Bind(parameterSyntax.Type, x => BindType(x, null));
                var parameterDirection = SyntaxFacts.GetParameterDirection(parameterSyntax.Modifiers);

                boundParameters.Add(invocableBinder.Bind(parameterSyntax.Declarator, x => invocableBinder.BindVariableDeclarator(x, parameterValueType.TypeSymbol, (d, t) =>
                    new SourceParameterSymbol(
                        parameterSyntax,
                        invocableSymbol,
                        t,
                        parameterDirection))));
            }

            invocableSymbol.ClearParameters();
            foreach (var parameter in invocableBinder.LocalSymbols.Values.SelectMany(x => x))
                invocableSymbol.AddParameter((ParameterSymbol) parameter);

            return boundParameters.ToImmutableArray();
        }
All Usage Examples Of ShaderTools.Hlsl.Binding.Binder::BindVariableDeclarator