doc/structures.tex, lib/sod-structs.3: Fix description of class pointers.
[sod] / lib / sod-structs.3
index 16daa87..48364cc 100644 (file)
@@ -542,7 +542,7 @@ struct \fIC\fB__ilayout {
 \h'6n'} \fIc\fB;
 \h'4n'} \fIc\fB;
 \h'4n'\fR...\fB
-\h'4n'struct \fIH\fB__ichain_\fIh\fB \fIh\fB;
+\h'4n'struct \fIA\fB__ichain_\fIh\fB \fIa\fB;
 \h'2n'} \fIh\fB;
 \h'2n'union \fIB\fB__ichainu_\fIi\fB \fIi\fB;
 \h'2n'\fR...\fB
@@ -626,13 +626,9 @@ for each of
 superclasses
 .IR A
 in the same chain in some (unimportant) order.
-A `pointer to
-.IR C '
-is always assumed
-(and, indeed, defined in C's type system)
-to be a pointer to the
-.B struct
-.IB C __ichain_ h \fR.
+The (somewhat obtuse) purpose of this union is to
+engage the `common initial sequence' rule of
+C99 (clause 6.5.2.3).
 .PP
 The
 .B ichain
@@ -664,6 +660,14 @@ then the last member is
 .IB C __islots 
 .IB c ;
 .PP
+A `pointer to
+.IR C '
+is always assumed
+(and, indeed, defined in C's type system)
+to be a pointer to the
+.B struct
+.IB C __ichain_ h \fR.
+.PP
 Finally, the
 .B islots
 structure simply contains one member for each slot defined by
@@ -688,7 +692,7 @@ will have
 .I different
 structures.
 .PP
-The instance layout split neatly into disjoint chains.
+The instance layout splits neatly into disjoint chains.
 This is necessary because
 each
 .B ichain
@@ -865,8 +869,9 @@ be the most specific superclass of
 .I M
 in the same chain as
 .IR J .
-Then, if there is currently no class pointer of type
-.IR Q ,
+If there is currently no class pointer
+for the chain headed by
+.IR J ,
 then add a member
 .RS
 .IP
@@ -879,7 +884,13 @@ pointing to the appropriate
 .B islots
 structure within
 .IR M 's
-class object.
+class object,
+where
+.I Q
+is the most specific superclass of
+.I M
+in the same chain as
+.IR J .
 .RE
 .hP \*o
 Examine the superclass chains of