chiark / gitweb /
Infra: Rudimentary setup system.
[clg] / glib / genums.lisp
index 135cc2dee99262715856b6e17934d6f1e39b4ad7..64dfd8acb369d35490e2f4efbaca167f8cf70e16 100644 (file)
@@ -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))