[Openmcl-devel] How to get names of slots of a structure?

Gary Byers gb at clozure.com
Sun Oct 20 23:38:17 UTC 2002



On Sun, 20 Oct 2002, Kevin Rosenberg wrote:

> Hello, I'd like to find out how to get the names of slots in a
> structure. I have the following function that I'd like to get
> supported in OpenMCL:
>

This quietly returns NIL if S-NAME doesn't name a structure class.

(defun structure-slot-names (s-name)
  "Given a STRUCTURE-NAME, returns a list of the slots in the
  structure."
  #+allegro (class-slot-names s-name)
  #+lispworks (structure:structure-class-slot-names
	       (find-class s-name))
  #+sbcl (mapcar #'sb-pcl::slot-definition-name
		 (sb-pcl:class-slots
		  (sb-pcl:find-class s-name)))
  #+cmu (mapcar
	 #'pcl::slot-definition-name
	 (pcl:class-slots (pcl:find-class s-name)))
  #+scl
  (loop as
	s across
	(kernel::layout-slots
	 (slot-value (find-class s-name) 'clos::layout))
	collecting s)
  #+mcl (let* ((sd (gethash s-name ccl::%defstructs%))
               (slots (if sd (ccl::sd-slots sd))))
          (mapcar #'car (if (symbolp (caar slots)) slots (cdr slots))))
  #-(or allegro lispworks cmu sbcl scl mcl)
  (error "structure-slot-names is not defined on this platform")
  )
>
> Thanks!
> --
>        Kevin Rosenberg        |  .''`.  ** Debian GNU/Linux **
>   http://b9.com/debian.html   | : :' :      The  universal
>   GPG signed and encrypted    | `. `'      Operating System
>      messages accepted.       |   `-    http://www.debian.org/
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/cgi-bin/mailman/listinfo/openmcl-devel
>
>


_______________________________________________
Openmcl-devel mailing list
Openmcl-devel at clozure.com
http://clozure.com/cgi-bin/mailman/listinfo/openmcl-devel



More information about the Openmcl-devel mailing list