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

\newpage
\section{Developers}

\subsection{Noteworthy files in the project root}
\begin{verbatim}
configure     -- pre-make configuration tool (unix-shell)
configure.bat -- pre-nmake configuration tool (windows batch)
configure.rc  -- pre-mk configuration tool (Plan 9's rc)
CMakeLists.txt-- top-level project information for CMake
Makefile      -- GNU/BSD makefile (output of ./configure)
Nmakefile     -- MS nmake makefile
mkfile        -- Plan 9 mkfile
LICENSE       -- license information
buildsys/     -- build system details and extras
doc/          -- platform specific readme's and manual
dyncall/      -- dyncall library source code
dyncallback/  -- dyncallback library source code
dynload/      -- dynload library source code
test/         -- test suites
\end{verbatim}


\subsection{Test suites}

\begin{description}

\item [plain] 
Simple, identity, unary function calls for all supported return types and
calling conventions.

\item [plain\_c++] 
Similar to plain, but for C++ thiscalls (GNU and MS calling convention).

\item [suite] 
All combinations of parameter types 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.

\item [suite\_floats]
Based on suite. Test double/float variants with up to 10 arguments.

\item [suite\_x86win32std] 
All combinations of parameter types and counts are tested on {\tt \_\_stdcall}
void function calls. A script written in Python ({\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 script written in Python ({\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 
function calls. A script written in Python ({\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).
A script written in Lua generates the tests.

\item [callf]
Tests the \emph{formatted call} \product{dyncall} C API.

\item [malloc\_wx]
Tests \emph{writable and executable memory allocation} used by the
\product{dyncallback} C API.

\item [thunk]
Tests \emph{callbacks} 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 script written in Lua generates 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}

