; *************************************************************************
; Copyright (c) 1992 Xerox Corporation.  
; All Rights Reserved.  
;
; Use, reproduction, and preparation of derivative works are permitted.
; Any copy of this software or of any derivative work must include the
; above copyright notice of Xerox Corporation, this paragraph and the
; one after it.  Any distribution of this software or derivative works
; must comply with all applicable United States export control laws.
;
; This software is made available AS IS, and XEROX CORPORATION DISCLAIMS
; ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE
; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
; PURPOSE, AND NOTWITHSTANDING ANY OTHER PROVISION CONTAINED HEREIN, ANY
; LIABILITY FOR DAMAGES RESULTING FROM THE SOFTWARE OR ITS USE IS
; EXPRESSLY DISCLAIMED, WHETHER ARISING IN CONTRACT, TORT (INCLUDING
; NEGLIGENCE) OR STRICT LIABILITY, EVEN IF XEROX CORPORATION IS ADVISED
; OF THE POSSIBILITY OF SUCH DAMAGES.
; *************************************************************************
;
; port to R6RS -- 2007 Christian Sloma
; 

(library (clos private core-class-layout)
 
  (export core-class-slot-names
          core-class-slot-count)

  (import (only (rnrs) define quote length))

  (define core-class-slot-names
    '( 
      
      ;;
      ;; initializer-fn : instance         -> unspecified 
      ;; getter-fn      : instance         -> value 
      ;; setter-fn      : instance * value -> unspecified
      ;;
      
      ;; list of direct super classes for this class
      direct-supers       ;; (class ...)
      
      ;; list of direct slots for this class
      direct-slots        ;; ((slot-name slot-option ...) ...)
      
      ;; list of this class and all super-classes
      ;; in the order in which they are searched for methods
      precedence-list     ;; (class ...)
      
      ;; list of slots (direct slots + slots of super-classes)
      slots               ;; ((slot-name slot-option ...) ...)
      
      ;; how many fields must be allocated for instances of this class
      number-of-fields    ;; integer
      
      ;; initializers for the fields
      field-initializers  ;; (initializer-fn ...)
      
      ;; getter and setter functions for the slots of this class
      ;; searchable by slot-name
      getters-and-setters ;; ((slot-name getter-fn setter-fn) ...)

      ;; name of the class
      definition-name     ;; symbol or #f
      
      )) ;; core-class-slot-names
  
  (define core-class-slot-count (length core-class-slot-names))

  ) ;; library (clos private core-class-layout)
