26 public std::bitset<ComponentsList::size + TagsList::size + 1>
28 using Combined = EC::Meta::Combine<ComponentsList, TagsList>;
32 (*this)[Combined::size] =
false;
35 template <
typename Component>
36 constexpr auto getComponentBit()
const
39 return (*
this)[index];
42 template <
typename Component>
43 constexpr auto getComponentBit()
46 return (*
this)[index];
49 template <
typename Tag>
50 constexpr auto getTagBit()
const
53 return (*
this)[index];
56 template <
typename Tag>
57 constexpr auto getTagBit()
60 return (*
this)[index];
63 template <
typename Contents>
68 EC::Meta::forEach<Contents>([&bitset] (
auto t) {
69 if(EC::Meta::Contains<
decltype(t), Combined>::value)
79 template <
typename IntegralType>
80 auto getCombinedBit(
const IntegralType& i) {
81 static_assert(std::is_integral<IntegralType>::value,
82 "Parameter must be an integral type");
83 if(i >= Combined::size || i < 0) {
84 return (*
this)[Combined::size];
90 template <
typename IntegralType>
91 auto getCombinedBit(
const IntegralType& i)
const {
92 static_assert(std::is_integral<IntegralType>::value,
93 "Parameter must be an integral type");
94 if(i >= Combined::size || i < 0) {
95 return (*
this)[Combined::size];