示例#1
0
        private static TypeSymbol ResolveIntrinsicMatrixType(MatrixTypeSyntax type)
        {
            var matrixType = SyntaxFacts.GetMatrixType(type.TypeToken.Kind);
            var scalarType = matrixType.Item1;
            var numRows    = matrixType.Item2;
            var numCols    = matrixType.Item3;

            return(IntrinsicTypes.GetMatrixType(scalarType, numRows, numCols));
        }
示例#2
0
        private BoundMatrixType BindMatrixType(MatrixTypeSyntax node)
        {
            var matrixType = TypeFacts.GetMatrixType(node.TypeToken.Kind);
            var scalarType = matrixType.Item1;
            var numRows    = matrixType.Item2;
            var numCols    = matrixType.Item3;

            return(new BoundMatrixType(IntrinsicTypes.GetMatrixType(scalarType, numRows, numCols)));
        }
示例#3
0
        private BoundMatrixType BindMatrixType(MatrixTypeSyntax node)
        {
            var matrixType = TypeFacts.GetMatrixType(node.TypeToken.Kind);
            var scalarType = matrixType.Item1;
            var numRows = matrixType.Item2;
            var numCols = matrixType.Item3;

            return new BoundMatrixType(IntrinsicTypes.GetMatrixType(scalarType, numRows, numCols));
        }
示例#4
0
        private static TypeSymbol ResolveIntrinsicMatrixType(MatrixTypeSyntax type)
        {
            var matrixType = SyntaxFacts.GetMatrixType(type.TypeToken.Kind);
            var scalarType = matrixType.Item1;
            var numRows = matrixType.Item2;
            var numCols = matrixType.Item3;

            return IntrinsicTypes.GetMatrixType(scalarType, numRows, numCols);
        }
示例#5
0
 public virtual void VisitMatrixType(MatrixTypeSyntax node)
 {
     DefaultVisit(node);
 }
 public virtual void VisitMatrixType(MatrixTypeSyntax node)
 {
     DefaultVisit(node);
 }
        public static void SetType(TypeSyntax typeSyntax)
        {
            if (!IsGroupOpen())
            {
                return;
            }

            if (typeSyntax.Kind == SyntaxKind.PredefinedScalarType)
            {
                _activeVar.IsScalar = true;

                ScalarTypeSyntax stSyntax = (ScalarTypeSyntax)typeSyntax;
                if (stSyntax.TypeTokens.Count == 2)
                {
                    _activeVar.DataType = GetDataType(stSyntax.TypeTokens[1].ValueText);
                    if (_activeVar.DataType == DataType.Int && stSyntax.TypeTokens[0].ValueText.Equals("unsigned"))
                    {
                        _activeVar.DataType = DataType.Uint;
                    }
                }
                else if (stSyntax.TypeTokens.Count == 1)
                {
                    _activeVar.DataType = GetDataType(stSyntax.TypeTokens[0].ValueText);
                }
                else
                {
                    _varValid = false;
                }
            }
            else if (typeSyntax.Kind == SyntaxKind.PredefinedVectorType)
            {
                _activeVar.IsVector = true;

                VectorTypeSyntax vtSyntax    = (VectorTypeSyntax)typeSyntax;
                string           syntaxToken = vtSyntax.TypeToken.ValueText;
                _activeVar.DataType = GetDataType(syntaxToken);
                ParseVectorColumns(syntaxToken);
            }
            else if (typeSyntax.Kind == SyntaxKind.PredefinedMatrixType)
            {
                _activeVar.IsMatrix = true;

                MatrixTypeSyntax mtSyntax    = (MatrixTypeSyntax)typeSyntax;
                string           syntaxToken = mtSyntax.TypeToken.ValueText;
                _activeVar.DataType = GetDataType(syntaxToken);
                ParseMatrixDimensions(syntaxToken);
            }
            else if (typeSyntax.Kind == SyntaxKind.PredefinedObjectType)
            {
                PredefinedObjectTypeSyntax otSyntax = (PredefinedObjectTypeSyntax)typeSyntax;
                if (otSyntax.ObjectTypeToken.Kind == SyntaxKind.Texture2DKeyword)
                {
                    _activeVar.IsTexture = true;
                    _activeVar.DataType  = DataType.Texture;
                }
                else
                {
                    _varValid = false;
                }
            }
            else
            {
                _varValid = false;
            }
        }