1 (defpackage #:cl-glfw-opengl-extensions
4 (:export
#:scan-available-extensions
#:available-extensions
#:extension-available-p
#:load-extension
))
8 (defparameter *available
* nil
)
10 (defun scan-available-extensions ()
11 (let ((*readtable
* (copy-readtable nil
)))
12 (setf (readtable-case *readtable
*) :preserve
)
14 (mapcar #'(lambda (ext-name) (subseq (symbol-name ext-name
) 3))
15 (read-from-string (format nil
"(~a)" (gl:get-string gl
:+extensions
+)))))))
17 (defun available-extensions ()
18 (if (and *available
* (not (equal *available
* '(""))) (not (eql *available
* '(nil))))
20 (scan-available-extensions)))
22 (defun extension-available-p (extension)
23 (declare (type string extension
))
24 (find extension
(available-extensions) :test
'equalp
))