X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/81054f0131824964d2cebfd7dec6f18be113020b..fddbedf7b1b4b19add30eeb62281748cc77e6955:/src/class-make-proto.lisp diff --git a/src/class-make-proto.lisp b/src/class-make-proto.lisp index a2783ee..a978ca3 100644 --- a/src/class-make-proto.lisp +++ b/src/class-make-proto.lisp @@ -86,7 +86,7 @@ (export 'make-sod-instance-initializer) (defgeneric make-sod-instance-initializer - (class nick name value pset &key location) + (class nick name value pset &key location inhibit-initargs add-to-class) (:documentation "Construct and attach an instance slot initializer, to CLASS. @@ -95,11 +95,17 @@ construction process. The default method looks up the slot using `find-instance-slot-by-name', calls `make-sod-initializer-using-slot' to actually make the initializer object, and adds it to the appropriate list - in CLASS.")) + in CLASS unless ADD-TO-CLASS is nil. + + Usually, if an `initarg' property is set on PSET, then a slot initarg is + created and attached to the slot; this can be prevented by setting + INHIBIT-INITARGS non-nil. This is needed when creating a slot and + initializer from the same property set, in order to prevent creation of a + duplicate initarg.")) (export 'make-sod-class-initializer) (defgeneric make-sod-class-initializer - (class nick name value pset &key location) + (class nick name value pset &key location add-to-class) (:documentation "Construct and attach a class slot initializer, to CLASS. @@ -108,7 +114,7 @@ construction process. The default method looks up the slot using `find-class-slot-by-name', calls `make-sod-initializer-using-slot' to actually make the initializer object, and adds it to the appropriate list - in CLASS.")) + in CLASS unless ADD-TO-CLASS is nil.")) (export 'make-sod-initializer-using-slot) (defgeneric make-sod-initializer-using-slot @@ -266,4 +272,16 @@ This is separated out of `shared-initialize', where it's called, so that it can be overridden conveniently by subclasses.")) +;;;-------------------------------------------------------------------------- +;;; Static instances. + +(export 'make-static-instance) +(defgeneric make-static-instance (class name initializers pset location &key) + (:documentation + "Construct a new static instance of the given CLASS. + + This is the main constructor functoin for static instances. This is a + generic function so that the CLASS can construct static instances in a + special way.")) + ;;;----- That's all, folks --------------------------------------------------