%//////////////////////////////////////////////////////////////////////////////
%
% 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}

