-* 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
+ + 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.
-** Other concepts
- * POD for the purpose of layout ::
-
-
-* 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