PrevUpHomeNext

Reference

Header <boost/mixin.hpp>
Header <boost/mixin/mixin.hpp>
Header <boost/mixin/allocators.hpp>
Header <boost/mixin/combinators.hpp>
Header <boost/mixin/common_mutation_rules.hpp>
Header <boost/mixin/config.hpp>
Header <boost/mixin/domain.hpp>
Header <boost/mixin/exception.hpp>
Header <boost/mixin/feature.hpp>
Header <boost/mixin/feature_parser.hpp>
Header <boost/mixin/global.hpp>
Header <boost/mixin/message.hpp>
Header <boost/mixin/message_macros.hpp>
Header <boost/mixin/mixin_collection.hpp>
Header <boost/mixin/mixin_type_info.hpp>
Header <boost/mixin/mutation_rule.hpp>
Header <boost/mixin/object.hpp>
Header <boost/mixin/object_mutator.hpp>
Header <boost/mixin/object_type_info.hpp>
Header <boost/mixin/object_type_mutation.hpp>
Header <boost/mixin/object_type_template.hpp>
Header <boost/mixin/same_type_mutator.hpp>
Header <boost/mixin/single_object_mutator.hpp>
Header <boost/mixin/version.hpp>

Header <boost/mixin.hpp>

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

PrevUpHomeNext