DynaMix  1.3.7
A new take on polymorphism in C++
dynamix::bundled_mixins Class Reference

#include <common_mutation_rules.hpp>

Public Member Functions

virtual void apply_to (object_type_mutation &mutation) override
 Applies the rule to a mutation.
 

Private Member Functions

template<typename Mixin >
bool has () const
 Checks if a mixin type is present in the collection.
 
bool has (mixin_id id) const
 
template<typename Mixin >
void add ()
 Adds a mixin type is to the collection.
 
void add (mixin_id id)
 
template<typename Mixin >
void remove ()
 Removes a mixin type from the collection.
 
void remove (mixin_id id)
 
template<typename Feature >
bool implements (const Feature *f) const
 Checks if a feature is implemented by any mixin in the collection.
 
template<typename Feature >
void clear_all_implementing (const Feature *f)
 Clears all mixins implementing a feature from the collection.
 
void rebuild_from_compact_mixins ()
 
void check_valid_mixin (const internal::mixin_type_info &mixin_info)
 
void clear ()
 Removes all elements from the collection.
 
bool empty () const
 Checks if a collection is empty.
 

Private Attributes

internal::available_mixins_bitset _mixins
 
internal::mixin_type_info_vector _compact_mixins
 

Detailed Description

A mutation rule for a bundle of mixins

If active, such rule will cause a mutation that adds one of the bundled mixins, to add all others. And mutations that remove one of them, to remove all others, respectively.

For example, if a, b, and c are bundled exclusive mixins, any mutation that adds, say a, to an object, will automatically add b and c to it. Respectively any mutation which removes, say, c, will also remove a and b.


The documentation for this class was generated from the following file: