X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/de549f6e334a8e7510420fe6bfe1a90e32a52041..72d9260f8258b525339c7241da0631ceaf9f3842:/glib/genums.lisp diff --git a/glib/genums.lisp b/glib/genums.lisp index 135cc2d..64dfd8a 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 @@ (defclass enum-value (struct) (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 @@ (defbinding flags-class-values () (static (vector (inlined enum-value) n-values) (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))