Lumiera  0.pre.03
applicable-builder-target-types.hpp File Reference

Go to the source code of this file.


Declaration of all kinds of MObjects to be treated by some "Builder tool".

This is part of Lumiera's visitation mechanism: Individual MObject subclasses may declare by the DEFINE_PROCESSABLE_BY macro to be specifically processable by a builder tool (visitor). On the other hand, any concrete builder tool (visitor) is free to define a treat(Type) function for each of these specific subclasses. If the tool doesn't define such a specific treat(..) function, the next suitable function for a supertype will be used.

Now there needs to be one location where all the specific kinds of treat-able MObjects are declared together (in a typelist). Moreover, we need the full declaration of these classes. This is the catch of using the visitor pattern. Thus, any class to be treated specifically (as opposed to be just treated through a supertype or super interface) has two liabilities:

  • declare the type here in this file, including the header.
actually the ApplicableBuilderTargetTypes template, when used (as a baseclass of any concrete builder tool, causes the generation of the necessary dispatcher tables used by our visitor implementation.
See also

Definition in file applicable-builder-target-types.hpp.


struct  ApplicableBuilderTargetTypes< TOOL >
 Marker used to declare some visiting Tool class to be actually a mobject::builder::BuilderTool and to possibly accept and treat the common selection of types to be handled by any such builder tool. More...


typedef Types< session::Root, session::Clip, session::Effect, session::Binding, session::AbstractMO >::List BuilderTargetTypes


 Proc-Layer implementation namespace root.
 Media-Objects, edit operations and high-level session.
 Namespace of the Builder, transforming high-level into low-level.