/*
 *  iterator.c - an iterator interface type
 *  Copyright (C) 2010 Martin Broadhurst
 *  www.martinbroadhurst.com
 */

#include <stdlib.h>

#include <iterator.h>

MBiterator *MBiterator_create(void *body, MBgetfn getfn, MBdeletefn deletefn)
{
    MBiterator *it = malloc(sizeof(MBiterator));
    if (it) {
        it->body = body;
        it->getfn = getfn;
        it->deletefn = deletefn;
    }

    return it;
}

void MBiterator_delete(MBiterator *it)
{
    if (it) {
        if (it->deletefn) {
            it->deletefn(it->body);
        }
        free(it);
    }
}

void *MBiterator_get(MBiterator *it)
{
    return it->getfn(it->body);
}