mixin_type_info_instance<Mixin>::mixin_type_info_instance() { // register the mixin within its domain get_domain_for_tag<typename _boost_mixin_domain_for_type<Mixin>::tag>(). // we use the function to get the type info, to guarantee that an instantiation of the template // from another module won't override if template register_mixin_type<Mixin>(_boost_get_mixin_type_info((Mixin*)nullptr)); }
mixin_type_info_instance<Mixin>::mixin_type_info_instance() { // register the mixin int the domain domain::instance(). // we use the function to get the type info, to guarantee that an instantiation of the template // from another module won't override if template register_mixin_type<Mixin>(_boost_get_mixin_type_info((Mixin*)nullptr)); }
const Mixin* get() const { const internal::mixin_type_info& info = _boost_get_mixin_type_info((Mixin*)nullptr); // intentionally disregarding the actual info return reinterpret_cast<const Mixin*>(internal_get_mixin(info.id)); }
bool has() const { const internal::mixin_type_info& info = _boost_get_mixin_type_info((Mixin*)nullptr); // intentionally disregarding the actual info return internal_has_mixin(info.id); }
void remove() { const internal::mixin_type_info& info = _boost_get_mixin_type_info((Mixin*)nullptr); remove(info.id); }
void add() { const internal::mixin_type_info& info = _boost_get_mixin_type_info((Mixin*)nullptr); check_valid_mixin(info); add(info.id); }
bool has() const { const internal::mixin_type_info& info = _boost_get_mixin_type_info((Mixin*)nullptr); return has(info.id); }