X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/e160ec736350f63d5127d954418eef5d667c7f30..ae0f15ee8427fa91cfd1945bfded847032cb8a25:/doc/structures.tex
diff --git a/doc/structures.tex b/doc/structures.tex
index 8be9a65..b63a336 100644
--- a/doc/structures.tex
+++ b/doc/structures.tex
@@ -114,7 +114,7 @@ recommended.
\end{figure}
\begin{describe}[SodObject]{cls}
- {[metaclass = SodClass, lisp_metaclass = sod_class] \\
+ {[nick = obj, metaclass = SodClass, lisp_metaclass = sod_class] \\
class SodObject \{ \}}
The @|SodObject| class defines no slots or messages. Because @|SodObject|
@@ -134,10 +134,12 @@ recommended.
\subsection{The SodClass class} \label{sec:structures.root.sodclass}
\begin{describe}[SodClass]{cls}
- {class SodClass : SodObject \{ \\ \ind
+ {[nick = cls, link = SodObject] \\
+ class SodClass : SodObject \{ \\ \ind
const char *name; \\
const char *nick; \\
size_t initsz; \\
+ size_t align; \\
void *(*imprint)(void *@
); \\
void *(*init)(void *@
); \\
size_t n_supers; \\
@@ -166,6 +168,8 @@ recommended.
\item[initsz] The size in bytes required to store an instance of the class.
+ \item[align] A sufficient alignment for the class's instance storage.
+
\item[imprint] A pointer to a function: given a pointer @
to at least
@ bytes of appropriately aligned memory, `imprint' this memory it
so that it becomes a minimally functional instance of the class: all of
@@ -191,7 +195,7 @@ recommended.
\item[cpl] A pointer to an array of pointers to class objects listing all
of the class's superclasses, from most- to least-specific, starting with
- the class itself, so $c@->@|cls|.@|cpl|[0] = c$ for all class objects
+ the class itself, so $@|$c$@->cls.cpl[0]| = c$ for all class objects
$c$.
\item[link] If the class is a chain head, then this is a null pointer;
@@ -199,21 +203,20 @@ recommended.
might or might not be a direct superclass).
\item[head] A pointer to the least-specific class in this class's chain; so
- $c@->@|cls|.@|head|@->@|cls|.@|link|$ is always null, and either
- $c@->@|cls|.@|link|$ is null (in which case $c@->@|cls|.@|head| = c$) or
- $c@->@|cls|.@|head| = c@->@|cls|.@|link|@->@|cls|.@|head|$.
+ @|$c$@->cls.head@->cls.link| is always null, and either @|$c$@->cls.link|
+ is null (in which case $@|$c$@->cls.head| = c$) or $@|$c$@->cls.head| =
+ @|$c$@->cls.link@->cls.head|$.
\item[level] The number of less specific superclasses in this class's
- chain. If $c@->@|cls|.@|link|$ is null then $c@->@|cls|.@|level|$ is
- zero; otherwise $c@->@|cls|.@|level| =
- c@->@|cls|.@|link|@->@|cls|.@|level| + 1$.
+ chain. If @|$c$@->cls.link| is null then @|$c$@->cls.level| is zero;
+ otherwise $@|$c$@->cls.level| = @|$c$@->cls.link@->cls.level| + 1$.
\item[n_chains] The number of chains formed by the class's superclasses.
\item[chains] A pointer to an array of @|struct sod_chain| structures (see
below) describing the class's superclass chains, in decreasing order of
specificity of their most specific classes. It is always the case that
- $c@->@|cls|.@|chains|[0].@|classes|[c@->@|cls|.@|level|] = c$.
+ $@|$c$@->cls.chains[0].classes[$c$@->cls.level]| = c$.
\item[off_islots] The offset of the class's @|islots| structure relative to
its containing @|ichain| structure. The class doesn't define any slots
@@ -245,9 +248,9 @@ recommended.
\item[classes] A pointer to an array of class pointers listing the classes
in the chain from least- to most-specific. So
- $@[i]@->@|cls|.@|head| = @[0]$ for all $0 \le i <
- @$, $@[0]@->@|cls|.@|link|$ is always null, and
- $@[i]@->@|cls|.@|link| = @[i - 1]$ if $1 \le i <
+ $@|@[$i$]@->cls.head| = @|@[0]|$ for all $0 \le i <
+ @$, @|@[0]@->cls.link| is always null, and
+ $@|@[$i$]@->cls.link| = @|@[$i - 1$]|$ if $1 \le i <
@$.
\item[off_ichain] The size of the @|ichain| structure for this chain.