From: Thomas F. B. <tfb@OCF.Berkeley.EDU> - 2005-08-06 07:45:36
|
Cyrus Harmon writes: > (setf (sb-alien:deref moose-var) :bear) to set the value to :bear. > Other keywords don't work, which is great. Is there a way to actually > get the value represented by the keyword :bear in the context of the > enum? I know this sort of defeats the purpose of the enum, but it > would still be nice to get. Sure. When you dereference a (* moose-enum), you get a valid moose-enum value. If you want an int, you should be dereferencing a (* int). How do you get from the one to the other? By casting it, naturally. (defun moose-to-int (moose) (deref (cast moose (* int)))) DEREF, CAST, and INT are all in the SB-ALIEN package of course, but if you're writing code that uses Alien, you really want to be working in a package the uses SB-ALIEN so you can see the content for the package qualifications. -- /|_ .-----------------------. ,' .\ / | Free Mumia Abu-Jamal! | ,--' _,' | Abolish the racist | / / | death penalty! | ( -. | `-----------------------' | ) | (`-. '--.) `. )----' |