summaryrefslogtreecommitdiff
path: root/src/platform.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'src/platform.lisp')
-rw-r--r--src/platform.lisp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/platform.lisp b/src/platform.lisp
new file mode 100644
index 0000000..1b976f4
--- /dev/null
+++ b/src/platform.lisp
@@ -0,0 +1,24 @@
+(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+)