%
(:classes :end) \\ \hlx{v/}
%
+ (:static-instances :start) & static-instance, :h
+ & \begin{nprog} \banner{Public static instances} \\ \end{nprog}
+ \\*\hlx{v}
+ :static-instances & static-instance, :h
+ & \begin{nprog}
+ extern $[@"const"]$ struct @<class>{}__ilayout
+ @<inst>{}__instance; \\
+ \#define @<inst> (\&@<inst>{}__instance.@<h>.@<c>)
+ \end{nprog} \\*
+ (:static-instances :end) & static-instance, :h
+ & \\ \hlx{v/}
+ %
(:user :start) \\*
:user \\*
(:user :end) \\ \hlx{v/}
:early \\*
(:early-user :end) \\ \hlx{v/}
%
+ (:static-instances :start) & static-instance, :c
+ & \begin{nprog} \banner{Static instance definitions} \\ \end{nprog}
+ \\*\hlx{v}
+ (:static-instances :decls) & static-instance, :c
+ & \begin{nprog}
+ /* Forward declarations. */ \\+
+ static $[@"const"]$ struct @<class>{}__ilayout
+ @<inst>{}__instance; \\
+ \#define @<inst> (\&@<inst>{}__instance.@<h>.@<c>)
+ \end{nprog} \\*
+ (:static-instances :gap) & static-instance, :c
+ & \\
+ (@<inst> :start) & sod-class, 'static-instance
+ & \begin{nprog}
+ /* Static instance `@<inst>'. */ \\
+ $[@"static"]$ $[@"const"]$ struct @<inst>{}__ilayout
+ @<inst>{}__instance = \{
+ \end{nprog} \\*\hlx{v}
+ (@<inst> :chain @<chain-head> :start) & ichain, 'static-instance
+ & \quad \{ \{ /* @<n> ichain */ \\*
+ (@<inst> :vtable @<chain-head>) & vtable-pointer, 'static-instance
+ & \slotlabel{3}{_vt} \&@<class>{}__vtable_@<h>.@<c>, \\*
+ (@<inst> :slots @<super> :start) & islots, 'static-instance
+ & \quad\quad \{ /* Class @<super> */ \\*
+ (@<inst> :slots @<super>) & effective-slot, 'static-instance
+ & \slotlabel{4}{@<slot>} @<value>, \\*
+ (@<inst> :slots @<super> :end) & islots, 'static-instance
+ & \quad\quad \}, \\*
+ (@<inst> :chain @<chain-head> :end) & ichain, 'static-instance
+ & \quad \} \}, \\*
+ (@<inst> :end) & sod-class, 'static-instance
+ & \begin{nprog} \}; \\ \end{nprog} \\ \hlx{v/}
+ %
(:classes :start) \\*\hlx{v}
%
(@<class> :banner) & sod-class, :c
\>@<in-names> @<out-names> @<stream>}}
\end{describe*}
+\begin{describe}{var}{*static-instance*}
+\end{describe}
+
+\begin{describe}{gf}{declare-static-instance @<static-instance> @<stream>}
+\end{describe}
+
+\begin{describe}{gf}
+ {output-static-instance-initializer @<static-instance> @<effective-slot>
+ @<stream>}
+\end{describe}
+
%%%----- That's all, folks --------------------------------------------------
%%% Local variables: