Fix compilation
This commit is contained in:
parent
79a5716110
commit
0f55779a8a
|
|
@ -11,24 +11,11 @@ namespace Nz::ShaderAst
|
||||||
{
|
{
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
template<typename T> const T& Retrieve(const std::unordered_map<std::size_t, T>& map, std::size_t id)
|
|
||||||
{
|
|
||||||
auto it = map.find(id);
|
|
||||||
assert(it != map.end());
|
|
||||||
return it->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename T, typename U> void UniqueInsert(std::unordered_map<T, U>& map, T key, U value)
|
template<typename T, typename U> void UniqueInsert(std::unordered_map<T, U>& map, T key, U value)
|
||||||
{
|
{
|
||||||
assert(map.find(key) == map.end());
|
assert(map.find(key) == map.end());
|
||||||
map.emplace(std::move(key), std::move(value));
|
map.emplace(std::move(key), std::move(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, typename U>
|
|
||||||
std::unique_ptr<T> static_unique_pointer_cast(std::unique_ptr<U>&& ptr)
|
|
||||||
{
|
|
||||||
return std::unique_ptr<T>(SafeCast<T*>(ptr.release()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct IndexRemapperVisitor::Context
|
struct IndexRemapperVisitor::Context
|
||||||
|
|
@ -57,7 +44,7 @@ namespace Nz::ShaderAst
|
||||||
|
|
||||||
StatementPtr IndexRemapperVisitor::Clone(DeclareConstStatement& node)
|
StatementPtr IndexRemapperVisitor::Clone(DeclareConstStatement& node)
|
||||||
{
|
{
|
||||||
DeclareConstStatementPtr clone = static_unique_pointer_cast<DeclareConstStatement>(AstCloner::Clone(node));
|
DeclareConstStatementPtr clone = StaticUniquePointerCast<DeclareConstStatement>(AstCloner::Clone(node));
|
||||||
|
|
||||||
assert(clone->constIndex);
|
assert(clone->constIndex);
|
||||||
std::size_t newConstIndex = m_context->callbacks->constIndexGenerator(*clone->constIndex);
|
std::size_t newConstIndex = m_context->callbacks->constIndexGenerator(*clone->constIndex);
|
||||||
|
|
@ -69,7 +56,7 @@ namespace Nz::ShaderAst
|
||||||
|
|
||||||
StatementPtr IndexRemapperVisitor::Clone(DeclareExternalStatement& node)
|
StatementPtr IndexRemapperVisitor::Clone(DeclareExternalStatement& node)
|
||||||
{
|
{
|
||||||
DeclareExternalStatementPtr clone = static_unique_pointer_cast<DeclareExternalStatement>(AstCloner::Clone(node));
|
DeclareExternalStatementPtr clone = StaticUniquePointerCast<DeclareExternalStatement>(AstCloner::Clone(node));
|
||||||
|
|
||||||
for (auto& extVar : clone->externalVars)
|
for (auto& extVar : clone->externalVars)
|
||||||
{
|
{
|
||||||
|
|
@ -84,7 +71,7 @@ namespace Nz::ShaderAst
|
||||||
|
|
||||||
StatementPtr IndexRemapperVisitor::Clone(DeclareFunctionStatement& node)
|
StatementPtr IndexRemapperVisitor::Clone(DeclareFunctionStatement& node)
|
||||||
{
|
{
|
||||||
DeclareFunctionStatementPtr clone = static_unique_pointer_cast<DeclareFunctionStatement>(AstCloner::Clone(node));
|
DeclareFunctionStatementPtr clone = StaticUniquePointerCast<DeclareFunctionStatement>(AstCloner::Clone(node));
|
||||||
|
|
||||||
assert(clone->funcIndex);
|
assert(clone->funcIndex);
|
||||||
std::size_t newFuncIndex = m_context->callbacks->funcIndexGenerator(*clone->funcIndex);
|
std::size_t newFuncIndex = m_context->callbacks->funcIndexGenerator(*clone->funcIndex);
|
||||||
|
|
@ -110,7 +97,7 @@ namespace Nz::ShaderAst
|
||||||
|
|
||||||
StatementPtr IndexRemapperVisitor::Clone(DeclareStructStatement& node)
|
StatementPtr IndexRemapperVisitor::Clone(DeclareStructStatement& node)
|
||||||
{
|
{
|
||||||
DeclareStructStatementPtr clone = static_unique_pointer_cast<DeclareStructStatement>(AstCloner::Clone(node));
|
DeclareStructStatementPtr clone = StaticUniquePointerCast<DeclareStructStatement>(AstCloner::Clone(node));
|
||||||
|
|
||||||
assert(clone->structIndex);
|
assert(clone->structIndex);
|
||||||
std::size_t newStructIndex = m_context->callbacks->structIndexGenerator(*clone->structIndex);
|
std::size_t newStructIndex = m_context->callbacks->structIndexGenerator(*clone->structIndex);
|
||||||
|
|
@ -125,7 +112,7 @@ namespace Nz::ShaderAst
|
||||||
|
|
||||||
StatementPtr IndexRemapperVisitor::Clone(DeclareVariableStatement& node)
|
StatementPtr IndexRemapperVisitor::Clone(DeclareVariableStatement& node)
|
||||||
{
|
{
|
||||||
DeclareVariableStatementPtr clone = static_unique_pointer_cast<DeclareVariableStatement>(AstCloner::Clone(node));
|
DeclareVariableStatementPtr clone = StaticUniquePointerCast<DeclareVariableStatement>(AstCloner::Clone(node));
|
||||||
|
|
||||||
assert(clone->varIndex);
|
assert(clone->varIndex);
|
||||||
std::size_t newVarIndex = m_context->callbacks->varIndexGenerator(*clone->varIndex);
|
std::size_t newVarIndex = m_context->callbacks->varIndexGenerator(*clone->varIndex);
|
||||||
|
|
@ -139,7 +126,7 @@ namespace Nz::ShaderAst
|
||||||
|
|
||||||
ExpressionPtr IndexRemapperVisitor::Clone(FunctionExpression& node)
|
ExpressionPtr IndexRemapperVisitor::Clone(FunctionExpression& node)
|
||||||
{
|
{
|
||||||
FunctionExpressionPtr clone = static_unique_pointer_cast<FunctionExpression>(AstCloner::Clone(node));
|
FunctionExpressionPtr clone = StaticUniquePointerCast<FunctionExpression>(AstCloner::Clone(node));
|
||||||
|
|
||||||
assert(clone->funcId);
|
assert(clone->funcId);
|
||||||
clone->funcId = Retrieve(m_context->newFuncIndices, clone->funcId);
|
clone->funcId = Retrieve(m_context->newFuncIndices, clone->funcId);
|
||||||
|
|
@ -149,7 +136,7 @@ namespace Nz::ShaderAst
|
||||||
|
|
||||||
ExpressionPtr IndexRemapperVisitor::Clone(StructTypeExpression& node)
|
ExpressionPtr IndexRemapperVisitor::Clone(StructTypeExpression& node)
|
||||||
{
|
{
|
||||||
StructTypeExpressionPtr clone = static_unique_pointer_cast<StructTypeExpression>(AstCloner::Clone(node));
|
StructTypeExpressionPtr clone = StaticUniquePointerCast<StructTypeExpression>(AstCloner::Clone(node));
|
||||||
|
|
||||||
assert(clone->structTypeId);
|
assert(clone->structTypeId);
|
||||||
clone->structTypeId = Retrieve(m_context->newStructIndices, clone->structTypeId);
|
clone->structTypeId = Retrieve(m_context->newStructIndices, clone->structTypeId);
|
||||||
|
|
@ -159,7 +146,7 @@ namespace Nz::ShaderAst
|
||||||
|
|
||||||
ExpressionPtr IndexRemapperVisitor::Clone(VariableValueExpression& node)
|
ExpressionPtr IndexRemapperVisitor::Clone(VariableValueExpression& node)
|
||||||
{
|
{
|
||||||
VariableValueExpressionPtr clone = static_unique_pointer_cast<VariableValueExpression>(AstCloner::Clone(node));
|
VariableValueExpressionPtr clone = StaticUniquePointerCast<VariableValueExpression>(AstCloner::Clone(node));
|
||||||
|
|
||||||
assert(clone->variableId);
|
assert(clone->variableId);
|
||||||
clone->variableId = Retrieve(m_context->newVarIndices, clone->variableId);
|
clone->variableId = Retrieve(m_context->newVarIndices, clone->variableId);
|
||||||
|
|
|
||||||
|
|
@ -9,12 +9,6 @@
|
||||||
#include <catch2/catch.hpp>
|
#include <catch2/catch.hpp>
|
||||||
#include <cctype>
|
#include <cctype>
|
||||||
|
|
||||||
template<typename T, typename U>
|
|
||||||
std::unique_ptr<T> static_unique_pointer_cast(std::unique_ptr<U>&& ptr)
|
|
||||||
{
|
|
||||||
return std::unique_ptr<T>(Nz::SafeCast<T*>(ptr.release()));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PropagateConstantAndExpect(std::string_view sourceCode, std::string_view expectedOptimizedResult)
|
void PropagateConstantAndExpect(std::string_view sourceCode, std::string_view expectedOptimizedResult)
|
||||||
{
|
{
|
||||||
Nz::ShaderAst::ModulePtr shaderModule;
|
Nz::ShaderAst::ModulePtr shaderModule;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue