4 using System.Collections.Generic;
6 using SiliconStudio.Paradox.Shaders.Parser.Ast;
7 using SiliconStudio.Paradox.Shaders.Parser.Utility;
8 using SiliconStudio.Shaders.Ast;
9 using SiliconStudio.Shaders.Ast.Hlsl;
10 using SiliconStudio.Shaders.Utility;
11 using SiliconStudio.Shaders.Visitor;
13 namespace SiliconStudio.
Paradox.Shaders.Parser.Mixins
17 public HashSet<Tuple<IdentifierGeneric, Node>> FoundIdentifiers =
new HashSet<Tuple<IdentifierGeneric, Node>>();
19 public HashSet<string> FoundClasses =
new HashSet<string>();
32 if (log == null)
throw new ArgumentNullException(
"log");
33 if (sourceManager == null)
throw new ArgumentNullException(
"sourceManager");
36 this.sourceManager = sourceManager;
41 Visit(shaderClassType);
47 Visit((
Node)identifier);
49 FoundIdentifiers.Add(Tuple.Create(identifier, ParentNode));
55 Visit((
Node)variableReferenceExpression);
57 if (sourceManager.IsClassExists(variableReferenceExpression.
Name.
Text))
58 FoundClasses.Add(variableReferenceExpression.
Name.
Text);
64 Visit((
Node)memberReferenceExpression);
66 if (sourceManager.IsClassExists(memberReferenceExpression.
Member.
Text))
67 FoundClasses.Add(memberReferenceExpression.
Member.
Text);
71 private void Visit(
TypeBase typeBase)
73 Visit((
Node)typeBase);
75 if (sourceManager.IsClassExists(typeBase.
Name.
Text))
77 FoundClasses.Add(typeBase.Name.Text);
82 log.Error(ParadoxMessageCode.ErrorClassNotFound, typeBase.Span, typeBase.Name.Text);
string Text
Gets or sets the name.
Identifier Member
Gets or sets the member.
A class to collect parsing/expression messages.
ShaderDependencyVisitor(LoggerResult log, ShaderSourceManager sourceManager)
Identifier Name
Gets or sets the name.
A member reference in the form {this}.{Name}
void Run(ShaderClassType shaderClassType)
Class ShaderSourceManager
A generic identifier in the form Typename
A reference to a variable.
Identifier Name
Gets or sets the type name.