From 56c6eff7f87171bd3807bff0189d636a38365cdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 15 Mar 2022 08:35:57 +0100 Subject: [PATCH] Rebase fix --- .../Shader/Ast/AstConstantPropagationVisitor.cpp | 4 ++-- .../Shader/Ast/EliminateUnusedPassVisitor.cpp | 11 +---------- src/Nazara/Shader/Ast/SanitizeVisitor.cpp | 10 +++++----- src/ShaderNode/ShaderGraph.cpp | 15 +++++---------- 4 files changed, 13 insertions(+), 27 deletions(-) diff --git a/src/Nazara/Shader/Ast/AstConstantPropagationVisitor.cpp b/src/Nazara/Shader/Ast/AstConstantPropagationVisitor.cpp index 702062b5a..4d28814d7 100644 --- a/src/Nazara/Shader/Ast/AstConstantPropagationVisitor.cpp +++ b/src/Nazara/Shader/Ast/AstConstantPropagationVisitor.cpp @@ -731,14 +731,14 @@ namespace Nz::ShaderAst ModulePtr AstConstantPropagationVisitor::Process(const Module& shaderModule) { - auto rootnode = static_unique_pointer_cast(Process(*shaderModule.rootNode)); + auto rootnode = StaticUniquePointerCast(Process(*shaderModule.rootNode)); return std::make_shared(shaderModule.metadata, std::move(rootnode), shaderModule.importedModules); } ModulePtr AstConstantPropagationVisitor::Process(const Module& shaderModule, const Options& options) { - auto rootNode = static_unique_pointer_cast(Process(*shaderModule.rootNode, options)); + auto rootNode = StaticUniquePointerCast(Process(*shaderModule.rootNode, options)); return std::make_shared(shaderModule.metadata, std::move(rootNode), shaderModule.importedModules); } diff --git a/src/Nazara/Shader/Ast/EliminateUnusedPassVisitor.cpp b/src/Nazara/Shader/Ast/EliminateUnusedPassVisitor.cpp index d21aeaa6d..536f86150 100644 --- a/src/Nazara/Shader/Ast/EliminateUnusedPassVisitor.cpp +++ b/src/Nazara/Shader/Ast/EliminateUnusedPassVisitor.cpp @@ -9,15 +9,6 @@ namespace Nz::ShaderAst { - namespace - { - template - std::unique_ptr static_unique_pointer_cast(std::unique_ptr&& ptr) - { - return std::unique_ptr(static_cast(ptr.release())); - } - } - struct EliminateUnusedPassVisitor::Context { const DependencyCheckerVisitor::UsageSet& usageSet; @@ -25,7 +16,7 @@ namespace Nz::ShaderAst ModulePtr EliminateUnusedPassVisitor::Process(const Module& shaderModule, const DependencyCheckerVisitor::UsageSet& usageSet) { - auto rootNode = static_unique_pointer_cast(Process(*shaderModule.rootNode, usageSet)); + auto rootNode = StaticUniquePointerCast(Process(*shaderModule.rootNode, usageSet)); return std::make_shared(shaderModule.metadata, std::move(rootNode), shaderModule.importedModules); } diff --git a/src/Nazara/Shader/Ast/SanitizeVisitor.cpp b/src/Nazara/Shader/Ast/SanitizeVisitor.cpp index 435bb1bc4..cae9333ee 100644 --- a/src/Nazara/Shader/Ast/SanitizeVisitor.cpp +++ b/src/Nazara/Shader/Ast/SanitizeVisitor.cpp @@ -458,7 +458,7 @@ namespace Nz::ShaderAst aliasType.targetType = std::make_unique(); aliasType.targetType->type = *targetExpr->cachedExpressionType; - auto clone = static_unique_pointer_cast(AstCloner::Clone(node)); + auto clone = StaticUniquePointerCast(AstCloner::Clone(node)); clone->cachedExpressionType = std::move(aliasType); return clone; @@ -709,7 +709,7 @@ namespace Nz::ShaderAst ExpressionPtr SanitizeVisitor::Clone(IntrinsicExpression& node) { - auto clone = static_unique_pointer_cast(AstCloner::Clone(node)); + auto clone = StaticUniquePointerCast(AstCloner::Clone(node)); Validate(*clone); return clone; @@ -867,7 +867,7 @@ namespace Nz::ShaderAst StatementPtr SanitizeVisitor::Clone(DeclareAliasStatement& node) { - auto clone = static_unique_pointer_cast(AstCloner::Clone(node)); + auto clone = StaticUniquePointerCast(AstCloner::Clone(node)); Validate(*clone); if (m_context->options.removeAliases) @@ -1452,7 +1452,7 @@ namespace Nz::ShaderAst StatementPtr SanitizeVisitor::Clone(ImportStatement& node) { if (!m_context->options.moduleResolver) - return static_unique_pointer_cast(AstCloner::Clone(node)); + return StaticUniquePointerCast(AstCloner::Clone(node)); ModulePtr targetModule = m_context->options.moduleResolver->Resolve(node.moduleName); if (!targetModule) @@ -2439,7 +2439,7 @@ namespace Nz::ShaderAst // First pass, evaluate everything except function code try { - output = static_unique_pointer_cast(AstCloner::Clone(rootNode)); + output = StaticUniquePointerCast(AstCloner::Clone(rootNode)); } catch (const AstError& err) { diff --git a/src/ShaderNode/ShaderGraph.cpp b/src/ShaderNode/ShaderGraph.cpp index bce32ca47..2dfd34a0c 100644 --- a/src/ShaderNode/ShaderGraph.cpp +++ b/src/ShaderNode/ShaderGraph.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -47,12 +48,6 @@ namespace auto creator = [&] { return std::make_unique(graph); }; registry->registerModel(category, std::move(creator)); } - - template - std::unique_ptr static_unique_pointer_cast(std::unique_ptr&& ptr) - { - return std::unique_ptr(static_cast(ptr.release())); - } } ShaderGraph::ShaderGraph() : @@ -897,7 +892,7 @@ std::unique_ptr ShaderGraph::ToFunction if (!Nz::ShaderAst::IsExpression(inputNode->GetType())) throw std::runtime_error("unexpected statement"); - expressions[i] = static_unique_pointer_cast(std::move(inputNode)); + expressions[i] = Nz::StaticUniquePointerCast(std::move(inputNode)); i++; } } @@ -906,7 +901,7 @@ std::unique_ptr ShaderGraph::ToFunction if (!Nz::ShaderAst::IsExpression(astNode->GetType())) return astNode; - Nz::ShaderAst::ExpressionPtr expression = static_unique_pointer_cast(std::move(astNode)); + Nz::ShaderAst::ExpressionPtr expression = Nz::StaticUniquePointerCast(std::move(astNode)); const std::string& variableName = shaderNode->GetVariableName(); if (it->second > 1 || !variableName.empty()) @@ -952,9 +947,9 @@ std::unique_ptr ShaderGraph::ToFunction { auto astNode = HandleNode(node, 0); if (!Nz::ShaderAst::IsStatement(astNode->GetType())) - statements.emplace_back(Nz::ShaderBuilder::ExpressionStatement(static_unique_pointer_cast(std::move(astNode)))); + statements.emplace_back(Nz::ShaderBuilder::ExpressionStatement(Nz::StaticUniquePointerCast(std::move(astNode)))); else - statements.emplace_back(static_unique_pointer_cast(std::move(astNode))); + statements.emplace_back(Nz::StaticUniquePointerCast(std::move(astNode))); } if (!m_outputs.empty())