Lumiera  0.pre.03
generator-test.cpp File Reference

Go to the source code of this file.


what are we doing here??

the following test composes both an interface and the corresponding implementation by instantiating "building block" templates over a collection of types. The resulting class ends up inheriting a virtual function instantiated for each of the types in the list. (remember: normally the number and signature of all virtual functions need to be absolutely fixed in the class definition)

See also
lumiera::query::ConfigRules a real world usage example

Definition in file generator-test.cpp.

#include "lib/test/run.hpp"
#include "lib/format-string.hpp"
#include "lib/meta/generator.hpp"
#include <iostream>
#include <string>


struct  BaseImpl
struct  Block< I >
 template for generating lots of different test types More...
class  DoIt< X, BASE >
 Use this building block for chaining corresponding implementation classes. More...
class  TakeIt< X >
 Use this building block for assembling an abstract interface. More...
class  TypeListGenerator_test


typedef InstantiateChained< TheTypes, DoIt, BaseImpl > NumberBabbler
typedef InstantiateForEach< TheTypes, TakeIt > TheInterface
typedef Types< Block< 1 >, Block< 2 >, Block< 3 >, Block< 5 >, Block< 8 >, Block< 13 > >::List TheTypes


 LAUNCHER (TypeListGenerator_test, "unit common")
 Register this test class... More...


 Implementation namespace for support and library code.