Shader/ShaderBuild: Fix ambiguity for AccessMember

This commit is contained in:
Jérôme Leclercq 2021-05-29 00:56:04 +02:00
parent a90844f0dd
commit 2f8a82ed05
2 changed files with 7 additions and 2 deletions

View File

@ -17,10 +17,14 @@ namespace Nz::ShaderBuilder
{ {
namespace Impl namespace Impl
{ {
struct AccessIndex
{
inline std::unique_ptr<ShaderAst::AccessMemberIndexExpression> operator()(ShaderAst::ExpressionPtr structExpr, std::vector<std::size_t> memberIndices) const;
};
struct AccessMember struct AccessMember
{ {
inline std::unique_ptr<ShaderAst::AccessMemberIdentifierExpression> operator()(ShaderAst::ExpressionPtr structExpr, std::vector<std::string> memberIdentifiers) const; inline std::unique_ptr<ShaderAst::AccessMemberIdentifierExpression> operator()(ShaderAst::ExpressionPtr structExpr, std::vector<std::string> memberIdentifiers) const;
inline std::unique_ptr<ShaderAst::AccessMemberIndexExpression> operator()(ShaderAst::ExpressionPtr structExpr, std::vector<std::size_t> memberIndices) const;
}; };
struct Assign struct Assign
@ -135,6 +139,7 @@ namespace Nz::ShaderBuilder
}; };
} }
constexpr Impl::AccessIndex AccessIndex;
constexpr Impl::AccessMember AccessMember; constexpr Impl::AccessMember AccessMember;
constexpr Impl::Assign Assign; constexpr Impl::Assign Assign;
constexpr Impl::Binary Binary; constexpr Impl::Binary Binary;

View File

@ -16,7 +16,7 @@ namespace Nz::ShaderBuilder
return accessMemberNode; return accessMemberNode;
} }
inline std::unique_ptr<ShaderAst::AccessMemberIndexExpression> Impl::AccessMember::operator()(ShaderAst::ExpressionPtr structExpr, std::vector<std::size_t> memberIndices) const inline std::unique_ptr<ShaderAst::AccessMemberIndexExpression> Impl::AccessIndex::operator()(ShaderAst::ExpressionPtr structExpr, std::vector<std::size_t> memberIndices) const
{ {
auto accessMemberNode = std::make_unique<ShaderAst::AccessMemberIndexExpression>(); auto accessMemberNode = std::make_unique<ShaderAst::AccessMemberIndexExpression>();
accessMemberNode->structExpr = std::move(structExpr); accessMemberNode->structExpr = std::move(structExpr);