   ([method clobject info]
    `(aget (longs (info-long* ~method ~clobject ~info 1)) 0)))
 
-
 (defmacro ^:private info-int*
   ([method clobject info num]
    `(let [res# (int-array ~num)

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

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

           (String. res# 0 (dec size#))
           (throw (error err#))))
       (throw (error err#)))))

(let [native-pointer (fn [^"[Lorg.jocl.NativePointerObject;" np]
                       (Pointer/to np))]
  (defmacro ^:private info-native* [method clobject info type size]
    `(let [size# (long-array 1)
           err# (~method ~clobject ~info 0 nil size#)]
       (if (= 0 err#)
         (let [size# (aget size# 0)
               res# (make-array ~type (/ size# ~size))
               err# (~method ~clobject ~info
                             size# (~native-pointer res#)
                             nil)]
           (if (= 0 err#)
             res#
             (throw (error err#))))
         (throw (error err#))))))

(defmacro info-mask* [method clobject info table]
  `(let [mask# (info-long* ~method ~clobject ~info)]
