10 template <
typename Context, index_t Start = 0, index_t Step = 1>
14 template <
typename Unique>
17 return next<Unique>(0) * Step + Start;
20 template <
unsigned long long>
26 return next<Unique>(0) * Step + Start;
29 template <
typename Unique>
32 return current<Unique>(0) * Step + Start;
35 template <
unsigned long long>
41 return current<Unique>(0) * Step + Start;
48 _Pragma(
"GCC diagnostic push");
49 _Pragma(
"GCC diagnostic ignored \"-Wundefined-internal\"");
50 friend constexpr
bool slot_allocated(slot<I>);
51 _Pragma(
"GCC diagnostic pop");
57 friend constexpr
bool slot_allocated(slot<I>) {
return true; }
66 template <typename Unique, index_t I = 0, bool = slot_allocated(slot<I>())>
69 return next<Unique, I + 1>(0);
74 template <
typename Unique, index_t I = 0>
82 template <typename Unique, index_t I = Start, bool = slot_allocated(slot<I>())>
85 return current<Unique, I + 1>(0);
90 template <
typename Unique, index_t I = Start>
93 static_assert(I != 0,
"You must invoke next() first");
105 ck_tile::static_counter<ck_tile::impl::static_counter_uniq_<__COUNTER__>> {}
106 #define MAKE_SC_WITH(start_, step_) \
107 ck_tile::static_counter<ck_tile::impl::static_counter_uniq_<__COUNTER__>, start_, step_> {}
108 #define NEXT_SC(c_) c_.next<__COUNTER__>()
109 #define NEXT_SCI(c_, static_i_) c_.next<__COUNTER__ + static_i_>()
Definition: cluster_descriptor.hpp:13
int32_t index_t
Definition: integer.hpp:9
const GenericPointer< typename T::ValueType > T2 value
Definition: pointer.h:1350
Definition: static_counter.hpp:101
Definition: static_counter.hpp:12
static constexpr index_t current()
Definition: static_counter.hpp:30
static constexpr index_t next()
Definition: static_counter.hpp:15