Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
ParadoxShaderCleaner.cs
Go to the documentation of this file.
1 // Copyright (c) 2014 Silicon Studio Corp. (http://siliconstudio.co.jp)
2 // This file is distributed under GPL v3. See LICENSE.md for details.
3 using SiliconStudio.Paradox.Shaders.Parser.Ast;
4 using SiliconStudio.Shaders.Ast;
5 using SiliconStudio.Shaders.Ast.Hlsl;
6 using SiliconStudio.Shaders.Visitor;
7 
8 namespace SiliconStudio.Paradox.Shaders.Parser
9 {
10  internal class ParadoxShaderCleaner : ShaderVisitor
11  {
12  public ParadoxShaderCleaner() : base(false, false)
13  {
14  }
15 
16  /// <summary>
17  /// Runs this instance on the specified node.
18  /// </summary>
19  /// <param name="shader">The shader.</param>
20  public void Run(Shader shader)
21  {
22  Visit(shader);
23  }
24 
25  public void Run(ShaderClassType shaderClassType)
26  {
27  var shader = new Shader();
28  shader.Declarations.Add(shaderClassType);
29  Run(shader);
30  }
31 
32  [Visit]
33  public void Visit(Variable variable)
34  {
35  variable.Qualifiers.Values.Remove(ParadoxStorageQualifier.Stream);
36  variable.Qualifiers.Values.Remove(ParadoxStorageQualifier.Stage);
37  variable.Qualifiers.Values.Remove(ParadoxStorageQualifier.PatchStream);
38  Visit((Node)variable);
39  }
40 
41  [Visit]
42  public void Visit(MethodDeclaration methodDeclaration)
43  {
44  methodDeclaration.Qualifiers.Values.Remove(ParadoxStorageQualifier.Override);
45  methodDeclaration.Qualifiers.Values.Remove(ParadoxStorageQualifier.Clone);
46  methodDeclaration.Qualifiers.Values.Remove(ParadoxStorageQualifier.Stage);
47  Visit((Node)methodDeclaration);
48  }
49 
50  [Visit]
51  public AttributeDeclaration Visit(AttributeDeclaration attribute)
52  {
53  if (ParadoxAttributes.AvailableAttributes.Contains(attribute.Name))
54  return null;
55 
56  return attribute;
57  }
58  }
59 }
Abstract node.
Definition: Node.cs:15
A variable declaration.
Definition: Variable.cs:11
Toplevel container of a shader parsing result.
Definition: Shader.cs:12
document false