// GENERATED FILE - DO NOT EDIT.
// Generated by generate_entry_points.py using data from cl.xml.
//
// Copyright 2020 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// entry_points_cl_autogen.cpp:
//   Defines the CL entry points.

#include "entry_points_cl_autogen.h"

extern "C" {

// CL 1.0
cl_int CL_API_ENTRY CL_GetPlatformIDs(cl_uint num_entries,
                                      cl_platform_id *platforms,
                                      cl_uint *num_platforms)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetPlatformIDs, "num_entries = %u, platforms = 0x%016" PRIxPTR ", num_platforms =
    // 0x%016" PRIxPTR "", num_entries, (uintptr_t)platforms, (uintptr_t)num_platforms);

    // TODO: GetPlatformIDs

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetPlatformInfo(cl_platform_id platform,
                                       cl_platform_info param_name,
                                       size_t param_value_size,
                                       void *param_value,
                                       size_t *param_value_size_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetPlatformInfo, "platform = 0x%016" PRIxPTR ", param_name = %u, param_value_size =
    // %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
    // (uintptr_t)platform, param_name, param_value_size, (uintptr_t)param_value,
    // (uintptr_t)param_value_size_ret);

    // TODO: GetPlatformInfo

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetDeviceIDs(cl_platform_id platform,
                                    cl_device_type device_type,
                                    cl_uint num_entries,
                                    cl_device_id *devices,
                                    cl_uint *num_devices)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetDeviceIDs, "platform = 0x%016" PRIxPTR ", device_type = %u, num_entries = %u,
    // devices = 0x%016" PRIxPTR ", num_devices = 0x%016" PRIxPTR "", (uintptr_t)platform,
    // device_type, num_entries, (uintptr_t)devices, (uintptr_t)num_devices);

    // TODO: GetDeviceIDs

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetDeviceInfo(cl_device_id device,
                                     cl_device_info param_name,
                                     size_t param_value_size,
                                     void *param_value,
                                     size_t *param_value_size_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetDeviceInfo, "device = 0x%016" PRIxPTR ", param_name = %u, param_value_size = %u,
    // param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
    // (uintptr_t)device, param_name, param_value_size, (uintptr_t)param_value,
    // (uintptr_t)param_value_size_ret);

    // TODO: GetDeviceInfo

    return (cl_int)0;
}

cl_context CL_API_ENTRY CL_CreateContext(const cl_context_properties *properties,
                                         cl_uint num_devices,
                                         const cl_device_id *devices,
                                         void(CL_CALLBACK *pfn_notify)(const char *errinfo,
                                                                       const void *private_info,
                                                                       size_t cb,
                                                                       void *user_data),
                                         void *user_data,
                                         cl_int *errcode_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(CreateContext, "properties = 0x%016" PRIxPTR ", num_devices = %u, devices = 0x%016"
    // PRIxPTR ", user_data) = 0x%016" PRIxPTR ", user_data = 0x%016" PRIxPTR ", errcode_ret =
    // 0x%016" PRIxPTR "", (uintptr_t)properties, num_devices, (uintptr_t)devices,
    // (uintptr_t)user_data), (uintptr_t)user_data, (uintptr_t)errcode_ret);

    // TODO: CreateContext

    return (cl_context)0;
}

cl_context CL_API_ENTRY
CL_CreateContextFromType(const cl_context_properties *properties,
                         cl_device_type device_type,
                         void(CL_CALLBACK *pfn_notify)(const char *errinfo,
                                                       const void *private_info,
                                                       size_t cb,
                                                       void *user_data),
                         void *user_data,
                         cl_int *errcode_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(CreateContextFromType, "properties = 0x%016" PRIxPTR ", device_type = %u, user_data)
    // = 0x%016" PRIxPTR ", user_data = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",
    // (uintptr_t)properties, device_type, (uintptr_t)user_data), (uintptr_t)user_data,
    // (uintptr_t)errcode_ret);

    // TODO: CreateContextFromType

    return (cl_context)0;
}

cl_int CL_API_ENTRY CL_RetainContext(cl_context context)
{
    // TODO: CL_EVENT
    // CL_EVENT(RetainContext, "context = 0x%016" PRIxPTR "", (uintptr_t)context);

    // TODO: RetainContext

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_ReleaseContext(cl_context context)
{
    // TODO: CL_EVENT
    // CL_EVENT(ReleaseContext, "context = 0x%016" PRIxPTR "", (uintptr_t)context);

    // TODO: ReleaseContext

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetContextInfo(cl_context context,
                                      cl_context_info param_name,
                                      size_t param_value_size,
                                      void *param_value,
                                      size_t *param_value_size_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetContextInfo, "context = 0x%016" PRIxPTR ", param_name = %u, param_value_size =
    // %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
    // (uintptr_t)context, param_name, param_value_size, (uintptr_t)param_value,
    // (uintptr_t)param_value_size_ret);

    // TODO: GetContextInfo

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_RetainCommandQueue(cl_command_queue command_queue)
{
    // TODO: CL_EVENT
    // CL_EVENT(RetainCommandQueue, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);

    // TODO: RetainCommandQueue

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_ReleaseCommandQueue(cl_command_queue command_queue)
{
    // TODO: CL_EVENT
    // CL_EVENT(ReleaseCommandQueue, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);

    // TODO: ReleaseCommandQueue

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetCommandQueueInfo(cl_command_queue command_queue,
                                           cl_command_queue_info param_name,
                                           size_t param_value_size,
                                           void *param_value,
                                           size_t *param_value_size_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetCommandQueueInfo, "command_queue = 0x%016" PRIxPTR ", param_name = %u,
    // param_value_size = %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016"
    // PRIxPTR "", (uintptr_t)command_queue, param_name, param_value_size, (uintptr_t)param_value,
    // (uintptr_t)param_value_size_ret);

    // TODO: GetCommandQueueInfo

    return (cl_int)0;
}

cl_mem CL_API_ENTRY CL_CreateBuffer(cl_context context,
                                    cl_mem_flags flags,
                                    size_t size,
                                    void *host_ptr,
                                    cl_int *errcode_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(CreateBuffer, "context = 0x%016" PRIxPTR ", flags = %u, size = %u, host_ptr =
    // 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)context, flags, size,
    // (uintptr_t)host_ptr, (uintptr_t)errcode_ret);

    // TODO: CreateBuffer

    return (cl_mem)0;
}

cl_int CL_API_ENTRY CL_RetainMemObject(cl_mem memobj)
{
    // TODO: CL_EVENT
    // CL_EVENT(RetainMemObject, "memobj = 0x%016" PRIxPTR "", (uintptr_t)memobj);

    // TODO: RetainMemObject

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_ReleaseMemObject(cl_mem memobj)
{
    // TODO: CL_EVENT
    // CL_EVENT(ReleaseMemObject, "memobj = 0x%016" PRIxPTR "", (uintptr_t)memobj);

    // TODO: ReleaseMemObject

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetSupportedImageFormats(cl_context context,
                                                cl_mem_flags flags,
                                                cl_mem_object_type image_type,
                                                cl_uint num_entries,
                                                cl_image_format *image_formats,
                                                cl_uint *num_image_formats)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetSupportedImageFormats, "context = 0x%016" PRIxPTR ", flags = %u, image_type = %u,
    // num_entries = %u, image_formats = 0x%016" PRIxPTR ", num_image_formats = 0x%016" PRIxPTR "",
    // (uintptr_t)context, flags, image_type, num_entries, (uintptr_t)image_formats,
    // (uintptr_t)num_image_formats);

    // TODO: GetSupportedImageFormats

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetMemObjectInfo(cl_mem memobj,
                                        cl_mem_info param_name,
                                        size_t param_value_size,
                                        void *param_value,
                                        size_t *param_value_size_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetMemObjectInfo, "memobj = 0x%016" PRIxPTR ", param_name = %u, param_value_size =
    // %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
    // (uintptr_t)memobj, param_name, param_value_size, (uintptr_t)param_value,
    // (uintptr_t)param_value_size_ret);

    // TODO: GetMemObjectInfo

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetImageInfo(cl_mem image,
                                    cl_image_info param_name,
                                    size_t param_value_size,
                                    void *param_value,
                                    size_t *param_value_size_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetImageInfo, "image = 0x%016" PRIxPTR ", param_name = %u, param_value_size = %u,
    // param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "", (uintptr_t)image,
    // param_name, param_value_size, (uintptr_t)param_value, (uintptr_t)param_value_size_ret);

    // TODO: GetImageInfo

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_RetainSampler(cl_sampler sampler)
{
    // TODO: CL_EVENT
    // CL_EVENT(RetainSampler, "sampler = 0x%016" PRIxPTR "", (uintptr_t)sampler);

    // TODO: RetainSampler

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_ReleaseSampler(cl_sampler sampler)
{
    // TODO: CL_EVENT
    // CL_EVENT(ReleaseSampler, "sampler = 0x%016" PRIxPTR "", (uintptr_t)sampler);

    // TODO: ReleaseSampler

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetSamplerInfo(cl_sampler sampler,
                                      cl_sampler_info param_name,
                                      size_t param_value_size,
                                      void *param_value,
                                      size_t *param_value_size_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetSamplerInfo, "sampler = 0x%016" PRIxPTR ", param_name = %u, param_value_size =
    // %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
    // (uintptr_t)sampler, param_name, param_value_size, (uintptr_t)param_value,
    // (uintptr_t)param_value_size_ret);

    // TODO: GetSamplerInfo

    return (cl_int)0;
}

cl_program CL_API_ENTRY CL_CreateProgramWithSource(cl_context context,
                                                   cl_uint count,
                                                   const char **strings,
                                                   const size_t *lengths,
                                                   cl_int *errcode_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(CreateProgramWithSource, "context = 0x%016" PRIxPTR ", count = %u, strings = 0x%016"
    // PRIxPTR ", lengths = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)context,
    // count, (uintptr_t)strings, (uintptr_t)lengths, (uintptr_t)errcode_ret);

    // TODO: CreateProgramWithSource

    return (cl_program)0;
}

cl_program CL_API_ENTRY CL_CreateProgramWithBinary(cl_context context,
                                                   cl_uint num_devices,
                                                   const cl_device_id *device_list,
                                                   const size_t *lengths,
                                                   const unsigned char **binaries,
                                                   cl_int *binary_status,
                                                   cl_int *errcode_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(CreateProgramWithBinary, "context = 0x%016" PRIxPTR ", num_devices = %u, device_list
    // = 0x%016" PRIxPTR ", lengths = 0x%016" PRIxPTR ", binaries = 0x%016" PRIxPTR ", binary_status
    // = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)context, num_devices,
    // (uintptr_t)device_list, (uintptr_t)lengths, (uintptr_t)binaries, (uintptr_t)binary_status,
    // (uintptr_t)errcode_ret);

    // TODO: CreateProgramWithBinary

    return (cl_program)0;
}

cl_int CL_API_ENTRY CL_RetainProgram(cl_program program)
{
    // TODO: CL_EVENT
    // CL_EVENT(RetainProgram, "program = 0x%016" PRIxPTR "", (uintptr_t)program);

    // TODO: RetainProgram

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_ReleaseProgram(cl_program program)
{
    // TODO: CL_EVENT
    // CL_EVENT(ReleaseProgram, "program = 0x%016" PRIxPTR "", (uintptr_t)program);

    // TODO: ReleaseProgram

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_BuildProgram(cl_program program,
                                    cl_uint num_devices,
                                    const cl_device_id *device_list,
                                    const char *options,
                                    void(CL_CALLBACK *pfn_notify)(cl_program program,
                                                                  void *user_data),
                                    void *user_data)
{
    // TODO: CL_EVENT
    // CL_EVENT(BuildProgram, "program = 0x%016" PRIxPTR ", num_devices = %u, device_list = 0x%016"
    // PRIxPTR ", options = 0x%016" PRIxPTR ", user_data) = 0x%016" PRIxPTR ", user_data = 0x%016"
    // PRIxPTR "", (uintptr_t)program, num_devices, (uintptr_t)device_list, (uintptr_t)options,
    // (uintptr_t)user_data), (uintptr_t)user_data);

    // TODO: BuildProgram

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetProgramInfo(cl_program program,
                                      cl_program_info param_name,
                                      size_t param_value_size,
                                      void *param_value,
                                      size_t *param_value_size_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetProgramInfo, "program = 0x%016" PRIxPTR ", param_name = %u, param_value_size =
    // %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
    // (uintptr_t)program, param_name, param_value_size, (uintptr_t)param_value,
    // (uintptr_t)param_value_size_ret);

    // TODO: GetProgramInfo

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetProgramBuildInfo(cl_program program,
                                           cl_device_id device,
                                           cl_program_build_info param_name,
                                           size_t param_value_size,
                                           void *param_value,
                                           size_t *param_value_size_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetProgramBuildInfo, "program = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR ",
    // param_name = %u, param_value_size = %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret
    // = 0x%016" PRIxPTR "", (uintptr_t)program, (uintptr_t)device, param_name, param_value_size,
    // (uintptr_t)param_value, (uintptr_t)param_value_size_ret);

    // TODO: GetProgramBuildInfo

    return (cl_int)0;
}

cl_kernel CL_API_ENTRY CL_CreateKernel(cl_program program,
                                       const char *kernel_name,
                                       cl_int *errcode_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(CreateKernel, "program = 0x%016" PRIxPTR ", kernel_name = 0x%016" PRIxPTR ",
    // errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)program, (uintptr_t)kernel_name,
    // (uintptr_t)errcode_ret);

    // TODO: CreateKernel

    return (cl_kernel)0;
}

cl_int CL_API_ENTRY CL_CreateKernelsInProgram(cl_program program,
                                              cl_uint num_kernels,
                                              cl_kernel *kernels,
                                              cl_uint *num_kernels_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(CreateKernelsInProgram, "program = 0x%016" PRIxPTR ", num_kernels = %u, kernels =
    // 0x%016" PRIxPTR ", num_kernels_ret = 0x%016" PRIxPTR "", (uintptr_t)program, num_kernels,
    // (uintptr_t)kernels, (uintptr_t)num_kernels_ret);

    // TODO: CreateKernelsInProgram

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_RetainKernel(cl_kernel kernel)
{
    // TODO: CL_EVENT
    // CL_EVENT(RetainKernel, "kernel = 0x%016" PRIxPTR "", (uintptr_t)kernel);

    // TODO: RetainKernel

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_ReleaseKernel(cl_kernel kernel)
{
    // TODO: CL_EVENT
    // CL_EVENT(ReleaseKernel, "kernel = 0x%016" PRIxPTR "", (uintptr_t)kernel);

    // TODO: ReleaseKernel

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_SetKernelArg(cl_kernel kernel,
                                    cl_uint arg_index,
                                    size_t arg_size,
                                    const void *arg_value)
{
    // TODO: CL_EVENT
    // CL_EVENT(SetKernelArg, "kernel = 0x%016" PRIxPTR ", arg_index = %u, arg_size = %u, arg_value
    // = 0x%016" PRIxPTR "", (uintptr_t)kernel, arg_index, arg_size, (uintptr_t)arg_value);

    // TODO: SetKernelArg

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetKernelInfo(cl_kernel kernel,
                                     cl_kernel_info param_name,
                                     size_t param_value_size,
                                     void *param_value,
                                     size_t *param_value_size_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetKernelInfo, "kernel = 0x%016" PRIxPTR ", param_name = %u, param_value_size = %u,
    // param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
    // (uintptr_t)kernel, param_name, param_value_size, (uintptr_t)param_value,
    // (uintptr_t)param_value_size_ret);

    // TODO: GetKernelInfo

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetKernelWorkGroupInfo(cl_kernel kernel,
                                              cl_device_id device,
                                              cl_kernel_work_group_info param_name,
                                              size_t param_value_size,
                                              void *param_value,
                                              size_t *param_value_size_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetKernelWorkGroupInfo, "kernel = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR ",
    // param_name = %u, param_value_size = %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret
    // = 0x%016" PRIxPTR "", (uintptr_t)kernel, (uintptr_t)device, param_name, param_value_size,
    // (uintptr_t)param_value, (uintptr_t)param_value_size_ret);

    // TODO: GetKernelWorkGroupInfo

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_WaitForEvents(cl_uint num_events, const cl_event *event_list)
{
    // TODO: CL_EVENT
    // CL_EVENT(WaitForEvents, "num_events = %u, event_list = 0x%016" PRIxPTR "", num_events,
    // (uintptr_t)event_list);

    // TODO: WaitForEvents

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetEventInfo(cl_event event,
                                    cl_event_info param_name,
                                    size_t param_value_size,
                                    void *param_value,
                                    size_t *param_value_size_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetEventInfo, "event = 0x%016" PRIxPTR ", param_name = %u, param_value_size = %u,
    // param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "", (uintptr_t)event,
    // param_name, param_value_size, (uintptr_t)param_value, (uintptr_t)param_value_size_ret);

    // TODO: GetEventInfo

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_RetainEvent(cl_event event)
{
    // TODO: CL_EVENT
    // CL_EVENT(RetainEvent, "event = 0x%016" PRIxPTR "", (uintptr_t)event);

    // TODO: RetainEvent

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_ReleaseEvent(cl_event event)
{
    // TODO: CL_EVENT
    // CL_EVENT(ReleaseEvent, "event = 0x%016" PRIxPTR "", (uintptr_t)event);

    // TODO: ReleaseEvent

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_GetEventProfilingInfo(cl_event event,
                                             cl_profiling_info param_name,
                                             size_t param_value_size,
                                             void *param_value,
                                             size_t *param_value_size_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetEventProfilingInfo, "event = 0x%016" PRIxPTR ", param_name = %u, param_value_size
    // = %u, param_value = 0x%016" PRIxPTR ", param_value_size_ret = 0x%016" PRIxPTR "",
    // (uintptr_t)event, param_name, param_value_size, (uintptr_t)param_value,
    // (uintptr_t)param_value_size_ret);

    // TODO: GetEventProfilingInfo

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_Flush(cl_command_queue command_queue)
{
    // TODO: CL_EVENT
    // CL_EVENT(Flush, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);

    // TODO: Flush

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_Finish(cl_command_queue command_queue)
{
    // TODO: CL_EVENT
    // CL_EVENT(Finish, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);

    // TODO: Finish

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_EnqueueReadBuffer(cl_command_queue command_queue,
                                         cl_mem buffer,
                                         cl_bool blocking_read,
                                         size_t offset,
                                         size_t size,
                                         void *ptr,
                                         cl_uint num_events_in_wait_list,
                                         const cl_event *event_wait_list,
                                         cl_event *event)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueReadBuffer, "command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR ",
    // blocking_read = %u, offset = %u, size = %u, ptr = 0x%016" PRIxPTR ", num_events_in_wait_list
    // = %u, event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "",
    // (uintptr_t)command_queue, (uintptr_t)buffer, blocking_read, offset, size, (uintptr_t)ptr,
    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);

    // TODO: EnqueueReadBuffer

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_EnqueueWriteBuffer(cl_command_queue command_queue,
                                          cl_mem buffer,
                                          cl_bool blocking_write,
                                          size_t offset,
                                          size_t size,
                                          const void *ptr,
                                          cl_uint num_events_in_wait_list,
                                          const cl_event *event_wait_list,
                                          cl_event *event)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueWriteBuffer, "command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR ",
    // blocking_write = %u, offset = %u, size = %u, ptr = 0x%016" PRIxPTR ", num_events_in_wait_list
    // = %u, event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "",
    // (uintptr_t)command_queue, (uintptr_t)buffer, blocking_write, offset, size, (uintptr_t)ptr,
    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);

    // TODO: EnqueueWriteBuffer

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_EnqueueCopyBuffer(cl_command_queue command_queue,
                                         cl_mem src_buffer,
                                         cl_mem dst_buffer,
                                         size_t src_offset,
                                         size_t dst_offset,
                                         size_t size,
                                         cl_uint num_events_in_wait_list,
                                         const cl_event *event_wait_list,
                                         cl_event *event)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueCopyBuffer, "command_queue = 0x%016" PRIxPTR ", src_buffer = 0x%016" PRIxPTR
    // ", dst_buffer = 0x%016" PRIxPTR ", src_offset = %u, dst_offset = %u, size = %u,
    // num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR
    // "", (uintptr_t)command_queue, (uintptr_t)src_buffer, (uintptr_t)dst_buffer, src_offset,
    // dst_offset, size, num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);

    // TODO: EnqueueCopyBuffer

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_EnqueueReadImage(cl_command_queue command_queue,
                                        cl_mem image,
                                        cl_bool blocking_read,
                                        const size_t *origin,
                                        const size_t *region,
                                        size_t row_pitch,
                                        size_t slice_pitch,
                                        void *ptr,
                                        cl_uint num_events_in_wait_list,
                                        const cl_event *event_wait_list,
                                        cl_event *event)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueReadImage, "command_queue = 0x%016" PRIxPTR ", image = 0x%016" PRIxPTR ",
    // blocking_read = %u, origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR ", row_pitch = %u,
    // slice_pitch = %u, ptr = 0x%016" PRIxPTR ", num_events_in_wait_list = %u, event_wait_list =
    // 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)image,
    // blocking_read, (uintptr_t)origin, (uintptr_t)region, row_pitch, slice_pitch, (uintptr_t)ptr,
    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);

    // TODO: EnqueueReadImage

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_EnqueueWriteImage(cl_command_queue command_queue,
                                         cl_mem image,
                                         cl_bool blocking_write,
                                         const size_t *origin,
                                         const size_t *region,
                                         size_t input_row_pitch,
                                         size_t input_slice_pitch,
                                         const void *ptr,
                                         cl_uint num_events_in_wait_list,
                                         const cl_event *event_wait_list,
                                         cl_event *event)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueWriteImage, "command_queue = 0x%016" PRIxPTR ", image = 0x%016" PRIxPTR ",
    // blocking_write = %u, origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR ", input_row_pitch
    // = %u, input_slice_pitch = %u, ptr = 0x%016" PRIxPTR ", num_events_in_wait_list = %u,
    // event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue,
    // (uintptr_t)image, blocking_write, (uintptr_t)origin, (uintptr_t)region, input_row_pitch,
    // input_slice_pitch, (uintptr_t)ptr, num_events_in_wait_list, (uintptr_t)event_wait_list,
    // (uintptr_t)event);

    // TODO: EnqueueWriteImage

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_EnqueueCopyImage(cl_command_queue command_queue,
                                        cl_mem src_image,
                                        cl_mem dst_image,
                                        const size_t *src_origin,
                                        const size_t *dst_origin,
                                        const size_t *region,
                                        cl_uint num_events_in_wait_list,
                                        const cl_event *event_wait_list,
                                        cl_event *event)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueCopyImage, "command_queue = 0x%016" PRIxPTR ", src_image = 0x%016" PRIxPTR ",
    // dst_image = 0x%016" PRIxPTR ", src_origin = 0x%016" PRIxPTR ", dst_origin = 0x%016" PRIxPTR
    // ", region = 0x%016" PRIxPTR ", num_events_in_wait_list = %u, event_wait_list = 0x%016"
    // PRIxPTR ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)src_image,
    // (uintptr_t)dst_image, (uintptr_t)src_origin, (uintptr_t)dst_origin, (uintptr_t)region,
    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);

    // TODO: EnqueueCopyImage

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_EnqueueCopyImageToBuffer(cl_command_queue command_queue,
                                                cl_mem src_image,
                                                cl_mem dst_buffer,
                                                const size_t *src_origin,
                                                const size_t *region,
                                                size_t dst_offset,
                                                cl_uint num_events_in_wait_list,
                                                const cl_event *event_wait_list,
                                                cl_event *event)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueCopyImageToBuffer, "command_queue = 0x%016" PRIxPTR ", src_image = 0x%016"
    // PRIxPTR ", dst_buffer = 0x%016" PRIxPTR ", src_origin = 0x%016" PRIxPTR ", region = 0x%016"
    // PRIxPTR ", dst_offset = %u, num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
    // ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)src_image,
    // (uintptr_t)dst_buffer, (uintptr_t)src_origin, (uintptr_t)region, dst_offset,
    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);

    // TODO: EnqueueCopyImageToBuffer

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_EnqueueCopyBufferToImage(cl_command_queue command_queue,
                                                cl_mem src_buffer,
                                                cl_mem dst_image,
                                                size_t src_offset,
                                                const size_t *dst_origin,
                                                const size_t *region,
                                                cl_uint num_events_in_wait_list,
                                                const cl_event *event_wait_list,
                                                cl_event *event)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueCopyBufferToImage, "command_queue = 0x%016" PRIxPTR ", src_buffer = 0x%016"
    // PRIxPTR ", dst_image = 0x%016" PRIxPTR ", src_offset = %u, dst_origin = 0x%016" PRIxPTR ",
    // region = 0x%016" PRIxPTR ", num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR
    // ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)src_buffer,
    // (uintptr_t)dst_image, src_offset, (uintptr_t)dst_origin, (uintptr_t)region,
    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);

    // TODO: EnqueueCopyBufferToImage

    return (cl_int)0;
}

void *CL_API_ENTRY CL_EnqueueMapBuffer(cl_command_queue command_queue,
                                       cl_mem buffer,
                                       cl_bool blocking_map,
                                       cl_map_flags map_flags,
                                       size_t offset,
                                       size_t size,
                                       cl_uint num_events_in_wait_list,
                                       const cl_event *event_wait_list,
                                       cl_event *event,
                                       cl_int *errcode_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueMapBuffer, "command_queue = 0x%016" PRIxPTR ", buffer = 0x%016" PRIxPTR ",
    // blocking_map = %u, map_flags = %u, offset = %u, size = %u, num_events_in_wait_list = %u,
    // event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR
    // "", (uintptr_t)command_queue, (uintptr_t)buffer, blocking_map, map_flags, offset, size,
    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event,
    // (uintptr_t)errcode_ret);

    // TODO: EnqueueMapBuffer

    return (void *)0;
}

void *CL_API_ENTRY CL_EnqueueMapImage(cl_command_queue command_queue,
                                      cl_mem image,
                                      cl_bool blocking_map,
                                      cl_map_flags map_flags,
                                      const size_t *origin,
                                      const size_t *region,
                                      size_t *image_row_pitch,
                                      size_t *image_slice_pitch,
                                      cl_uint num_events_in_wait_list,
                                      const cl_event *event_wait_list,
                                      cl_event *event,
                                      cl_int *errcode_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueMapImage, "command_queue = 0x%016" PRIxPTR ", image = 0x%016" PRIxPTR ",
    // blocking_map = %u, map_flags = %u, origin = 0x%016" PRIxPTR ", region = 0x%016" PRIxPTR ",
    // image_row_pitch = 0x%016" PRIxPTR ", image_slice_pitch = 0x%016" PRIxPTR ",
    // num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR ",
    // errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)image, blocking_map,
    // map_flags, (uintptr_t)origin, (uintptr_t)region, (uintptr_t)image_row_pitch,
    // (uintptr_t)image_slice_pitch, num_events_in_wait_list, (uintptr_t)event_wait_list,
    // (uintptr_t)event, (uintptr_t)errcode_ret);

    // TODO: EnqueueMapImage

    return (void *)0;
}

cl_int CL_API_ENTRY CL_EnqueueUnmapMemObject(cl_command_queue command_queue,
                                             cl_mem memobj,
                                             void *mapped_ptr,
                                             cl_uint num_events_in_wait_list,
                                             const cl_event *event_wait_list,
                                             cl_event *event)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueUnmapMemObject, "command_queue = 0x%016" PRIxPTR ", memobj = 0x%016" PRIxPTR
    // ", mapped_ptr = 0x%016" PRIxPTR ", num_events_in_wait_list = %u, event_wait_list = 0x%016"
    // PRIxPTR ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)memobj,
    // (uintptr_t)mapped_ptr, num_events_in_wait_list, (uintptr_t)event_wait_list,
    // (uintptr_t)event);

    // TODO: EnqueueUnmapMemObject

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_EnqueueNDRangeKernel(cl_command_queue command_queue,
                                            cl_kernel kernel,
                                            cl_uint work_dim,
                                            const size_t *global_work_offset,
                                            const size_t *global_work_size,
                                            const size_t *local_work_size,
                                            cl_uint num_events_in_wait_list,
                                            const cl_event *event_wait_list,
                                            cl_event *event)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueNDRangeKernel, "command_queue = 0x%016" PRIxPTR ", kernel = 0x%016" PRIxPTR
    // ", work_dim = %u, global_work_offset = 0x%016" PRIxPTR ", global_work_size = 0x%016" PRIxPTR
    // ", local_work_size = 0x%016" PRIxPTR ", num_events_in_wait_list = %u, event_wait_list =
    // 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)kernel,
    // work_dim, (uintptr_t)global_work_offset, (uintptr_t)global_work_size,
    // (uintptr_t)local_work_size, num_events_in_wait_list, (uintptr_t)event_wait_list,
    // (uintptr_t)event);

    // TODO: EnqueueNDRangeKernel

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_EnqueueNativeKernel(cl_command_queue command_queue,
                                           void(CL_CALLBACK *user_func)(void *),
                                           void *args,
                                           size_t cb_args,
                                           cl_uint num_mem_objects,
                                           const cl_mem *mem_list,
                                           const void **args_mem_loc,
                                           cl_uint num_events_in_wait_list,
                                           const cl_event *event_wait_list,
                                           cl_event *event)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueNativeKernel, "command_queue = 0x%016" PRIxPTR ", ) = 0x%016" PRIxPTR ", args
    // = 0x%016" PRIxPTR ", cb_args = %u, num_mem_objects = %u, mem_list = 0x%016" PRIxPTR ",
    // args_mem_loc = 0x%016" PRIxPTR ", num_events_in_wait_list = %u, event_wait_list = 0x%016"
    // PRIxPTR ", event = 0x%016" PRIxPTR "", (uintptr_t)command_queue, (uintptr_t)),
    // (uintptr_t)args, cb_args, num_mem_objects, (uintptr_t)mem_list, (uintptr_t)args_mem_loc,
    // num_events_in_wait_list, (uintptr_t)event_wait_list, (uintptr_t)event);

    // TODO: EnqueueNativeKernel

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_SetCommandQueueProperty(cl_command_queue command_queue,
                                               cl_command_queue_properties properties,
                                               cl_bool enable,
                                               cl_command_queue_properties *old_properties)
{
    // TODO: CL_EVENT
    // CL_EVENT(SetCommandQueueProperty, "command_queue = 0x%016" PRIxPTR ", properties = %u, enable
    // = %u, old_properties = 0x%016" PRIxPTR "", (uintptr_t)command_queue, properties, enable,
    // (uintptr_t)old_properties);

    // TODO: SetCommandQueueProperty

    return (cl_int)0;
}

cl_mem CL_API_ENTRY CL_CreateImage2D(cl_context context,
                                     cl_mem_flags flags,
                                     const cl_image_format *image_format,
                                     size_t image_width,
                                     size_t image_height,
                                     size_t image_row_pitch,
                                     void *host_ptr,
                                     cl_int *errcode_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(CreateImage2D, "context = 0x%016" PRIxPTR ", flags = %u, image_format = 0x%016"
    // PRIxPTR ", image_width = %u, image_height = %u, image_row_pitch = %u, host_ptr = 0x%016"
    // PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)context, flags,
    // (uintptr_t)image_format, image_width, image_height, image_row_pitch, (uintptr_t)host_ptr,
    // (uintptr_t)errcode_ret);

    // TODO: CreateImage2D

    return (cl_mem)0;
}

cl_mem CL_API_ENTRY CL_CreateImage3D(cl_context context,
                                     cl_mem_flags flags,
                                     const cl_image_format *image_format,
                                     size_t image_width,
                                     size_t image_height,
                                     size_t image_depth,
                                     size_t image_row_pitch,
                                     size_t image_slice_pitch,
                                     void *host_ptr,
                                     cl_int *errcode_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(CreateImage3D, "context = 0x%016" PRIxPTR ", flags = %u, image_format = 0x%016"
    // PRIxPTR ", image_width = %u, image_height = %u, image_depth = %u, image_row_pitch = %u,
    // image_slice_pitch = %u, host_ptr = 0x%016" PRIxPTR ", errcode_ret = 0x%016" PRIxPTR "",
    // (uintptr_t)context, flags, (uintptr_t)image_format, image_width, image_height, image_depth,
    // image_row_pitch, image_slice_pitch, (uintptr_t)host_ptr, (uintptr_t)errcode_ret);

    // TODO: CreateImage3D

    return (cl_mem)0;
}

cl_int CL_API_ENTRY CL_EnqueueMarker(cl_command_queue command_queue, cl_event *event)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueMarker, "command_queue = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR "",
    // (uintptr_t)command_queue, (uintptr_t)event);

    // TODO: EnqueueMarker

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_EnqueueWaitForEvents(cl_command_queue command_queue,
                                            cl_uint num_events,
                                            const cl_event *event_list)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueWaitForEvents, "command_queue = 0x%016" PRIxPTR ", num_events = %u,
    // event_list = 0x%016" PRIxPTR "", (uintptr_t)command_queue, num_events,
    // (uintptr_t)event_list);

    // TODO: EnqueueWaitForEvents

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_EnqueueBarrier(cl_command_queue command_queue)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueBarrier, "command_queue = 0x%016" PRIxPTR "", (uintptr_t)command_queue);

    // TODO: EnqueueBarrier

    return (cl_int)0;
}

cl_int CL_API_ENTRY CL_UnloadCompiler()
{
    // TODO: CL_EVENT
    // CL_EVENT(UnloadCompiler, "");

    // TODO: UnloadCompiler

    return (cl_int)0;
}

void *CL_API_ENTRY CL_GetExtensionFunctionAddress(const char *func_name)
{
    // TODO: CL_EVENT
    // CL_EVENT(GetExtensionFunctionAddress, "func_name = 0x%016" PRIxPTR "", (uintptr_t)func_name);

    // TODO: GetExtensionFunctionAddress

    return (void *)0;
}

cl_command_queue CL_API_ENTRY CL_CreateCommandQueue(cl_context context,
                                                    cl_device_id device,
                                                    cl_command_queue_properties properties,
                                                    cl_int *errcode_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(CreateCommandQueue, "context = 0x%016" PRIxPTR ", device = 0x%016" PRIxPTR ",
    // properties = %u, errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)context, (uintptr_t)device,
    // properties, (uintptr_t)errcode_ret);

    // TODO: CreateCommandQueue

    return (cl_command_queue)0;
}

cl_sampler CL_API_ENTRY CL_CreateSampler(cl_context context,
                                         cl_bool normalized_coords,
                                         cl_addressing_mode addressing_mode,
                                         cl_filter_mode filter_mode,
                                         cl_int *errcode_ret)
{
    // TODO: CL_EVENT
    // CL_EVENT(CreateSampler, "context = 0x%016" PRIxPTR ", normalized_coords = %u, addressing_mode
    // = %u, filter_mode = %u, errcode_ret = 0x%016" PRIxPTR "", (uintptr_t)context,
    // normalized_coords, addressing_mode, filter_mode, (uintptr_t)errcode_ret);

    // TODO: CreateSampler

    return (cl_sampler)0;
}

cl_int CL_API_ENTRY CL_EnqueueTask(cl_command_queue command_queue,
                                   cl_kernel kernel,
                                   cl_uint num_events_in_wait_list,
                                   const cl_event *event_wait_list,
                                   cl_event *event)
{
    // TODO: CL_EVENT
    // CL_EVENT(EnqueueTask, "command_queue = 0x%016" PRIxPTR ", kernel = 0x%016" PRIxPTR ",
    // num_events_in_wait_list = %u, event_wait_list = 0x%016" PRIxPTR ", event = 0x%016" PRIxPTR
    // "", (uintptr_t)command_queue, (uintptr_t)kernel, num_events_in_wait_list,
    // (uintptr_t)event_wait_list, (uintptr_t)event);

    // TODO: EnqueueTask

    return (cl_int)0;
}

}  // extern "C"
