X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/6514430a3a91b340963ab7fb912a94a8d0b090fc..d1cf6f0eb28e9f887b7f02d7debd0b363b1ad431:/doc/clang.tex diff --git a/doc/clang.tex b/doc/clang.tex index 8f3c676..99ad30a 100644 --- a/doc/clang.tex +++ b/doc/clang.tex @@ -7,7 +7,7 @@ %%%----- Licensing notice --------------------------------------------------- %%% -%%% This file is part of the Sensble Object Design, an object system for C. +%%% This file is part of the Sensible Object Design, an object system for C. %%% %%% SOD is free software; you can redistribute it and/or modify %%% it under the terms of the GNU General Public License as published by @@ -355,9 +355,11 @@ In Sod, the leaf types are \begin{tabular}[C]{ll} \hlx*{hv} \thd{C type} & \thd{Specifiers} \\ \hlx{vhv} @|void| & @|void| \\ \hlx{v} - @|char| & @|char| \\ \hlx{v} - @|unsigned char| & @|unsigned-char|, @|uchar| \\ \hlx{} - @|signed char| & @|signed-char|, @|schar| \\ \hlx{v} + @|_Bool| & @|bool| \\ \hlx{v} + @|char| & @|char| \\ \hlx{} + @|wchar_t| & @|wchar-t| \\ \hlx{v} + @|signed char| & @|signed-char|, @|schar| \\ \hlx{} + @|unsigned char| & @|unsigned-char|, @|uchar| \\ \hlx{v} @|short| & @|short|, @|signed-short|, @|short-int|, @|signed-short-int| @|sshort| \\ \hlx{} @|unsigned short| & @|unsigned-short|, @|unsigned-short-int|, @@ -370,17 +372,26 @@ In Sod, the leaf types are @|unsigned long| & @|unsigned-long|, @|unsigned-long-int|, @|ulong| \\ \hlx{v} @|long long| & @|long-long|, @|signed-long-long|, - @|long-long-int|, \\ + @|long-long-int|, \\ \hlx{} & \qquad @|signed-long-long-int|, @|llong|, @|sllong| \\ \hlx{v} @|unsigned long long| & @|unsigned-long-long|, @|unsigned-long-long-int|, @|ullong| \\ \hlx{v} + @|size_t| & @|size-t| \\ \hlx{} + @|ptrdiff_t| & @|ptrdiff-t| \\ \hlx{v} @|float| & @|float| \\ \hlx{} - @|double| & @|double| \\ \hlx{v} - @|va_list| & @|va-list| \\ \hlx{v} - @|size_t| & @|size-t| \\ \hlx{v} - @|ptrdiff_t| & @|ptrdiff-t| \\ \hlx*{vh} + @|double| & @|double| \\ \hlx{} + @|long double| & @|long-double| \\ \hlx{v} + @|float _Imaginary| & @|float-imaginary| \\ \hlx{} + @|double _Imaginary|& @|double-imaginary| \\ \hlx{} + @|long double _Imaginary| + & @|long-double-imaginary| \\ \hlx{v} + @|float _Complex| & @|float-complex| \\ \hlx{} + @|double _Complex| & @|double-complex| \\ \hlx{} + @|long double _Complex| + & @|long-double-complex| \\ \hlx{v} + @|va_list| & @|va-list| \\ \hlx*{vh} \end{tabular} \caption{Builtin symbolic type specifiers for simple C types} \label{tab:codegen.c-types.simple} @@ -597,13 +608,13 @@ function type is the type of the function's return value. argument name. \end{describe} -\begin{describe}{fun}{argument-name @ @> @} - Return the name of the @, as it was supplied to @|make-argument|. -\end{describe} - -\begin{describe}{fun}{argument-type @ @> @} - Return the type of the @, as it was supplied to @|make-argument|. -\end{describe} +\begin{describe*} + {\dhead{fun}{argument-name @ @> @} + \dhead{fun}{argument-type @ @> @}} + Accessor functions for @|argument| objects. They return the name (for + @|argument-name|) or type (for @|argument-type|) from the object, as passed + to @|make-argument|. +\end{describe*} \begin{describe}{gf} {commentify-argument-name @ @> @} @@ -716,6 +727,44 @@ function type is the type of the function's return value. \subsection{Parsing C types} \label{sec:clang.c-types.parsing} +\begin{describe}{fun} + {parse-c-type @ + @> @ @ @} +\end{describe} + +\begin{describe}{fun} + {parse-declarator @ @ \&key :kernel :abstractp + \nlret @ @ @} +\end{describe} + +\subsection{Class types} \label{sec:clang.c-types.class} + +\begin{describe}{cls} + {c-class-type (simple-c-type) \&key :class :tag :qualifiers :name} +\end{describe} + +\begin{describe*} + {\dhead{gf}{c-type-class @ @> @} + \dhead{gf}{setf (c-type-class @) @}} +\end{describe*} + +\begin{describe}{fun}{find-class-type @ @> @} +\end{describe} + +\begin{describe}{fun} + {make-class-type @ \&optional @ @> @} +\end{describe} + +\begin{describe}{fun} + {make-class-type @ \&optional @ @> @} +\end{describe} + +\begin{describe}{fun}{find-sod-class @ @> @} +\end{describe} + +\begin{describe}{fun}{record-sod-class @} +\end{describe} + %%%-------------------------------------------------------------------------- \section{Generating C code} \label{sec:clang.codegen}