X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/31e113a14dc426ab4cfa625e4cf7fcee79f8fafe..a75fc933fb4fccfc8ea1c1c5349bc5d77d74f4f8:/glib/genums.lisp diff --git a/glib/genums.lisp b/glib/genums.lisp index c7351f9..9bbdfe6 100644 --- a/glib/genums.lisp +++ b/glib/genums.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: genums.lisp,v 1.20 2006/04/25 21:59:37 espen Exp $ +;; $Id: genums.lisp,v 1.22 2006/09/28 10:20:12 espen Exp $ (in-package "GLIB") @@ -33,12 +33,16 @@ (nickname :allocation :alien :type string)) (:metaclass struct-class))) -(defun map-enum-values (values) +(defun map-enum-values (values symbolic-p) (map 'list #'(lambda (enum-value) - (with-slots (nickname value) enum-value + (with-slots (nickname name value) enum-value (list - (intern (substitute #\- #\_ (string-upcase nickname)) "KEYWORD") + (cond + ((eq symbolic-p :nickname) nickname) + (symbolic-p + (intern (substitute #\- #\_ (string-upcase nickname)) "KEYWORD")) + (t name)) value))) values)) @@ -50,11 +54,12 @@ (class pointer) (n-values unsigned-int :out)) -(defun query-enum-values (type) +(defun query-enum-values (type &optional (symbolic-p t)) (let ((class (type-class-ref type))) (map-enum-values (if (eq (supertype type) 'enum) (enum-class-values class) - (flags-class-values class))))) + (flags-class-values class)) + symbolic-p))) (defun expand-enum-type (type-number forward-p options) (declare (ignore forward-p))