%//////////////////////////////////////////////////////////////////////////////
%
% Copyright (c) 2007,2009 Daniel Adler <dadler@uni-goettingen.de>,
% Tassilo Philipp <tphilipp@potion-studios.com>
%
% Permission to use, copy, modify, and distribute this software for any
% purpose with or without fee is hereby granted, provided that the above
% copyright notice and this permission notice appear in all copies.
%
% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
%
%//////////////////////////////////////////////////////////////////////////////
\clearpage
\section{Developers}
\subsection{Noteworthy files in the project root}
\begin{tabular*}{0.75\textwidth}{ll}
{\tt configure} & pre-make configuration tool (unix-shell) \\
{\tt configure.bat} & pre-nmake configuration tool (windows batch) \\
{\tt configure.rc} & pre-mk configuration tool (Plan 9's rc) \\
{\tt CMakeLists.txt} & top-level project information for CMake \\
{\tt Makefile} & GNU/BSD makefile (output of ./configure) \\
{\tt Nmakefile} & MS nmake makefile \\
{\tt mkfile} & Plan 9 mkfile \\
{\tt LICENSE} & license information \\
{\tt README} & quickstart doc \\
{\tt buildsys/} & build system details and extras \\
{\tt doc/} & platform specific readme's and manual \\
{\tt dyncall/} & dyncall library source code \\
{\tt dyncallback/} & dyncallback library source code \\
{\tt dynload/} & dynload library source code \\
{\tt test/} & test suites \\
\end{tabular*}
\subsection{Test suites}
\begin{description}
\item [plain]
Simple, identity, mostly unary function calls for all supported return types
and calling conventions. This is not an extensive test suite, but a good place
to manually test certain cases.
\item [plain\_c++]
Similar to plain, but for C++ thiscalls (in different forms and fashion, with
aggregates, vararg methots, on x86 with GNU and MS calling convention, etc.).
\item [suite]
All combinations of parameter types and counts are tested on void function
calls. A Python script ({\tt mkcase.py}) generates the tests up to
an upper MAXARG limit.
\item [suite\_floats]
Based on suite. Test double/float variants with up to 10 arguments.
\item [call\_suite\_aggrs]
Tests passing and returning aggregates by value (struct/union and array members).
Test cases can be designed in a signature-style format (and random ones generated
via a Lua script).
\item [suite\_x86win32std]
All combinations of parameter types and counts are tested on {\tt \_\_stdcall}
void function calls. A Python script ({\tt mkcase.py}) generates
the tests up to an upper MAXARG limit. This is a x86/Windows only test.
\item [suite\_x86win32fast]
All combinations of parameter types and counts are tested on {\tt \_\_fastcall}
(MS or GNU, depending on the build tool) void function calls.
A Python script ({\tt mkcase.py}) generates the tests up to
an upper MAXARG limit. This is a x86/Windows only test.
\item [ellipsis]
All combinations of parameter types and counts are tested on void ellipsis
(vararg) function calls. A Python script ({\tt mkcase.py}) generates the
tests up to an upper MAXARG limit.
\item [suite2]
Designed mass test suite for void function calls.
Tests individual void functions with a varying count of arguments and type.
\item [suite2\_win32std]
Designed mass test suite for {\tt \_\_stdcall} void function calls.
Tests individual void functions with a varying count of arguments and type.
This is a x86/Windows only test.
\item [suite2\_win32fast]
Designed mass test suite for {\tt \_\_fastcall} (MS or GNU, depending on the build tool) void function calls.
Tests individual void functions with a varying count of arguments and type.
This is a x86/Windows only test.
\item [suite3]
All combinations of parameter types integer, long long, float and double and
counts are tested on void function calls.
A script written in Python ({\tt mkcase.py}) generates the tests up to
an upper MAXARG limit.
This is a modified version of suite.
\item [call\_suite]
General purpose test suite combining aspects from all others suites (usually enough for
testing non-callback calls).
Test cases can be designed in a signature-style format (and random ones generated
via a Lua script).
\item [callf]
Tests the \emph{formatted call/arg} \product{dyncall} C API. Tries to cover all uses of
that API (e.g. calling convention mode switches, aggregates, ...) but is not extensive.
\item [malloc\_wx]
Tests \emph{writable and executable memory allocation} used by the
\product{dyncallback} C API.
\item [thunk]
Tests only the \emph{callback} thunks for the \product{dyncallback} C API.
\item [callback\_plain]
Simple callback function test (useful for easy debugging of new ports).
\item [callback\_suite]
Mass test suite for callback function testing. Uses random function argument
number and type.
A Lua script the tests up to a given number of calls and type combinations.
\item [resolv\_self]
Test for dynload library to resolve symbols from application image itself.
\end{description}