|
libpsynth 0.2.1
|
Time-stamp: <2011-03-24 18:37:13 raskolnikov> More...
#include <boost/mpl/eval_if.hpp>#include <boost/mpl/empty.hpp>#include <boost/mpl/lambda.hpp>#include <boost/mpl/transform.hpp>#include <boost/mpl/contains.hpp>#include <boost/mpl/pop_front.hpp>#include <boost/mpl/push_front.hpp>#include <boost/mpl/front.hpp>#include <boost/mpl/reverse.hpp>#include <boost/mpl/inherit_linearly.hpp>#include <boost/mpl/list.hpp>#include <psynth/base/meta.hpp>
Go to the source code of this file.
Time-stamp: <2011-03-24 18:37:13 raskolnikov>
Linearization of class hierarchies. http://192.220.96.201/dylan/linearization-oopsla96.html
All ClsDef parameters have this shape:
struct mycls_def { template <class super>=""> class impl { ... }; typedef mpl::vector<...> bases; };
| #define PSYNTH_C3_CLASS_BEGIN | ( | cls_name, | |
| ... | |||
| ) |
struct cls_name ## _c3 \ { \ typedef ::boost::mpl::transform< ::boost::mpl::list<__VA_ARGS__>, ::boost::mpl::quote1< ::psynth::base::get_c3_type > >::type bases; \ template<class Super> \ class impl : public Super
| #define PSYNTH_C3_CLASS_END | ( | cls_name | ) |
}; \
typedef ::psynth::base::generate_c3_hierarchy<cls_name ## _c3>::type cls_name;
1.7.4