Enqueues a command to execute a native C/C++ function not compiled using the OpenCL compiler.
 command_queue  
            
                      A valid host command-queue. A native user
                      function can only be executed on a command-queue created on a device
                      that has CL_EXEC_NATIVE_KERNEL capability
                      set in CL_DEVICE_EXECUTION_CAPABILITIES
                      as specified in the table of OpenCL Device Queries for
                      clGetDeviceInfo.
                    
 user_func  
            A pointer to a host-callable user function.
 args  
            
                         A pointer to the args list that user_func 
                         should be called with.
                    
 cb_args  
            
                        The size in bytes of the args list that args points to.
                    
                      The data pointed to by args and cb_args
                      bytes in size will be copied and a pointer to this copied region will be
                      passed to user_func. The copy needs to be done because
                      the memory objects (cl_mem values) that args
                      may contain need to be modified and replaced by appropriate pointers to
                      global memory.  When clEnqueueNativeKernel returns,
                      the memory region pointed to by args can be reused by
                      the application.
                    
 num_mem_objects  
            
                         The number of buffer objects that are passed in args.
                    
 mem_list  
            
                      A list of valid buffer objects,
                      if num_mem_objects > 0. The buffer
                      object values specified in mem_list are
                      memory object handles (cl_mem values) returned by
                      clCreateBuffer
                      or NULL.
                    
 args_mem_loc  
            
                      A pointer to appropriate locations
                      that args points to where memory object handles
                      (cl_mem values) are stored. Before the user function is
                      executed, the memory object handles are replaced by pointers to global
                      memory.
                    
event_wait_list and
                    num_events_in_wait_list
                
            
                      Specify events that need
                      to complete before this particular command can be executed. If
                      event_wait_list is NULL, then this particular command does
                      not wait on any event to complete. If event_wait_list
                      is NULL, num_events_in_wait_list must be 0. If
                      event_wait_list is not NULL, the list of events
                      pointed to by event_wait_list must be valid
                      and num_events_in_wait_list must be greater
                      than 0.  The events specified in event_wait_list
                      act as synchronization points. The context associated with events in
                      event_wait_list and command_queue must
                      be the same.  The memory associated with event_wait_list
                      can be reused or freed after the function returns.
                    
          The total number of read-only images specified as arguments to a kernel cannot exceed
          CL_DEVICE_MAX_READ_IMAGE_ARGS. Each image array argument to
          a kernel declared with the read_only qualifier counts as one image.
        
          The total number of write-only images specified as arguments to a kernel cannot exceed
          CL_DEVICE_MAX_WRITE_IMAGE_ARGS. Each image array argument to
          a kernel declared with the write_only qualifier counts as one image.
        
            The total number of read-write images specified 
            as arguments to a kernel cannot exceed
            CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS. 
            Each image array argument to a kernel
            declared with the read_write qualifier 
            counts as one image.
        
Returns CL_SUCCESS if the user function execution instance was successfully queued. Otherwise, it returns one of the following errors:
command_queue
              is not a valid host command-queue.
            command_queue and events in event_wait_list
              are not the same.
            user_func is NULL.
            args is a NULL
              value and cb_args > 0, or if args is a
              NULL value and num_mem_objects > 0.
            args is not NULL
              and cb_args is 0.
            num_mem_objects
              >  0 and mem_list or args_mem_loc are NULL.
            num_mem_objects =
              0 and mem_list or args_mem_loc are not NULL.
            command_queue cannot execute the native kernel.
            mem_list are not valid or are not buffer objects.
            kernel on the command-queue because of
              insufficient resources needed to execute the kernel.
            kernel.
            event_wait_list is NULL and
              num_events_in_wait_list > 0,
              or event_wait_list is not NULL and
              num_events_in_wait_list is 0, or if event objects in
              event_wait_list are not valid events.
            clEnqueueNDRangeKernel, clEnqueueNativeKernel, clCreateCommandQueueWithProperties, clCreateBuffer, clGetDeviceInfo
 Copyright © 2007-2013 The Khronos Group Inc. 
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.
Copyright © 2007-2013 The Khronos Group Inc. 
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.