X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/abdf50aad1a95f1df8d11c54ff1623077eb84193..refs/heads/mdw/progfmt:/NOTES diff --git a/NOTES b/NOTES index c22622c..07e1180 100644 --- a/NOTES +++ b/NOTES @@ -1,37 +1,25 @@ -* Stuff from the ABI spec +* Things to think about -** Notation + + Reorganize output protocol so that metaclasses can override the + layout. Split ~hook-output~ into a pair of generic functions: one + for walking the tree, which should continue to be + ~progn~-combination, and one for producing output, which subclasses + can override. - * sizeof(O) :: size of an object O - * align(O) :: alignment of the object O - * offset(C) :: offset of the component C within O - * dsize(O) :: data size of the object O (without tail padding) - * nvsize(O) :: the /non-virtual/ size of the object O (i.e., - without virtual bases) - * nvalign(O) :: the non-virtual alignment of the object O + + 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. -** Other concepts + * 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. - * POD for the purpose of layout :: + * Define static initializers for class layouts which obviate the need + for imprinting. - -* Order of stuff in output files - -** Header - - * Multiple inclusion and C++ guards - * Forward declarations of structs and typedef names. - * User code - * Structure definitions - * Macros - * Function declarations for methods - -** Implementation - - * User code - * Method and table definitions - -* COMMENT +* COMMENT Emacs cruft # Local variables: # mode: org