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

BindField() private method

private BindField ( VariableDeclarationStatementSyntax variableDeclarationStatementSyntax, TypeSymbol parentType ) : BoundMultipleVariableDeclarations
variableDeclarationStatementSyntax VariableDeclarationStatementSyntax
parentType ShaderTools.Hlsl.Symbols.TypeSymbol
return ShaderTools.Hlsl.Binding.BoundNodes.BoundMultipleVariableDeclarations
        private BoundMultipleVariableDeclarations BindField(VariableDeclarationStatementSyntax variableDeclarationStatementSyntax, TypeSymbol parentType)
        {
            var declaration = variableDeclarationStatementSyntax.Declaration;
            return BindVariableDeclaration(declaration, parentType, (d, t) => new SourceFieldSymbol(d, parentType, t));
        }

Usage Example

        private BoundStructType BindStructDeclaration(StructTypeSyntax declaration, Symbol parent)
        {
            ClassOrStructSymbol    baseType;
            List <InterfaceSymbol> baseInterfaces;

            BindBaseList(declaration.BaseList, parent, out baseType, out baseInterfaces);

            var structSymbol = new StructSymbol(declaration, parent, baseType, baseInterfaces.ToImmutableArray());

            AddSymbol(structSymbol, declaration.Name?.SourceRange ?? declaration.SourceRange);

            var variables    = new List <BoundMultipleVariableDeclarations>();
            var structBinder = new Binder(_sharedBinderState, this);

            foreach (var variableDeclarationStatement in declaration.Fields)
            {
                variables.Add(structBinder.Bind(variableDeclarationStatement, x => structBinder.BindField(x, structSymbol)));
            }

            foreach (var member in structBinder.LocalSymbols.Values.SelectMany(x => x))
            {
                structSymbol.AddMember(member);
            }

            return(new BoundStructType(structSymbol, variables.ToImmutableArray()));
        }
All Usage Examples Of ShaderTools.Hlsl.Binding.Binder::BindField