From: espen Date: Tue, 5 Sep 2006 13:20:08 +0000 (+0000) Subject: QUERY-ENUM-VALUES can now return C names X-Git-Tag: clg-0-93~258 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/commitdiff_plain/93358b9dd28dca9c8695bdd3d0eaa4cdb4856a3f?ds=sidebyside QUERY-ENUM-VALUES can now return C names --- 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))