[add] Added ElementProgramSet.
This commit is contained in:
36
sjplayer/src/sjplayer/ElementProgramSet.d
Normal file
36
sjplayer/src/sjplayer/ElementProgramSet.d
Normal file
@@ -0,0 +1,36 @@
|
||||
/// License: MIT
|
||||
module sjplayer.ElementProgramSet;
|
||||
|
||||
import std.meta,
|
||||
std.typecons;
|
||||
|
||||
import sjplayer.CircleElement;
|
||||
|
||||
///
|
||||
class ElementProgramSet {
|
||||
public:
|
||||
///
|
||||
alias ElementPrograms = Tuple!(CircleElementProgram);
|
||||
|
||||
///
|
||||
this() {
|
||||
foreach (ref program; programs_) {
|
||||
program = new typeof(program);
|
||||
}
|
||||
}
|
||||
~this() {
|
||||
foreach (program; programs_) {
|
||||
program.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
T Get(T)() out (r; r) {
|
||||
enum index = staticIndexOf!(T, ElementPrograms.Types);
|
||||
static assert(index >= 0);
|
||||
return programs_[index];
|
||||
}
|
||||
|
||||
private:
|
||||
ElementPrograms programs_;
|
||||
}
|
Reference in New Issue
Block a user