(in-package #:ocl) (defun get-platform-ids () (let ((num-platforms nil)) (cffi:with-foreign-object (c-num-platforms 'cl-uint) (check-error (%get-platform-ids 0 (cffi:null-pointer) c-num-platforms)) (setf num-platforms (cffi:mem-ref c-num-platforms 'cl-uint))) (cffi:with-foreign-object (c-platforms 'cl-platform-id num-platforms) (check-error (%get-platform-ids num-platforms c-platforms (cffi:null-pointer))) (loop :for i :below num-platforms :collect (cffi:mem-aref c-platforms 'cl-platform-id i))))) (defparameter +platform-info-type-alist+ '((:platform-profile . :string) (:platform-version . :string) (:platform-numeric-version . cl-version) (:platform-name . :string) (:platform-vendor . :string) (:platform-extensions . :string) (:platform-extensions-with-version . (:pointer cl-name-version)) (:platform-host-timer-resolution . cl-ulong))) (wrap-get-info-function get-platform-info %get-platform-info +platform-info-type-alist+)