From cae2725cc0abb9cea23ebbf72c990a86f802ab4b Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Sun, 7 Feb 2021 23:48:44 -0300 Subject: [PATCH] Add overload for decorating with enums Skip an explicit cast on the caller, allowing code like: Decorate(some_op, spv::Decoration::BuiltIn, spv::BuiltIn::WorkgroupId) --- include/sirit/sirit.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/sirit/sirit.h b/include/sirit/sirit.h index d7dfc78..781f84a 100644 --- a/include/sirit/sirit.h +++ b/include/sirit/sirit.h @@ -368,6 +368,13 @@ public: return Decorate(target, decoration, std::span{stack_literals}); } + /// Add a decoration to target. + template + requires std::is_enum_v + Id Decorate(Id target, spv::Decoration decoration, T literal) { + return Decorate(target, decoration, static_cast(literal)); + } + Id MemberDecorate(Id structure_type, Literal member, spv::Decoration decoration, std::span literals = {});