On Thursday, 21 August 2014 at 13:19:06 UTC, anonymous wrote:
1) How to make mixin inject automatic?
You could use this pattern:
interface Component {}
class ComponentImpl(T) {}
class Sprite : ComponentImpl!Sprite {}
From my view, it's an architectural crutch. %)
You can use `typeof(this)` in Manager:
mixin template Manager()
{
void someMethod(typeof(this) otherInstance) {}
}
Thanks, it works.
...I also have more questions %)
When I make mixin injection in one class, I want auto-injection
in another class. How can I do this?
class Component:GameObject
{
//second injection must be here and must be automatic
};
class Sprite:Component
{
mixin Manager; //first injection must activate second
injection by misterious way
};
mixin template Manager() {}
mixin template ComponentCaster(string type) {} //where 'type' is
a type obtained from Manager
//by typeof(this).stringof. As example, "Sprite".
...compile-time code generation is pain %) I think, it will be 50
times easier if we have built-in compiler script language. Or
just a library that will be able to execute code in compile time.
Sorry for Engrish.
Regards, Alex