module mage.gen;

// Built-in generators
public import mage.gen.vs2013;

import mage.target;

interface IGenerator
{
  void generate(ITarget target);
}

// T = Actual generator type.
private template GeneratorWrapper(T)
{
  class GeneratorWrapper : IGenerator
  {
    T m_impl;

    this(T impl) {
      m_impl = impl;
    }

    override void generate(ITarget target) {
      m_impl.generate(target);
    }
  }
}

IGenerator[string] generatorRegistry;

void registerGenerator(T)(in string name, T generator) {
  generatorRegistry[name] = new GeneratorWrapper!T(generator);
}