diff --git a/src/Nazara/Shader/Ast/IndexRemapperVisitor.cpp b/src/Nazara/Shader/Ast/IndexRemapperVisitor.cpp index 89c638e02..bd61a2302 100644 --- a/src/Nazara/Shader/Ast/IndexRemapperVisitor.cpp +++ b/src/Nazara/Shader/Ast/IndexRemapperVisitor.cpp @@ -11,24 +11,11 @@ namespace Nz::ShaderAst { namespace { - template const T& Retrieve(const std::unordered_map& map, std::size_t id) - { - auto it = map.find(id); - assert(it != map.end()); - return it->second; - } - template void UniqueInsert(std::unordered_map& map, T key, U value) { assert(map.find(key) == map.end()); map.emplace(std::move(key), std::move(value)); } - - template - std::unique_ptr static_unique_pointer_cast(std::unique_ptr&& ptr) - { - return std::unique_ptr(SafeCast(ptr.release())); - } } struct IndexRemapperVisitor::Context @@ -57,7 +44,7 @@ namespace Nz::ShaderAst StatementPtr IndexRemapperVisitor::Clone(DeclareConstStatement& node) { - DeclareConstStatementPtr clone = static_unique_pointer_cast(AstCloner::Clone(node)); + DeclareConstStatementPtr clone = StaticUniquePointerCast(AstCloner::Clone(node)); assert(clone->constIndex); std::size_t newConstIndex = m_context->callbacks->constIndexGenerator(*clone->constIndex); @@ -69,7 +56,7 @@ namespace Nz::ShaderAst StatementPtr IndexRemapperVisitor::Clone(DeclareExternalStatement& node) { - DeclareExternalStatementPtr clone = static_unique_pointer_cast(AstCloner::Clone(node)); + DeclareExternalStatementPtr clone = StaticUniquePointerCast(AstCloner::Clone(node)); for (auto& extVar : clone->externalVars) { @@ -84,7 +71,7 @@ namespace Nz::ShaderAst StatementPtr IndexRemapperVisitor::Clone(DeclareFunctionStatement& node) { - DeclareFunctionStatementPtr clone = static_unique_pointer_cast(AstCloner::Clone(node)); + DeclareFunctionStatementPtr clone = StaticUniquePointerCast(AstCloner::Clone(node)); assert(clone->funcIndex); std::size_t newFuncIndex = m_context->callbacks->funcIndexGenerator(*clone->funcIndex); @@ -110,7 +97,7 @@ namespace Nz::ShaderAst StatementPtr IndexRemapperVisitor::Clone(DeclareStructStatement& node) { - DeclareStructStatementPtr clone = static_unique_pointer_cast(AstCloner::Clone(node)); + DeclareStructStatementPtr clone = StaticUniquePointerCast(AstCloner::Clone(node)); assert(clone->structIndex); std::size_t newStructIndex = m_context->callbacks->structIndexGenerator(*clone->structIndex); @@ -125,7 +112,7 @@ namespace Nz::ShaderAst StatementPtr IndexRemapperVisitor::Clone(DeclareVariableStatement& node) { - DeclareVariableStatementPtr clone = static_unique_pointer_cast(AstCloner::Clone(node)); + DeclareVariableStatementPtr clone = StaticUniquePointerCast(AstCloner::Clone(node)); assert(clone->varIndex); std::size_t newVarIndex = m_context->callbacks->varIndexGenerator(*clone->varIndex); @@ -139,7 +126,7 @@ namespace Nz::ShaderAst ExpressionPtr IndexRemapperVisitor::Clone(FunctionExpression& node) { - FunctionExpressionPtr clone = static_unique_pointer_cast(AstCloner::Clone(node)); + FunctionExpressionPtr clone = StaticUniquePointerCast(AstCloner::Clone(node)); assert(clone->funcId); clone->funcId = Retrieve(m_context->newFuncIndices, clone->funcId); @@ -149,7 +136,7 @@ namespace Nz::ShaderAst ExpressionPtr IndexRemapperVisitor::Clone(StructTypeExpression& node) { - StructTypeExpressionPtr clone = static_unique_pointer_cast(AstCloner::Clone(node)); + StructTypeExpressionPtr clone = StaticUniquePointerCast(AstCloner::Clone(node)); assert(clone->structTypeId); clone->structTypeId = Retrieve(m_context->newStructIndices, clone->structTypeId); @@ -159,7 +146,7 @@ namespace Nz::ShaderAst ExpressionPtr IndexRemapperVisitor::Clone(VariableValueExpression& node) { - VariableValueExpressionPtr clone = static_unique_pointer_cast(AstCloner::Clone(node)); + VariableValueExpressionPtr clone = StaticUniquePointerCast(AstCloner::Clone(node)); assert(clone->variableId); clone->variableId = Retrieve(m_context->newVarIndices, clone->variableId); diff --git a/tests/Engine/Shader/OptimizationTests.cpp b/tests/Engine/Shader/OptimizationTests.cpp index a09f4d280..061e31fd1 100644 --- a/tests/Engine/Shader/OptimizationTests.cpp +++ b/tests/Engine/Shader/OptimizationTests.cpp @@ -9,12 +9,6 @@ #include #include -template -std::unique_ptr static_unique_pointer_cast(std::unique_ptr&& ptr) -{ - return std::unique_ptr(Nz::SafeCast(ptr.release())); -} - void PropagateConstantAndExpect(std::string_view sourceCode, std::string_view expectedOptimizedResult) { Nz::ShaderAst::ModulePtr shaderModule;