X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/01868954eb076e618ed5b9f9425e428628e9fdbf..684d95c7eb6ec755d38efacbc377e9e60ba7044e:/NOTES?ds=sidebyside diff --git a/NOTES b/NOTES index c22de92..07e1180 100644 --- a/NOTES +++ b/NOTES @@ -6,15 +6,18 @@ ~progn~-combination, and one for producing output, which subclasses can override. - + Investigate a `robust-ABI' layout using pointers rather than simple - inclusion. Each class's islots and vtmsgs will be found by - following a pointer rather than just magically knowing the offsets. - If you allocate objects dynamically, using ~CLASS->cls.initsz~ - rather than ~sizeof(CLASS__ilayout)~ then this isolates you from - added slots and messages at all superclasses. I expect this to - require a separate root class, but it /might/ be possible to - mix-and-match. + + Implement `indirect' slots and messages, which can be added (once a + class has declared support) /without/ breaking the class's ABI. + Indirect messages can be added to an indirect `vtmsgs' structure via + a pointer in the main vtable. Indirect slots must be added to a + region of the `ilayout' located via an offset stored in the vtable. + * Add `documentation' methods for all of the myriad kinds of things + that can be defined. A useful utility will find methods on a + generic function with an `eql'-specializer in some specified place. + + * Define static initializers for class layouts which obviate the need + for imprinting. * COMMENT Emacs cruft