X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/a75cd932464ce21ab46e9eaec83e4b1359649bc6..00d59354c311fb28730b7c9b117b0d91aac092cc:/doc/clang.tex diff --git a/doc/clang.tex b/doc/clang.tex index 7c32723..aebc94d 100644 --- a/doc/clang.tex +++ b/doc/clang.tex @@ -321,11 +321,11 @@ is shown in \xref{tab:clang.ctypes.qual}. \begin{table} \begin{tabular}[C]{*2{>{\codeface}l}l} \hlx*{hv} - \thd{\textbf{C name}} & \thd{\textbf{Lisp name}} \\ \hlx{vhv} - _Atomic & :atomic \\ - const & :const \\ - restrict & :restrict \\ - volatile & :volatile \\ \hlx*{vh} + \thd{C name} & \thd{Lisp name} \\ \hlx{vhv} + _Atomic & :atomic \\ + const & :const \\ + restrict & :restrict \\ + volatile & :volatile \\ \hlx*{vh} \end{tabular} \caption{C and Lisp qualifier names} \label{tab:clang.ctypes.qual} \end{table} @@ -508,16 +508,16 @@ In Sod, the leaf types are Two simple type objects are equal if and only if they have @|string=| names and matching qualifiers. - \def\x#1{\desclabel{const}{#1}} - \x{c-type-bool} \x{c-type-char} \x{c-type-wchar-t} \x{c-type-signed-char} - \x{c-type-unsigned-char} \x{c-type-short} \x{c-type-unsigned-short} - \x{c-type-int} \x{c-type-unsigned} \x{c-type-long} \x{c-type-unsigned-long} - \x{c-type-long-long} \x{c-type-unsigned-long-long} \x{c-type-size-t} - \x{c-type-ptrdiff-t} \x{c-type-float} \x{c-type-double} - \x{c-type-long-double} \x{c-type-float-imaginary} - \x{c-type-double-imaginary} \x{c-type-long-double-imaginary} - \x{c-type-float-complex} \x{c-type-double-complex} - \x{c-type-long-double-complex} \x{c-type-va-list} \x{c-type-void} + \def\x#1{\desclabel{const}{c-type-#1}} + \x{bool} \x{char} \x{wchar-t} \x{signed-char} \x{unsigned-char} \x{short} + \x{unsigned-short} \x{int} \x{unsigned} \x{long} \x{unsigned-long} + \x{long-long} \x{unsigned-long-long} \x{size-t} \x{ptrdiff-t} \x{float} + \x{double} \x{long-double} \x{float-imaginary} \x{double-imaginary} + \x{long-double-imaginary} \x{float-complex} \x{double-complex} + \x{long-double-complex} \x{va-list} \x{void} + \crossproduct\x{{{int}{uint}}{{}{-least}{-fast}}{{8}{16}{32}{64}}{{-t}}} + \crossproduct\x{{{int}{uint}}{{ptr}{max}}{{-t}}} + A number of symbolic type specifiers for builtin types are predefined as shown in \xref{tab:codegen.c-types.simple}. These are all defined as if by @|define-simple-c-type|, so can be used to construct qualified types. @@ -552,6 +552,18 @@ In Sod, the leaf types are @|ullong| \\ \hlx{v} @|size_t| & @|size-t| \\ \hlx{} @|ptrdiff_t| & @|ptrdiff-t| \\ \hlx{v} + @|int$n$_t| & @|int$n$-t| + (for $n \in \{ @|8|, @|16|, @|32|, @|64| \}$) + \\ \hlx{} + @|uint$n$_t| & @|uint$n$-t| \\ \hlx{} + @|int_least$n$_t| & @|int_least$n$-t| \\ \hlx{} + @|uint_least$n$_t| & @|uint_least$n$-t| \\ \hlx{} + @|int_fast$n$_t| & @|int_fast$n$-t| \\ \hlx{} + @|uint_fast$n$_t| & @|uint_fast$n$-t| \\ \hlx{v} + @|intptr_t| & @|intptr-t| \\ \hlx{} + @|uintptr_t| & @|uintptr-t| \\ \hlx{} + @|intmax_t| & @|intmax-t| \\ \hlx{} + @|uintmax_t| & @|uintmax-t| \\ \hlx{v} @|float| & @|float| \\ \hlx{} @|double| & @|double| \\ \hlx{} @|long double| & @|long-double| \\ \hlx{v} @@ -1208,11 +1220,11 @@ Temporary names are represented by objects which implement a simple protocol. \begin{table} \begin{tabular}[C]{*2{>{\codeface}l}} \hlx*{hv} - \thd{\textbf{Class}} & \thd{\textbf{Name format}} \\ \hlx{vhv} - temporary-name & @ \\ - temporary-argument & sod__a@ \\ - temporary-function & sod__f@ \\ - temporary-variable & sod__v@ \\ \hlx*{vh} + \thd{Class} & \thd{Name format} \\ \hlx{vhv} + temporary-name & @ \\ + temporary-argument & sod__a@ \\ + temporary-function & sod__f@ \\ + temporary-variable & sod__v@ \\ \hlx*{vh} \end{tabular} \caption{Temporary name formats} \label{tab:codegen.codegen.temps-format} @@ -1237,10 +1249,10 @@ Temporary names are represented by objects which implement a simple protocol. \def\x#1{\desclabel{var}{#1}} \x{*sod-ap*} \x{*sod-master-ap*} \x{*null-pointer*} \begin{tabular}[C]{*2{>{\codeface}l}} \hlx*{hv} - \thd{\textbf{Variable}} & \thd{\textbf{Name format}} \\ \hlx{vhv} - {}*sod-ap* & sod__ap \\ - {}*sod-master-ap* & sod__master_ap \\ - {}*null-pointer* & NULL \\ \hlx*{vh} + \thd{Variable} & \thd{Name format} \\ \hlx{vhv} + {}*sod-ap* & sod__ap \\ + {}*sod-master-ap* & sod__master_ap \\ + {}*null-pointer* & NULL \\ \hlx*{vh} \end{tabular} \caption{Well-known temporary names} \label{tab:codegen.codegen.well-known-temps} @@ -1276,8 +1288,8 @@ Temporary names are represented by objects which implement a simple protocol. \begin{table} \begin{tabular}[C]{ll>{\codeface}l} \hlx*{hv} \thd{Class name} & - \thd{Arguments} & - \thd{Output format} \\ \hlx{vhv} + \thd{Arguments} & + \thd{Output format}\\ \hlx{vhv} @|var| & @ @ @|\&optional| @ & @ @ @[= @@]; \\ \hlx{v} @@ -1423,8 +1435,11 @@ Temporary names are represented by objects which implement a simple protocol. \begin{describe}{cls}{c-fragment () \&key :location :text} \end{describe} -\begin{describe}{gf}{c-fragment-text @ @> @} -\end{describe} +\begin{describe*} + {\dhead{gf}{c-fragment-text @ @> @} + \dhead{meth}{c-fragment} + {file-location (@ c-fragment) @> @}} +\end{describe*} \begin{describe}{fun} {scan-c-fragment @ @