~mdw
/
sod
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
doc/structures.tex, lib/sod-structs.3: Fix description of class pointers.
[sod]
/
lib
/
sod-structs.3
diff --git
a/lib/sod-structs.3
b/lib/sod-structs.3
index
16daa87
..
48364cc
100644
(file)
--- a/
lib/sod-structs.3
+++ b/
lib/sod-structs.3
@@
-542,7
+542,7
@@
struct \fIC\fB__ilayout {
\h'6n'} \fIc\fB;
\h'4n'} \fIc\fB;
\h'4n'\fR...\fB
\h'6n'} \fIc\fB;
\h'4n'} \fIc\fB;
\h'4n'\fR...\fB
-\h'4n'struct \fI
H\fB__ichain_\fIh\fB \fIh
\fB;
+\h'4n'struct \fI
A\fB__ichain_\fIh\fB \fIa
\fB;
\h'2n'} \fIh\fB;
\h'2n'union \fIB\fB__ichainu_\fIi\fB \fIi\fB;
\h'2n'\fR...\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.
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
.PP
The
.B ichain
@@
-664,6
+660,14
@@
then the last member is
.IB C __islots
.IB c ;
.PP
.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
Finally, the
.B islots
structure simply contains one member for each slot defined by
@@
-688,7
+692,7
@@
will have
.I different
structures.
.PP
.I different
structures.
.PP
-The instance layout split neatly into disjoint chains.
+The instance layout split
s
neatly into disjoint chains.
This is necessary because
each
.B ichain
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 .
.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
then add a member
.RS
.IP
@@
-879,7
+884,13
@@
pointing to the appropriate
.B islots
structure within
.IR M 's
.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
.RE
.hP \*o
Examine the superclass chains of