Shader: Add import statement (not doing anything for now)

This commit is contained in:
Jérôme Leclercq
2022-03-04 18:27:37 +01:00
parent ca83f363a3
commit b6cd85d6fe
23 changed files with 101 additions and 0 deletions

View File

@@ -68,6 +68,7 @@ namespace Nz::ShaderAst
virtual StatementPtr Clone(ExpressionStatement& node);
virtual StatementPtr Clone(ForStatement& node);
virtual StatementPtr Clone(ForEachStatement& node);
virtual StatementPtr Clone(ImportStatement& node);
virtual StatementPtr Clone(MultiStatement& node);
virtual StatementPtr Clone(NoOpStatement& node);
virtual StatementPtr Clone(ReturnStatement& node);

View File

@@ -56,6 +56,7 @@ namespace Nz::ShaderAst
inline bool Compare(const ExpressionStatement& lhs, const ExpressionStatement& rhs);
inline bool Compare(const ForStatement& lhs, const ForStatement& rhs);
inline bool Compare(const ForEachStatement& lhs, const ForEachStatement& rhs);
inline bool Compare(const ImportStatement& lhs, const ImportStatement& rhs);
inline bool Compare(const MultiStatement& lhs, const MultiStatement& rhs);
inline bool Compare(const NoOpStatement& lhs, const NoOpStatement& rhs);
inline bool Compare(const ReturnStatement& lhs, const ReturnStatement& rhs);

View File

@@ -509,6 +509,14 @@ namespace Nz::ShaderAst
return true;
}
bool Compare(const ImportStatement& lhs, const ImportStatement& rhs)
{
if (!Compare(lhs.modulePath, rhs.modulePath))
return false;
return true;
}
inline bool Compare(const MultiStatement& lhs, const MultiStatement& rhs)
{
if (!Compare(lhs.statements, rhs.statements))

View File

@@ -55,6 +55,7 @@ NAZARA_SHADERAST_STATEMENT(DiscardStatement)
NAZARA_SHADERAST_STATEMENT(ForStatement)
NAZARA_SHADERAST_STATEMENT(ForEachStatement)
NAZARA_SHADERAST_STATEMENT(ExpressionStatement)
NAZARA_SHADERAST_STATEMENT(ImportStatement)
NAZARA_SHADERAST_STATEMENT(MultiStatement)
NAZARA_SHADERAST_STATEMENT(NoOpStatement)
NAZARA_SHADERAST_STATEMENT(ReturnStatement)

View File

@@ -48,6 +48,7 @@ namespace Nz::ShaderAst
void Visit(ExpressionStatement& node) override;
void Visit(ForStatement& node) override;
void Visit(ForEachStatement& node) override;
void Visit(ImportStatement& node) override;
void Visit(MultiStatement& node) override;
void Visit(NoOpStatement& node) override;
void Visit(ReturnStatement& node) override;

View File

@@ -51,6 +51,7 @@ namespace Nz::ShaderAst
void Serialize(ExpressionStatement& node);
void Serialize(ForStatement& node);
void Serialize(ForEachStatement& node);
void Serialize(ImportStatement& node);
void Serialize(MultiStatement& node);
void Serialize(NoOpStatement& node);
void Serialize(ReturnStatement& node);

View File

@@ -367,6 +367,14 @@ namespace Nz::ShaderAst
StatementPtr statement;
};
struct NAZARA_SHADER_API ImportStatement : Statement
{
NodeType GetType() const override;
void Visit(AstStatementVisitor& visitor) override;
std::vector<std::string> modulePath;
};
struct NAZARA_SHADER_API MultiStatement : Statement
{
NodeType GetType() const override;

View File

@@ -88,6 +88,7 @@ namespace Nz::ShaderAst
StatementPtr Clone(ExpressionStatement& node) override;
StatementPtr Clone(ForStatement& node) override;
StatementPtr Clone(ForEachStatement& node) override;
StatementPtr Clone(ImportStatement& node) override;
StatementPtr Clone(MultiStatement& node) override;
StatementPtr Clone(ScopedStatement& node) override;
StatementPtr Clone(WhileStatement& node) override;