500318316aa9aaf8c82c8eb307f597e8bcad9d61
[sbcl.git] / src / code / early-defstruct-args.lisp-expr
1 ;;;; descriptions of DEFSTRUCTs which are to be handled before any others
2
3 ;;;; This software is part of the SBCL system. See the README file for
4 ;;;; more information.
5 ;;;;
6 ;;;; This software is derived from the CMU CL system, which was
7 ;;;; written at Carnegie Mellon University and released into the
8 ;;;; public domain. The software is in the public domain and is
9 ;;;; provided with absolutely no warranty. See the COPYING and CREDITS
10 ;;;; files for more information.
11
12 (;; Define the STRUCTURE-OBJECT class as a subclass of
13  ;; INSTANCE. This has to be handled early because the design of the
14  ;; DEFSTRUCT system, dating back to pre-1999 CMU CL, requires that
15  ;; STRUCTURE-OBJECT be the first DEFSTRUCT executed.
16  ((structure-object (:alternate-metaclass sb!kernel:instance)
17                     (:copier nil))
18   ;; (There are no slots.)
19   )
20
21  ;; The target ALIEN-VALUE class must be defined early in the cross-compiler
22  ;; build sequence in order to set up superclass relationships involving it.
23  ;;
24  ;; FIXME: Since this definition refers to SB!ALIEN:ALIEN-TYPE, which is also
25  ;; defined as a structure, perhaps it might be reasonable to add an entry,
26  ;; somewhere before this definition, to define SB!ALIEN:ALIEN-TYPE? That
27  ;; way, any tests for SB!ALIEN:ALIEN-TYPE in the slot accessor functions
28  ;; could be implemented more efficiently.
29  ((sb!alien-internals:alien-value)
30   (sap (required-argument) :type sb!sys:system-area-pointer)
31   (type (required-argument) :type sb!alien::alien-type)))