be85b5334c606c57d6607bf05b885f792edb51ee
[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  ;;
17  ;; (The #|DEF|# here is to help find this definition with lexical search.)
18  (#|def|# (structure-object (:alternate-metaclass sb!kernel:instance)
19                             (:copier nil))
20   ;; (There are no slots.)
21   )
22
23  ;; The target ALIEN-VALUE class must be defined early in the cross-compiler
24  ;; build sequence in order to set up superclass relationships involving it.
25  ;;
26  ;; FIXME: Since this definition refers to SB!ALIEN:ALIEN-TYPE, which is also
27  ;; defined as a structure, perhaps it might be reasonable to add an entry,
28  ;; somewhere before this definition, to define SB!ALIEN:ALIEN-TYPE? That
29  ;; way, any tests for SB!ALIEN:ALIEN-TYPE in the slot accessor functions
30  ;; could be implemented more efficiently.
31  ;;
32  ;; (The #|DEF|# here is to help find this definition with lexical search.)
33  (#|def|# (sb!alien-internals:alien-value)
34   (sap (required-argument) :type sb!sys:system-area-pointer)
35   (type (required-argument) :type sb!alien::alien-type)))