internal static extern CLFFTStatus EnqueueTransform(
     CLFFTPlanHandle plHandle,
     CLFFTDirection dir,
     UInt32 numQueuesAndEvents,
     [MarshalAs(UnmanagedType.LPArray)] cl_command_queue[] commQueues,
     UInt32 numWaitEvents,
     [MarshalAs(UnmanagedType.LPArray)] cl_event[] waitEvents,
     [Out, MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] cl_event[] outEvents,
     [MarshalAs(UnmanagedType.LPArray)] cl_mem[] inputBuffers,
     [MarshalAs(UnmanagedType.LPArray)] cl_mem[] outputBuffers,
     cl_mem tmpBuffer
     );
 internal static extern CLFFTStatus SetPlanDistance(CLFFTPlanHandle plHandle, UInt64 iDist, UInt64 oDist);
 internal static extern CLFFTStatus SetPlanOutStride(CLFFTPlanHandle plHandle, CLFFTDim dim, [MarshalAs(UnmanagedType.LPArray)] UInt64[] clStrides);
 internal static extern CLFFTStatus SetPlanDim(CLFFTPlanHandle plHandle, CLFFTDim dim);
 internal static extern CLFFTStatus GetPlanDim(CLFFTPlanHandle plHandle, out CLFFTDim dim, out UInt32 size);
 internal static extern CLFFTStatus SetPlanBatchSize(CLFFTPlanHandle plHandle, UInt64 batchSize);
 internal static extern CLFFTStatus SetPlanScale(CLFFTPlanHandle plHandle, CLFFTDirection dir, float scale);
 internal static extern CLFFTStatus GetTmpBufSize(CLFFTPlanHandle plHandle, out UInt64 size);
 internal static extern CLFFTStatus GetPlanContext(CLFFTPlanHandle plHandle, out cl_context context);
 internal static extern CLFFTStatus DestroyPlan(ref CLFFTPlanHandle plHandle);
 internal static extern CLFFTStatus BakePlan(
     CLFFTPlanHandle plHandle,
     UInt32 numQueues,
     [MarshalAs(UnmanagedType.LPArray)] cl_command_queue[] commQueueFFT,
     CLFFTCallback callback,
     IntPtr userData);
 internal static extern CLFFTStatus CopyPlan(out CLFFTPlanHandle outPlanHandle, cl_context newContext, CLFFTPlanHandle inPlanHandle);
 internal static extern CLFFTStatus CreateDefaultPlan(out CLFFTPlanHandle plHandle, cl_context context, CLFFTDim dim, UInt64[] clLengths);
 internal static extern CLFFTStatus SetLayout(CLFFTPlanHandle plHandle, CLFFTLayout iLayout, CLFFTLayout oLayout);
 internal static extern CLFFTStatus SetPlanPrecision(CLFFTPlanHandle plHandle, CLFFTPrecision precision);
 internal static extern CLFFTStatus GetResultLocation(CLFFTPlanHandle plHandle, out CLFFTResultLocation placeness);
 internal static extern CLFFTStatus SetPlanTransposeResult(CLFFTPlanHandle plHandle, CLFFTResultTransposed placeness);