X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/2c6004065fe281dea948bcb3d738f14c05424b18..d5fdd49e70b734b791eb907706f92da5775e2a8b:/src/classes.lisp diff --git a/src/classes.lisp b/src/classes.lisp index a59a47c..678d4a5 100644 --- a/src/classes.lisp +++ b/src/classes.lisp @@ -48,11 +48,12 @@ 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-initfrags sod-class-tearfrags + sod-class-slots + sod-class-initargs sod-class-initfrags sod-class-tearfrags sod-class-instance-initializers sod-class-class-initializers sod-class-messages sod-class-methods sod-class-state - sod-class-ilayout sod-class-vtables)) + sod-class-ilayout sod-class-effective-methods sod-class-vtables)) (defclass sod-class () ((name :initarg :name :type string :reader sod-class-name) (location :initarg :location :initform (file-location nil) @@ -326,7 +327,8 @@ See `sod-initializer' for more details.")) -(export 'sod-initarg) +(export '(sod-initarg + sod-initarg-class sod-initarg-name sod-initarg-type)) (defclass sod-initarg () ((%class :initarg :class :type sod-class :reader sod-initarg-class) (location :initarg :location :initform (file-location nil) @@ -336,18 +338,31 @@ (:documentation "Describes a keyword argument accepted by the initialization function.")) -(export 'sod-user-initarg) +(export '(sod-user-initarg sod-initarg-default)) (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) +(defmethod print-object ((initarg sod-user-initarg) stream) + (maybe-print-unreadable-object (initarg stream :type t) + (pprint-c-type (sod-initarg-type initarg) stream + (sod-initarg-name initarg)) + (awhen (sod-initarg-default initarg) + (format stream " = ~A" it)))) + +(export '(sod-slot-initarg sod-initarg-slot)) (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.")) +(defmethod print-object ((initarg sod-slot-initarg) stream) + (maybe-print-unreadable-object (initarg stream :type t) + (pprint-c-type (sod-initarg-type initarg) stream + (sod-initarg-name initarg)) + (format stream " for ~A" (sod-initarg-slot initarg)))) + ;;;-------------------------------------------------------------------------- ;;; Messages and methods.