module dcompute.driver.util;

import std.traits;
import std.meta;
import ldc.dcompute : Pointer;
import dcompute.driver.ocl.buffer : Buffer;
template HostArgsOf(F)
{
    import std.traits;
    // TODO substitute Pointer!(n,T) with Buffer!T, Image etc.
    template toBuffer(T)
    {
        static if(is(T : Pointer!(n,U), uint n,U))
            alias toBuffer = Buffer!U;
        else
            alias toBuffer = T;
    }
    alias HostArgsOf = staticMap!(toBuffer,Parameters!F);
}