private PredefinedObjectTypeSyntax ParseObjectType(SyntaxToken token)
{
switch (token.Kind)
{
case SyntaxKind.BufferKeyword:
case SyntaxKind.RasterizerOrderedBufferKeyword:
case SyntaxKind.RWBufferKeyword:
return ParseBufferType(token);
case SyntaxKind.ByteAddressBufferKeyword:
case SyntaxKind.RasterizerOrderedByteAddressBufferKeyword:
case SyntaxKind.RWByteAddressBufferKeyword:
case SyntaxKind.RasterizerStateKeyword:
case SyntaxKind.BlendStateKeyword:
case SyntaxKind.DepthStencilStateKeyword:
case SyntaxKind.Texture2DLegacyKeyword:
case SyntaxKind.TextureCubeLegacyKeyword:
case SyntaxKind.SamplerKeyword:
case SyntaxKind.Sampler1DKeyword:
case SyntaxKind.Sampler2DKeyword:
case SyntaxKind.Sampler3DKeyword:
case SyntaxKind.SamplerCubeKeyword:
case SyntaxKind.SamplerStateKeyword:
case SyntaxKind.SamplerComparisonStateKeyword:
return new PredefinedObjectTypeSyntax(token, null);
case SyntaxKind.InputPatchKeyword:
case SyntaxKind.OutputPatchKeyword:
return ParsePatchType(token);
case SyntaxKind.PointStreamKeyword:
case SyntaxKind.LineStreamKeyword:
case SyntaxKind.TriangleStreamKeyword:
return ParseStreamOutputType(token);
case SyntaxKind.AppendStructuredBufferKeyword:
case SyntaxKind.ConsumeStructuredBufferKeyword:
case SyntaxKind.RasterizerOrderedStructuredBufferKeyword:
case SyntaxKind.RWStructuredBufferKeyword:
case SyntaxKind.StructuredBufferKeyword:
return ParseStructuredBufferType(token);
case SyntaxKind.RasterizerOrderedTexture1DKeyword:
case SyntaxKind.RasterizerOrderedTexture1DArrayKeyword:
case SyntaxKind.RasterizerOrderedTexture2DKeyword:
case SyntaxKind.RasterizerOrderedTexture2DArrayKeyword:
case SyntaxKind.RasterizerOrderedTexture3DKeyword:
case SyntaxKind.RWTexture1DKeyword:
case SyntaxKind.RWTexture1DArrayKeyword:
case SyntaxKind.RWTexture2DKeyword:
case SyntaxKind.RWTexture2DArrayKeyword:
case SyntaxKind.RWTexture3DKeyword:
case SyntaxKind.Texture1DKeyword:
case SyntaxKind.Texture1DArrayKeyword:
case SyntaxKind.Texture2DKeyword:
case SyntaxKind.Texture2DArrayKeyword:
case SyntaxKind.Texture3DKeyword:
case SyntaxKind.TextureCubeKeyword:
case SyntaxKind.TextureCubeArrayKeyword:
return ParseTextureType(token);
case SyntaxKind.Texture2DMSKeyword:
case SyntaxKind.Texture2DMSArrayKeyword:
return ParseMultisampledTextureType(token);
}
switch (token.ContextualKind)
{
case SyntaxKind.TextureKeyword:
case SyntaxKind.GeometryShaderKeyword:
case SyntaxKind.PixelShaderKeyword:
case SyntaxKind.VertexShaderKeyword:
return new PredefinedObjectTypeSyntax(token.WithKind(token.ContextualKind), null);
case SyntaxKind.ConstantBufferKeyword:
return ParseTemplatedConstantBufferType(token);
}
TemplateArgumentListSyntax templateArgumentList = null;
if (Current.Kind == SyntaxKind.LessThanToken)
templateArgumentList = ParseTemplateArgumentList();
return new PredefinedObjectTypeSyntax(token, templateArgumentList);
}