Boost logo

Boost :

Subject: [boost] [Mixin] Some comments
From: Vicente J. Botet Escriba (vicente.botet_at_[hidden])
Date: 2015-01-10 14:46:42


Hi,

First of all, I want to say that I like your library too much. It is
quite close to a library I was working one EntityRoleSubject. You
library could be extended to to take in account the subjective
programming paradigm (see below).

I have some comments/remarks/questions:

* I have some doubts about the name mixin. What a mixin has more than a
facet or an aspect? Mixins in C++ have a specific mean in the context of
CRTP. Why have you chosen the mixin name?

* The construction of the mixins in the tutorial is done always with the
default constructor. Can we do emplace construction? How can you ensure
the invariants of some mixing classes?

* The priority of the messages doens't compose well. The user needs to
have a global view of the application so that it can assign the correct
priority. I have not a better suggestion, but I think that this issue
would need more insight.

* Respect to subjective programming: it would be great to be able to
create subject from an entity so that only the mixins of the subject
would play when a reference to this subject is addressed.

subject<Mix_1, .... Mix_n> s (o);

o.get<Mix_k>() works as expected.

o.get<Other>() compile fails if not equal to any Mix_k

* The macro bm_this :(

* I would like to see what is behind the scenes the different macros in
an implementation section.

* The entity-mixin relation is not recursive, that is, a mixin can not
have associated mixins, or can them?

* Can a mixin D inherit from another mixin B? Could the mixing D be
retrieved when getting the mixing B?

mutate(o).add<D>;

o.get<B>()->f() // f been a virtual function on B?

* The example of the mixin headphones_player show that the play()
implementation makes use of get_sound() provided by other mixins. This
dependency is not explicit. I would expect to be able to say that
headphones_player depends on another mixing providing the get_sound message.

That's all for now.I will come back later when i will read more.

A BTW, the reference documentation doesn't contain the add<M>/get<M>
mutate functions?

Best,
Vicente


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk