From: Mark Wooding Date: Thu, 26 May 2016 08:26:09 +0000 (+0100) Subject: src/c-types-{impl,parse}.tex: Support `_Atomic' types. X-Git-Url: https://git.distorted.org.uk/~mdw/sod/commitdiff_plain/b5c8ba347cb82a9332d0e7260be5842a7ee281ba?hp=3088c93403f4b8c015ecc6f789248ebef644ddcb src/c-types-{impl,parse}.tex: Support `_Atomic' types. blah blah --- diff --git a/src/c-types-impl.lisp b/src/c-types-impl.lisp index ce3aedf..be679a0 100644 --- a/src/c-types-impl.lisp +++ b/src/c-types-impl.lisp @@ -82,6 +82,11 @@ new-type-class initargs)) +;;;-------------------------------------------------------------------------- +;;; Qualifiers. + +(defmethod c-qualifier-keyword ((qualifier (eql :atomic))) "_Atomic") + (defmethod qualify-c-type ((type qualifiable-c-type) qualifiers) (let ((initargs (instance-initargs type))) (remf initargs :qualifiers) diff --git a/src/c-types-parse.lisp b/src/c-types-parse.lisp index 2c0e725..4244d3e 100644 --- a/src/c-types-parse.lisp +++ b/src/c-types-parse.lisp @@ -96,7 +96,8 @@ ((type :taggedp t) :enum :struct :union) (size :short :long (:long-long :name "long long")) (sign :signed :unsigned) - (qualifier :const :restrict :volatile))) + (qualifier :const :restrict :volatile + (:atomic :compat "_Atomic")))) (destructuring-bind (kind &key (taggedp nil)) (let ((spec (car item))) (if (consp spec) spec (list spec)))