Skip to content

Commit c47a91b

Browse files
committed
reducing code-size for c++17
1 parent 238dd98 commit c47a91b

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

include/proto_activities.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,8 +453,15 @@ namespace proto_activities {
453453
template <typename T>
454454
auto invoke_resume(T* frame) -> typename std::enable_if<!_pa_has_field(T, _pa_susres)>::type {}
455455
}
456+
#if __cplusplus >= 201703L
457+
#define _pa_susres_suspend(ty, alias) \
458+
if constexpr (_pa_has_field(ty, _pa_susres)) { proto_activities::invoke_suspend<ty>(_pa_inst_ptr(alias)); }
459+
#define _pa_susres_resume(ty, alias) \
460+
if constexpr (_pa_has_field(ty, _pa_susres)) { proto_activities::invoke_resume<ty>(_pa_inst_ptr(alias)); }
461+
#else
456462
#define _pa_susres_suspend(ty, alias) proto_activities::invoke_suspend<ty>(_pa_inst_ptr(alias));
457463
#define _pa_susres_resume(ty, alias) proto_activities::invoke_resume<ty>(_pa_inst_ptr(alias));
464+
#endif
458465

459466
#define pa_susres_res proto_activities::SusRes _pa_susres{};
460467
#define pa_suspend pa_self._pa_susres.sus_thunk = [&]()
@@ -469,7 +476,11 @@ namespace proto_activities {
469476
template <typename T>
470477
auto invoke_enter(T& frame) -> typename std::enable_if<!_pa_has_field(T, _pa_enter)>::type {}
471478
}
479+
#if __cplusplus >= 201703L
480+
#define _pa_enter_invoke(ty) if constexpr (_pa_has_field(ty, _pa_enter)) { proto_activities::invoke_enter<ty>(pa_self); }
481+
#else
472482
#define _pa_enter_invoke(ty) proto_activities::invoke_enter<ty>(pa_self);
483+
#endif
473484

474485
#define pa_enter_res proto_activities::Enter _pa_enter{};
475486
#define pa_enter pa_self._pa_enter = [&]()

0 commit comments

Comments
 (0)