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

GetTextureValueAndScalarType() private method

private GetTextureValueAndScalarType ( PredefinedObjectTypeSyntax node, TypeSymbol &valueType, ScalarType &scalarType ) : void
node PredefinedObjectTypeSyntax
valueType ShaderTools.Hlsl.Symbols.TypeSymbol
scalarType ScalarType
return void
        private void GetTextureValueAndScalarType(PredefinedObjectTypeSyntax node, out TypeSymbol valueType, out ScalarType scalarType)
        {
            if (node.TemplateArgumentList != null)
            {
                var valueTypeSyntax = (TypeSyntax) node.TemplateArgumentList.Arguments[0];
                valueType = Bind(valueTypeSyntax, x => BindType(x, null)).TypeSymbol;
                switch (valueTypeSyntax.Kind)
                {
                    case SyntaxKind.PredefinedScalarType:
                        scalarType = TypeFacts.GetScalarType((ScalarTypeSyntax) valueTypeSyntax);
                        break;
                    case SyntaxKind.PredefinedVectorType:
                        scalarType = TypeFacts.GetVectorType(((VectorTypeSyntax) valueTypeSyntax).TypeToken.Kind).Item1;
                        break;
                    case SyntaxKind.PredefinedGenericVectorType:
                        scalarType = TypeFacts.GetScalarType(((GenericVectorTypeSyntax) valueTypeSyntax).ScalarType);
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
            }
            else
            {
                valueType = IntrinsicTypes.Float4;
                scalarType = ScalarType.Float;
            }
        }
    }