From 93358b9dd28dca9c8695bdd3d0eaa4cdb4856a3f Mon Sep 17 00:00:00 2001 Message-Id: <93358b9dd28dca9c8695bdd3d0eaa4cdb4856a3f.1716729329.git.mdw@distorted.org.uk> From: Mark Wooding Date: Tue, 5 Sep 2006 13:20:08 +0000 Subject: [PATCH] QUERY-ENUM-VALUES can now return C names Organization: Straylight/Edgeware From: espen --- glib/genums.lisp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/glib/genums.lisp b/glib/genums.lisp index c7351f9..40fba65 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.21 2006/09/05 13:20:08 espen Exp $ (in-package "GLIB") @@ -33,12 +33,14 @@ (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") + (if symbolic-p + (intern (substitute #\- #\_ (string-upcase nickname)) "KEYWORD") + name) value))) values)) @@ -50,11 +52,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)) -- [mdw]