From 95aeb2ebae32a01ff79644daa523bda5d8552863 Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Fri, 17 Jan 2020 18:04:20 +0000 Subject: Squashed 'third_party/lisp/alexandria/' content from commit fc2a2f5c git-subtree-dir: third_party/lisp/alexandria git-subtree-split: fc2a2f5c34147bb4e3e4a350b04220de0263710f --- features.lisp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 features.lisp (limited to 'features.lisp') diff --git a/features.lisp b/features.lisp new file mode 100644 index 000000000000..67348dbba43b --- /dev/null +++ b/features.lisp @@ -0,0 +1,14 @@ +(in-package :alexandria) + +(defun featurep (feature-expression) + "Returns T if the argument matches the state of the *FEATURES* +list and NIL if it does not. FEATURE-EXPRESSION can be any atom +or list acceptable to the reader macros #+ and #-." + (etypecase feature-expression + (symbol (not (null (member feature-expression *features*)))) + (cons (check-type (first feature-expression) symbol) + (eswitch ((first feature-expression) :test 'string=) + (:and (every #'featurep (rest feature-expression))) + (:or (some #'featurep (rest feature-expression))) + (:not (assert (= 2 (length feature-expression))) + (not (featurep (second feature-expression)))))))) -- cgit 1.4.1