           (cl_context_properties.)
           props))
 
+;;TODO Callback function
 (defn ^:private context* [^objects devices ^objects properties]
   (let [err (int-array 1)
         res (CL/clCreateContext properties

                         (byte-seq res#))
          (throw (error err#)))))
    ([method clobject info]
     `(first (info-long* ~method ~clobject ~info 1)))))

(defmacro ^:private info-long*
  ([method clobject info num]

   CL/CL_INVALID_DEVICE_TYPE "CL_INVALID_DEVICE_TYPE"
   CL/CL_DEVICE_NOT_FOUND "CL_DEVICE_NOT_FOUND"
   CL/CL_OUT_OF_RESOURCES "CL_OUT_OF_RESOURCES"
   CL/CL_INVALID_DEVICE "CL_INVALID_DEVICE"
   CL/CL_DEVICE_NOT_AVAILABLE "CL_DEVICE_NOT_AVAILABLE"
   CL/CL_INVALID_CONTEXT "CL_INVALID_CONTEXT"})

;; ============= Utils ============================================
(defmacro ^:private info-string* [method clobject info]
