diff --git a/include/Nazara/Shader/ShaderNodes.hpp b/include/Nazara/Shader/ShaderNodes.hpp index e5663c5d1..0e84c8d1f 100644 --- a/include/Nazara/Shader/ShaderNodes.hpp +++ b/include/Nazara/Shader/ShaderNodes.hpp @@ -296,6 +296,8 @@ namespace Nz::ShaderAst }; inline const ShaderAst::ExpressionType& GetExpressionType(ShaderAst::Expression& expr); + inline bool IsExpression(NodeType nodeType); + inline bool IsStatement(NodeType nodeType); } #include diff --git a/include/Nazara/Shader/ShaderNodes.inl b/include/Nazara/Shader/ShaderNodes.inl index d8b320b72..c9c3b875b 100644 --- a/include/Nazara/Shader/ShaderNodes.inl +++ b/include/Nazara/Shader/ShaderNodes.inl @@ -12,6 +12,30 @@ namespace Nz::ShaderAst assert(expr.cachedExpressionType); return expr.cachedExpressionType.value(); } + + inline bool IsExpression(NodeType nodeType) + { + switch (nodeType) + { +#define NAZARA_SHADERAST_EXPRESSION(Node) case NodeType::Node: return true; +#include + + default: + return false; + } + } + + inline bool IsStatement(NodeType nodeType) + { + switch (nodeType) + { +#define NAZARA_SHADERAST_STATEMENT(Node) case NodeType::Node: return true; +#include + + default: + return false; + } + } } #include