X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/9e91c8e7b5fcdeb6389ac7ccbcd9c77348c4493a..4307347660f48628e307f299eb4fac58ba35fd1a:/doc/structures.tex diff --git a/doc/structures.tex b/doc/structures.tex index 9c0451e..0b6be0a 100644 --- a/doc/structures.tex +++ b/doc/structures.tex @@ -32,8 +32,8 @@ works very differently from the standard @|SodObject| described here. The concrete types described in \xref{sec:structures.common} and \ref{sec:structures.root} are declared by the header file @||. -The definitions described in sections \ref{sec:structures.layout} are defined -in the header file generated by the containing module. +The definitions described in \xref{sec:structures.layout} are defined in the +header file generated by the containing module. %%%-------------------------------------------------------------------------- \section{Common instance structure} \label{sec:structures.common} @@ -526,10 +526,16 @@ defined as \begin{prog} @_0 $m$(@_1 @_1, $\ldots$, @_n @_n, \dots); \end{prog} +or a standard message which takes keyword arguments, defined as +\begin{prog} + @_0 $m$(\=@_1 @_1, $\ldots$, @_n @_n? \+ \\ + @_{n+1} @_{n+1} @[= @_{n+1}@], $\ldots$, + @_m @_m @[= @_m@]); +\end{prog} two entry points are defined: the usual `main' entry point which accepts a variable number of arguments, and a `valist' entry point which accepts an argument of type @|va_list| in place of the variable portion of the argument -list. +list or keywords. \begin{prog} @_0 $m$($C$ *me, @_1 @_1, $\ldots$, @_n @_n, \dots); \\ @@ -550,10 +556,10 @@ For each message $m$ directly defined by $C$ there is a macro definition which makes sending the message $m$ to an instance of (any subclass of) $C$ somewhat less ugly. -If $m$ takes a variable number of arguments, the macro is more complicated -and is only available in compilers advertising C99 support, but the effect is -the same. For each variable-argument message, there is also an additional -macro for calling the `valist' entry point. +If $m$ takes a variable number of arguments, or keyword arguments, the macro +is more complicated and is only available in compilers advertising C99 +support, but the effect is the same. For each variable-argument message, +there is also an additional macro for calling the `valist' entry point. \begin{prog} \#define $C$_$m$__v(@, $\ldots$, @) @@->_vt@->$c$.$m$__v(@, $\ldots$, @)