예제 #1
0
        private static TypeSymbol ResolveIntrinsicVectorType(VectorTypeSyntax type)
        {
            var vectorType    = SyntaxFacts.GetVectorType(type.TypeToken.Kind);
            var scalarType    = vectorType.Item1;
            var numComponents = vectorType.Item2;

            return(IntrinsicTypes.GetVectorType(scalarType, numComponents));
        }
예제 #2
0
        private BoundVectorType BindVectorType(VectorTypeSyntax node)
        {
            var vectorType    = TypeFacts.GetVectorType(node.TypeToken.Kind);
            var scalarType    = vectorType.Item1;
            var numComponents = vectorType.Item2;

            return(new BoundVectorType(IntrinsicTypes.GetVectorType(scalarType, numComponents)));
        }
예제 #3
0
        private static TypeSymbol ResolveIntrinsicVectorType(VectorTypeSyntax type)
        {
            var vectorType = SyntaxFacts.GetVectorType(type.TypeToken.Kind);
            var scalarType = vectorType.Item1;
            var numComponents = vectorType.Item2;

            return IntrinsicTypes.GetVectorType(scalarType, numComponents);
        }
예제 #4
0
        private BoundVectorType BindVectorType(VectorTypeSyntax node)
        {
            var vectorType = TypeFacts.GetVectorType(node.TypeToken.Kind);
            var scalarType = vectorType.Item1;
            var numComponents = vectorType.Item2;

            return new BoundVectorType(IntrinsicTypes.GetVectorType(scalarType, numComponents));
        }
예제 #5
0
 public virtual void VisitVectorType(VectorTypeSyntax node)
 {
     DefaultVisit(node);
 }
예제 #6
0
 public virtual void VisitVectorType(VectorTypeSyntax node)
 {
     DefaultVisit(node);
 }
예제 #7
0
        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;
            }
        }