X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/blobdiff_plain/a888e3acc123993fa6fca9338f291b306aa131e2..b944e68b291d56a561c8797e138b95f1b1092d0a:/src/classes.lisp diff --git a/src/classes.lisp b/src/classes.lisp index 1a3a925..9484141 100644 --- a/src/classes.lisp +++ b/src/classes.lisp @@ -48,7 +48,7 @@ (export '(sod-class sod-class-name sod-class-nickname sod-class-direct-superclasses sod-class-precedence-list sod-class-chain-link sod-class-chain-head sod-class-chain sod-class-chains - sod-class-slots + sod-class-slots sod-class-initfrags sod-class-tearfrags sod-class-instance-initializers sod-class-class-initializers sod-class-messages sod-class-methods sod-class-state @@ -71,6 +71,12 @@ (defclass sod-class () :accessor sod-class-instance-initializers) (class-initializers :initarg :class-initializers :initform nil :type list :accessor sod-class-class-initializers) + (initargs :initarg :initargs :initform nil + :type list :accessor sod-class-initargs) + (initfrags :initarg :initfrags :initform nil + :type list :accessor sod-class-initfrags) + (tearfrags :initarg :tearfrags :initform nil + :type list :accessor sod-class-tearfrags) (messages :initarg :messages :initform nil :type list :accessor sod-class-messages) (methods :initarg :methods :initform nil @@ -319,6 +325,28 @@ (defclass sod-instance-initializer (sod-initializer) See `sod-initializer' for more details.")) +(export 'sod-initarg) +(defclass sod-initarg () + ((%class :initarg :class :type sod-class :reader sod-initarg-class) + (location :initarg :location :initform (file-location nil) + :type file-location :reader file-location) + (name :initarg :name :type string :reader sod-initarg-name) + (%type :initarg :type :type c-type :reader sod-initarg-type)) + (:documentation + "Describes a keyword argument accepted by the initialization function.")) + +(export 'sod-user-initarg) +(defclass sod-user-initarg (sod-initarg) + ((default :initarg :default :type t :reader sod-initarg-default)) + (:documentation + "Describes an initialization argument defined by the user.")) + +(export 'sod-slot-initarg) +(defclass sod-slot-initarg (sod-initarg) + ((slot :initarg :slot :type sod-slot :reader sod-initarg-slot)) + (:documentation + "Describes an initialization argument used to initialize a slot.")) + ;;;-------------------------------------------------------------------------- ;;; Messages and methods.