| 
    DynaMix
    1.3.7
    
   A new take on polymorphism in C++ 
   | 
 
#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 | 
A mutation rule for mutually exclusive mixins.
If active, such rule will cause a mutation that adds one of the mutually exclusive mixins, to remove all others.
For example, if a, b, and c are mutually exclusive mixins, any mutation that adds, say a, to an object, will automatically remove b and c from it.