#include "compilation/containers.h"

using namespace std;
using namespace llvm;
using namespace xreate;
using namespace xreate::containers;

Iterator*
Iterator::create(xreate::compilation::Context context, const xreate::Symbol& var){

    const Implementation& data = Query::queryImplementation(var);

    switch(data.impl){
        case ON_THE_FLY:
            return new IteratorForward<ON_THE_FLY>(context, var, data.extract<ON_THE_FLY>());

        default: assert(true);
    }

    assert(false && "Unknown declaration");
    return nullptr;
}
