The main include file of the library. Includes all required files (including some that could become optional)
Functions and macros associated with mixin declaration, definition, and usage.
BOOST_DECLARE_EXPORTED_MIXIN(export, mixin_type) BOOST_DECLARE_MIXIN(mixin_type) BOOST_DEFINE_MIXIN(mixin_type, mixin_features) bm_this
namespace boost { namespace mixin { template<typename Mixin> object * object_of(Mixin *); template<typename Mixin> const object * object_of(const Mixin *); namespace internal { } } }
Allocator classes.
namespace boost { namespace mixin { class global_allocator; class mixin_allocator; // Feature list entry function for custom mixin allocators. template<typename CusomAllocator> mixin_allocator & allocator(); namespace internal { class default_allocator; } } }
Common multicast combinator classes.
namespace boost { namespace mixin { namespace combinators { template<typename MessageReturnType = bool> class boolean_and; template<typename MessageReturnType = bool> class boolean_or; template<typename MessageReturnType> class sum; } } }
Common mutation rules classes.
namespace boost { namespace mixin { class mutually_exclusive_mixins; template<typename Mixin> class mandatory_mixin; template<typename Mixin> class deprecated_mixin; template<typename SourceMixin, typename TargetMixin> class substitute_mixin; namespace internal { } } }
The library's configuration file.
BOOST_MIXIN_USE_TYPEID BOOST_MIXIN_DEBUG BOOST_MIXIN_USING_CXX11 BOOST_MIXIN_MAX_MIXINS BOOST_MIXIN_MAX_MESSAGES BOOST_MIXIN_USE_EXCEPTIONS BOOST_MIXIN_API
Domain related classes and functions.
namespace boost { namespace mixin { // Sets an global allocator for all mixins. void BOOST_MIXIN_API set_global_allocator(global_allocator * allocator); namespace internal { struct hash_avaliable_mixins_bitset; class domain; } } }
The library's exceptions.
BOOST_MIXIN_THROW_UNLESS(test, exception) BOOST_MIXIN_MSG_THROW_UNLESS(test, exception)
namespace boost { namespace mixin { class exception; class bad_mutation; class bad_mutation_source; class bad_message_call; class unicast_clash; } }
Types related to mixin features.
namespace boost { namespace mixin { struct no_features_t; class feature; BOOST_MIXIN_API no_features_t * none; static const feature_id INVALID_FEATURE_ID; namespace internal { template<typename Feature> struct feature_instance; } } }
Defines the internal class used to parse a mixin's features.
namespace boost { namespace mixin { namespace internal { class feature_registrator; template<typename Mixin> class feature_parser; } } }
Defines global internal functions, classes, and type definitions.
BOOST_MIXIN_CXX11_NAMESPACE boost_mixin_internal
namespace boost { namespace mixin { typedef size_t mixin_id; typedef size_t feature_id; namespace internal { class noncopyable; typedef std::vector< const mixin_type_info * > mixin_type_info_vector; typedef std::bitset< BOOST_MIXIN_MAX_MIXINS > available_mixins_bitset; template<typename Container, typename Elem> bool has_elem(const Container & c, const Elem & e); template<typename T> bool is_sorted(const std::vector< T > & v); void zero_memory(void * mem, size_t size); BOOST_MIXIN_API available_mixins_bitset build_available_mixins_from(const mixin_type_info_vector & mixins); } } }
Defines message related operations for the feature list.
namespace boost { namespace mixin { template<typename Message> internal::message_priority< Message > priority(int p, Message *); namespace internal { struct message_feature_tag; struct message_t; template<typename Message> struct message_priority; struct message_for_mixin; typedef void(* func_ptr; } } }
Macros used to declare and define messages.
BOOST_MIXIN_FWD(arg_type, arg) BOOST_MIXIN_MESSAGE_N(return_type, message, args) BOOST_MIXIN_DEFINE_MESSAGE(message_name)
namespace boost { namespace mixin { class mixin_collection; } }
Defines the internal classes that describe the information about a mixin - features and message data, type name, size, alignment, etc.
namespace boost { namespace mixin { namespace internal { class mixin_type_info; template<typename Mixin> struct mixin_type_info_instance; typedef void(* mixin_constructor_proc; typedef void(* mixin_destructor_proc; static const mixin_id INVALID_MIXIN_ID; template<typename Mixin> void call_mixin_constructor(void * memory); template<typename Mixin> void call_mixin_destructor(void * memory); } } }
Functions and classes related to mutation rules.
namespace boost { namespace mixin { class mutation_rule; void BOOST_MIXIN_API add_new_mutation_rule(mutation_rule *); } }
namespace boost { namespace mixin { class object; namespace internal { } } }
Defines an internal base class, that is a parent to various concrete types that deal with object mutation.
namespace boost { namespace mixin { namespace internal { class object_mutator; } } }
Defines internal classes that contain the type information for an object - mixins, implemented features, etc.
namespace boost { namespace mixin { namespace internal { class object_type_info; class mixin_data_in_object; } } }
namespace boost { namespace mixin { class object_type_mutation; namespace internal { } } }
namespace boost { namespace mixin { class object_type_template; namespace internal { } } }
namespace boost { namespace mixin { class same_type_mutator; } }
namespace boost { namespace mixin { class single_object_mutator; typedef single_object_mutator mutate; } }
Optional header file, which contains library version info.
BOOST_MIXIN_VERSION_MAJOR BOOST_MIXIN_VERSION_MINOR BOOST_MIXIN_VERSION_SUB_MINOR BOOST_MIXIN_VERSION